serial <- setup_SerialExecution(n_workers_algorithm = 1L, seed = 2026L)
future <- setup_FutureExecution(
n_workers = 2L, future_plan = "multisession", seed = 2026L
)
mirai <- setup_MiraiExecution(n_workers = 2L, seed = 2026L)13 Execution and reproducibility
Execution configurations control computation independently of the learner and resampling design. The examples in this guide use serial execution and explicit seeds for reproducible, bounded computations.
13.1 Select a backend
The constructors select serial, future, or mirai dispatch. Serial dispatch can still use algorithm threads when n_workers_algorithm permits them.
13.2 Allocate workers
Parallel work can occur across outer resamples, tuning fits, or within an algorithm. Automatic allocation assigns the worker budget to an applicable level. Explicit n_workers_outer, n_workers_tuning, and n_workers_algorithm settings specify the allocation; the configuration validates combinations against its worker ceiling.
execution <- setup_FutureExecution(
n_workers = 2L,
n_workers_outer = 2L,
n_workers_tuning = 1L,
n_workers_algorithm = 1L,
future_plan = "multisession",
seed = 2026L
)The resources line reports the execution backend, device, worker ceiling, and resolved allocation. shared_memory controls local sharing of training data through mori; warm_workers, on the mirai backend, controls loading rtemis in each worker as the pool starts. on_error selects the configured response to fit failures. Inspect successful and failed resamples when interpreting an incomplete run.
13.3 Set the compute device
The execution configuration accepts device = "cpu", "cuda", "mps", or "opencl". setup_CUDA(ids = 0L) selects a zero-based CUDA device index. Support depends on the algorithm and its installed backend. An algorithm without support for a requested device runs on the CPU, as reported by the resources line. An unset device selects CUDA when available and otherwise CPU; Apple silicon GPU execution requires an explicit "mps" request.
gpu_execution <- setup_SerialExecution(device = "mps", seed = 2026L)This constructs a request; it does not start a GPU computation.
13.4 Record randomness and runtime
Resampler seeds determine row splits. The execution seed determines computation substreams. Set both when reproducing a resampled analysis, and retain package versions, data, configuration, and the run record.
mod <- train(
iris,
hyperparameters = setup_CART(),
outer_resampling_config = setup_KFold(n_resamples = 3L, seed = 2026L),
execution_config = serial
)<Resampled Classification Model>
CART (CART decision tree (rpart))
⟳ Tested using 3 independent folds.
<Resampled Classification Training Metrics>
Aggregate Confusion Matrix across resamples.
Predicted
Reference setosa versicolor virginica
setosa 100 0 0
versicolor 0 98 2
virginica 0 1 99
Showing mean (sd) across resamples.
Balanced Accuracy: 0.990 (0.010)
F1: 0.990 (0.010)
Accuracy: 0.990 (0.010)
<Resampled Classification Test Metrics>
Aggregate Confusion Matrix across resamples.
Predicted
Reference setosa versicolor virginica
setosa 50 0 0
versicolor 0 48 2
virginica 0 5 45
Showing mean (sd) across resamples.
Balanced Accuracy: 0.953 (0.030)
F1: 0.953 (0.030)
Accuracy: 0.953 (0.030)
record(mod)$`$schema`
[1] "https://schema.rtemis.org/supervised/r/v1/record.json"
$outcome
NULL
$features
NULL
$weights
NULL
$positive_class
NULL
$question
NULL
$outdir
NULL
$verbosity
[1] 1
$dat_training_path
NULL
$dat_validation_path
NULL
$dat_test_path
NULL
$character2factor
[1] TRUE
$preprocessor_config
NULL
$decomposition_config
NULL
$hyperparameters
$hyperparameters$algorithm
[1] "CART"
$hyperparameters$cp
[1] 0.01
$hyperparameters$maxdepth
[1] 20
$hyperparameters$minsplit
[1] 2
$hyperparameters$minbucket
[1] 1
$hyperparameters$prune_cp
NULL
$hyperparameters$method
[1] "auto"
$hyperparameters$model
[1] TRUE
$hyperparameters$maxcompete
[1] 4
$hyperparameters$maxsurrogate
[1] 5
$hyperparameters$usesurrogate
[1] 2
$hyperparameters$surrogatestyle
[1] 0
$hyperparameters$xval
[1] 0
$hyperparameters$cost
NULL
$hyperparameters$ifw
[1] FALSE
$hyperparameters$origin
$hyperparameters$origin$cp
[1] "default"
$hyperparameters$origin$maxdepth
[1] "default"
$hyperparameters$origin$minsplit
[1] "default"
$hyperparameters$origin$minbucket
[1] "default"
$hyperparameters$origin$prune_cp
[1] "default"
$hyperparameters$origin$method
[1] "default"
$hyperparameters$origin$model
[1] "default"
$hyperparameters$origin$maxcompete
[1] "default"
$hyperparameters$origin$maxsurrogate
[1] "default"
$hyperparameters$origin$usesurrogate
[1] "default"
$hyperparameters$origin$surrogatestyle
[1] "default"
$hyperparameters$origin$xval
[1] "default"
$hyperparameters$origin$cost
[1] "default"
$hyperparameters$origin$ifw
[1] "default"
$tuner_config
NULL
$outer_resampling_config
$outer_resampling_config$type
[1] "KFold"
$outer_resampling_config$n_resamples
[1] 3
$outer_resampling_config$stratify_var
NULL
$outer_resampling_config$strat_n_bins
[1] 4
$outer_resampling_config$id_strat
NULL
$outer_resampling_config$seed
[1] 2026
$outer_resampling_config$origin
$outer_resampling_config$origin$n_resamples
[1] "user"
$outer_resampling_config$origin$stratify_var
[1] "default"
$outer_resampling_config$origin$strat_n_bins
[1] "default"
$outer_resampling_config$origin$id_strat
[1] "default"
$outer_resampling_config$origin$seed
[1] "user"
$execution_config
$execution_config$backend
[1] "none"
$execution_config$n_workers_algorithm
[1] 1
$execution_config$device
NULL
$execution_config$on_error
[1] "continue"
$execution_config$seed
[1] 2026
$execution_config$shared_memory
[1] "auto"
$execution_config$origin
$execution_config$origin$n_workers_algorithm
[1] "user"
$execution_config$origin$on_error
[1] "default"
$execution_config$origin$seed
[1] "user"
$execution_config$origin$shared_memory
[1] "default"
$origin
$origin$outcome
[1] "default"
$origin$features
[1] "default"
$origin$weights
[1] "default"
$origin$positive_class
[1] "default"
$origin$question
[1] "default"
$origin$outdir
[1] "default"
$origin$verbosity
[1] "default"
$origin$dat_training_path
[1] "default"
$origin$dat_validation_path
[1] "default"
$origin$dat_test_path
[1] "default"
$origin$character2factor
[1] "default"
$folds
$folds[[1]]
$folds[[1]]$index
[1] 1
$folds[[1]]$hyperparameters
$folds[[1]]$hyperparameters$algorithm
[1] "CART"
$folds[[1]]$hyperparameters$cp
[1] 0.01
$folds[[1]]$hyperparameters$maxdepth
[1] 20
$folds[[1]]$hyperparameters$minsplit
[1] 2
$folds[[1]]$hyperparameters$minbucket
[1] 1
$folds[[1]]$hyperparameters$prune_cp
NULL
$folds[[1]]$hyperparameters$method
[1] "auto"
$folds[[1]]$hyperparameters$model
[1] TRUE
$folds[[1]]$hyperparameters$maxcompete
[1] 4
$folds[[1]]$hyperparameters$maxsurrogate
[1] 5
$folds[[1]]$hyperparameters$usesurrogate
[1] 2
$folds[[1]]$hyperparameters$surrogatestyle
[1] 0
$folds[[1]]$hyperparameters$xval
[1] 0
$folds[[1]]$hyperparameters$cost
NULL
$folds[[1]]$hyperparameters$ifw
[1] FALSE
$folds[[1]]$hyperparameters$origin
$folds[[1]]$hyperparameters$origin$cp
[1] "default"
$folds[[1]]$hyperparameters$origin$maxdepth
[1] "default"
$folds[[1]]$hyperparameters$origin$minsplit
[1] "default"
$folds[[1]]$hyperparameters$origin$minbucket
[1] "default"
$folds[[1]]$hyperparameters$origin$prune_cp
[1] "default"
$folds[[1]]$hyperparameters$origin$method
[1] "default"
$folds[[1]]$hyperparameters$origin$model
[1] "default"
$folds[[1]]$hyperparameters$origin$maxcompete
[1] "default"
$folds[[1]]$hyperparameters$origin$maxsurrogate
[1] "default"
$folds[[1]]$hyperparameters$origin$usesurrogate
[1] "default"
$folds[[1]]$hyperparameters$origin$surrogatestyle
[1] "default"
$folds[[1]]$hyperparameters$origin$xval
[1] "default"
$folds[[1]]$hyperparameters$origin$cost
[1] "default"
$folds[[1]]$hyperparameters$origin$ifw
[1] "default"
$folds[[1]]$metrics
$folds[[1]]$metrics$training
$folds[[1]]$metrics$training$sample
[1] "Training"
$folds[[1]]$metrics$training$confusion_long
reference predicted n
1 setosa setosa 33
2 versicolor setosa 0
3 virginica setosa 0
4 setosa versicolor 0
5 versicolor versicolor 31
6 virginica versicolor 0
7 setosa virginica 0
8 versicolor virginica 2
9 virginica virginica 33
$folds[[1]]$metrics$training$metrics
$folds[[1]]$metrics$training$metrics$overall
balanced_accuracy f1 accuracy
1 0.979798 0.9797794 0.979798
$folds[[1]]$metrics$training$metrics$class
level sensitivity specificity balanced_accuracy ppv npv
1 setosa 1.0000000 1.000000 1.0000000 1.0000000 1.0000000
2 versicolor 0.9393939 1.000000 0.9696970 1.0000000 0.9705882
3 virginica 1.0000000 0.969697 0.9848485 0.9428571 1.0000000
f1
1 1.0000000
2 0.9687500
3 0.9705882
$folds[[1]]$metrics$training$metrics$positive_class
NULL
$folds[[1]]$metrics$validation
NULL
$folds[[1]]$metrics$test
$folds[[1]]$metrics$test$sample
[1] "Test"
$folds[[1]]$metrics$test$confusion_long
reference predicted n
1 setosa setosa 17
2 versicolor setosa 0
3 virginica setosa 0
4 setosa versicolor 0
5 versicolor versicolor 16
6 virginica versicolor 0
7 setosa virginica 0
8 versicolor virginica 1
9 virginica virginica 17
$folds[[1]]$metrics$test$metrics
$folds[[1]]$metrics$test$metrics$overall
balanced_accuracy f1 accuracy
1 0.9803922 0.9803752 0.9803922
$folds[[1]]$metrics$test$metrics$class
level sensitivity specificity balanced_accuracy ppv npv
1 setosa 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
2 versicolor 0.9411765 1.0000000 0.9705882 1.0000000 0.9714286
3 virginica 1.0000000 0.9705882 0.9852941 0.9444444 1.0000000
f1
1 1.0000000
2 0.9696970
3 0.9714286
$folds[[1]]$metrics$test$metrics$positive_class
NULL
$folds[[2]]
$folds[[2]]$index
[1] 2
$folds[[2]]$hyperparameters
$folds[[2]]$hyperparameters$algorithm
[1] "CART"
$folds[[2]]$hyperparameters$cp
[1] 0.01
$folds[[2]]$hyperparameters$maxdepth
[1] 20
$folds[[2]]$hyperparameters$minsplit
[1] 2
$folds[[2]]$hyperparameters$minbucket
[1] 1
$folds[[2]]$hyperparameters$prune_cp
NULL
$folds[[2]]$hyperparameters$method
[1] "auto"
$folds[[2]]$hyperparameters$model
[1] TRUE
$folds[[2]]$hyperparameters$maxcompete
[1] 4
$folds[[2]]$hyperparameters$maxsurrogate
[1] 5
$folds[[2]]$hyperparameters$usesurrogate
[1] 2
$folds[[2]]$hyperparameters$surrogatestyle
[1] 0
$folds[[2]]$hyperparameters$xval
[1] 0
$folds[[2]]$hyperparameters$cost
NULL
$folds[[2]]$hyperparameters$ifw
[1] FALSE
$folds[[2]]$hyperparameters$origin
$folds[[2]]$hyperparameters$origin$cp
[1] "default"
$folds[[2]]$hyperparameters$origin$maxdepth
[1] "default"
$folds[[2]]$hyperparameters$origin$minsplit
[1] "default"
$folds[[2]]$hyperparameters$origin$minbucket
[1] "default"
$folds[[2]]$hyperparameters$origin$prune_cp
[1] "default"
$folds[[2]]$hyperparameters$origin$method
[1] "default"
$folds[[2]]$hyperparameters$origin$model
[1] "default"
$folds[[2]]$hyperparameters$origin$maxcompete
[1] "default"
$folds[[2]]$hyperparameters$origin$maxsurrogate
[1] "default"
$folds[[2]]$hyperparameters$origin$usesurrogate
[1] "default"
$folds[[2]]$hyperparameters$origin$surrogatestyle
[1] "default"
$folds[[2]]$hyperparameters$origin$xval
[1] "default"
$folds[[2]]$hyperparameters$origin$cost
[1] "default"
$folds[[2]]$hyperparameters$origin$ifw
[1] "default"
$folds[[2]]$metrics
$folds[[2]]$metrics$training
$folds[[2]]$metrics$training$sample
[1] "Training"
$folds[[2]]$metrics$training$confusion_long
reference predicted n
1 setosa setosa 34
2 versicolor setosa 0
3 virginica setosa 0
4 setosa versicolor 0
5 versicolor versicolor 34
6 virginica versicolor 0
7 setosa virginica 0
8 versicolor virginica 0
9 virginica virginica 34
$folds[[2]]$metrics$training$metrics
$folds[[2]]$metrics$training$metrics$overall
balanced_accuracy f1 accuracy
1 1 1 1
$folds[[2]]$metrics$training$metrics$class
level sensitivity specificity balanced_accuracy ppv npv f1
1 setosa 1 1 1 1 1 1
2 versicolor 1 1 1 1 1 1
3 virginica 1 1 1 1 1 1
$folds[[2]]$metrics$training$metrics$positive_class
NULL
$folds[[2]]$metrics$validation
NULL
$folds[[2]]$metrics$test
$folds[[2]]$metrics$test$sample
[1] "Test"
$folds[[2]]$metrics$test$confusion_long
reference predicted n
1 setosa setosa 16
2 versicolor setosa 0
3 virginica setosa 0
4 setosa versicolor 0
5 versicolor versicolor 15
6 virginica versicolor 1
7 setosa virginica 0
8 versicolor virginica 1
9 virginica virginica 15
$folds[[2]]$metrics$test$metrics
$folds[[2]]$metrics$test$metrics$overall
balanced_accuracy f1 accuracy
1 0.9583333 0.9583333 0.9583333
$folds[[2]]$metrics$test$metrics$class
level sensitivity specificity balanced_accuracy ppv npv f1
1 setosa 1.0000 1.00000 1.000000 1.0000 1.00000 1.0000
2 versicolor 0.9375 0.96875 0.953125 0.9375 0.96875 0.9375
3 virginica 0.9375 0.96875 0.953125 0.9375 0.96875 0.9375
$folds[[2]]$metrics$test$metrics$positive_class
NULL
$folds[[3]]
$folds[[3]]$index
[1] 3
$folds[[3]]$hyperparameters
$folds[[3]]$hyperparameters$algorithm
[1] "CART"
$folds[[3]]$hyperparameters$cp
[1] 0.01
$folds[[3]]$hyperparameters$maxdepth
[1] 20
$folds[[3]]$hyperparameters$minsplit
[1] 2
$folds[[3]]$hyperparameters$minbucket
[1] 1
$folds[[3]]$hyperparameters$prune_cp
NULL
$folds[[3]]$hyperparameters$method
[1] "auto"
$folds[[3]]$hyperparameters$model
[1] TRUE
$folds[[3]]$hyperparameters$maxcompete
[1] 4
$folds[[3]]$hyperparameters$maxsurrogate
[1] 5
$folds[[3]]$hyperparameters$usesurrogate
[1] 2
$folds[[3]]$hyperparameters$surrogatestyle
[1] 0
$folds[[3]]$hyperparameters$xval
[1] 0
$folds[[3]]$hyperparameters$cost
NULL
$folds[[3]]$hyperparameters$ifw
[1] FALSE
$folds[[3]]$hyperparameters$origin
$folds[[3]]$hyperparameters$origin$cp
[1] "default"
$folds[[3]]$hyperparameters$origin$maxdepth
[1] "default"
$folds[[3]]$hyperparameters$origin$minsplit
[1] "default"
$folds[[3]]$hyperparameters$origin$minbucket
[1] "default"
$folds[[3]]$hyperparameters$origin$prune_cp
[1] "default"
$folds[[3]]$hyperparameters$origin$method
[1] "default"
$folds[[3]]$hyperparameters$origin$model
[1] "default"
$folds[[3]]$hyperparameters$origin$maxcompete
[1] "default"
$folds[[3]]$hyperparameters$origin$maxsurrogate
[1] "default"
$folds[[3]]$hyperparameters$origin$usesurrogate
[1] "default"
$folds[[3]]$hyperparameters$origin$surrogatestyle
[1] "default"
$folds[[3]]$hyperparameters$origin$xval
[1] "default"
$folds[[3]]$hyperparameters$origin$cost
[1] "default"
$folds[[3]]$hyperparameters$origin$ifw
[1] "default"
$folds[[3]]$metrics
$folds[[3]]$metrics$training
$folds[[3]]$metrics$training$sample
[1] "Training"
$folds[[3]]$metrics$training$confusion_long
reference predicted n
1 setosa setosa 33
2 versicolor setosa 0
3 virginica setosa 0
4 setosa versicolor 0
5 versicolor versicolor 33
6 virginica versicolor 1
7 setosa virginica 0
8 versicolor virginica 0
9 virginica virginica 32
$folds[[3]]$metrics$training$metrics
$folds[[3]]$metrics$training$metrics$overall
balanced_accuracy f1 accuracy
1 0.989899 0.9898967 0.989899
$folds[[3]]$metrics$training$metrics$class
level sensitivity specificity balanced_accuracy ppv npv
1 setosa 1.000000 1.0000000 1.0000000 1.0000000 1.0000000
2 versicolor 1.000000 0.9848485 0.9924242 0.9705882 1.0000000
3 virginica 0.969697 1.0000000 0.9848485 1.0000000 0.9850746
f1
1 1.0000000
2 0.9850746
3 0.9846154
$folds[[3]]$metrics$training$metrics$positive_class
NULL
$folds[[3]]$metrics$validation
NULL
$folds[[3]]$metrics$test
$folds[[3]]$metrics$test$sample
[1] "Test"
$folds[[3]]$metrics$test$confusion_long
reference predicted n
1 setosa setosa 17
2 versicolor setosa 0
3 virginica setosa 0
4 setosa versicolor 0
5 versicolor versicolor 17
6 virginica versicolor 4
7 setosa virginica 0
8 versicolor virginica 0
9 virginica virginica 13
$folds[[3]]$metrics$test$metrics
$folds[[3]]$metrics$test$metrics$overall
balanced_accuracy f1 accuracy
1 0.9215686 0.9204678 0.9215686
$folds[[3]]$metrics$test$metrics$class
level sensitivity specificity balanced_accuracy ppv npv
1 setosa 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
2 versicolor 1.0000000 0.8823529 0.9411765 0.8095238 1.0000000
3 virginica 0.7647059 1.0000000 0.8823529 1.0000000 0.8947368
f1
1 1.0000000
2 0.8947368
3 0.8666667
$folds[[3]]$metrics$test$metrics$positive_class
NULL
$metrics
$metrics$training
$metrics$training$balanced_accuracy
[1] 0.989899
$metrics$training$f1
[1] 0.989892
$metrics$training$accuracy
[1] 0.989899
$metrics$validation
NULL
$metrics$test
$metrics$test$balanced_accuracy
[1] 0.9534314
$metrics$test$f1
[1] 0.9530588
$metrics$test$accuracy
[1] 0.9534314
$metrics_sd
$metrics_sd$training
$metrics_sd$training$balanced_accuracy
[1] 0.01010101
$metrics_sd$training$f1
[1] 0.01011029
$metrics_sd$training$accuracy
[1] 0.01010101
$metrics_sd$validation
NULL
$metrics_sd$test
$metrics_sd$test$balanced_accuracy
[1] 0.02971656
$metrics_sd$test$f1
[1] 0.03029997
$metrics_sd$test$accuracy
[1] 0.02971656
$provenance
$provenance$implementation
$provenance$implementation$name
[1] "rtemis"
$provenance$implementation$version
[1] "1.4.2"
$provenance$implementation$language
[1] "r"
$provenance$implementation$language_version
[1] "R version 4.6.1 (2026-06-24)"
$provenance$platform
[1] "aarch64-apple-darwin23"
$provenance$started
[1] "2026-10-12T11:57:16.515Z"
$provenance$finished
[1] "2026-10-12T11:57:17.430Z"
$provenance$elapsed_seconds
[1] 0.9145548
$provenance$outcome
[1] "completed"
$provenance$data_training
$provenance$data_training$method
[1] "object"
$provenance$data_training$algorithm
[1] "sha256"
$provenance$data_training$encoding
[1] "r-serialize-v3"
$provenance$data_training$hash
[1] "e3449b68076a4e29c103a0dae0cce63885ab920883181b2c10eddcbb1c6ffc41"
$provenance$data_training$n_rows
[1] 150
$provenance$data_training$n_cols
[1] 5
$provenance$data_training$column_names
[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"
$provenance$data_training$source
NULL
$provenance$data_training$language
[1] "R"
$provenance$data_training$data_structure
[1] "data.frame"
$provenance$data_validation
NULL
$provenance$data_test
NULL
$session
NULL
session_timeline(mod@session) label start end kind status failed
<char> <num> <num> <char> <char> <lgcl>
1: train CART Classification 9.958982 914.3760 train ok FALSE
2: outer_fold 1/3 349.617958 767.5259 outer_fold ok FALSE
3: train_alg CART 584.867954 697.1569 train_alg ok FALSE
4: predict 697.176933 725.7628 predict ok FALSE
5: varimp CART 732.331991 750.1340 varimp ok FALSE
6: metrics 750.150919 767.4448 metrics ok FALSE
7: outer_fold 2/3 767.659903 834.7659 outer_fold ok FALSE
8: train_alg CART #1 808.286905 820.0200 train_alg ok FALSE
9: predict #1 820.035934 820.9999 predict ok FALSE
10: varimp CART #1 827.020884 827.2679 varimp ok FALSE
11: metrics #1 827.280045 834.7249 metrics ok FALSE
12: outer_fold 3/3 834.821939 903.4150 outer_fold ok FALSE
13: train_alg CART #2 882.707834 889.9469 train_alg ok FALSE
14: predict #2 889.960051 890.8210 predict ok FALSE
15: varimp CART #2 896.410942 896.7509 varimp ok FALSE
16: metrics #2 896.764994 903.3871 metrics ok FALSE
tip
<char>
1: train CART Classification—904 ms [ok]
2: outer_fold 1/3—418 ms [ok]
3: train_alg CART—112 ms [ok]
4: predict—29 ms [ok]
5: varimp CART—18 ms [ok]
6: metrics—17 ms [ok]
7: outer_fold 2/3—67 ms [ok]
8: train_alg CART—12 ms [ok]
9: predict—1 ms [ok]
10: varimp CART—<0.5 ms [ok]
11: metrics—7 ms [ok]
12: outer_fold 3/3—69 ms [ok]
13: train_alg CART—7 ms [ok]
14: predict—1 ms [ok]
15: varimp CART—<0.5 ms [ok]
16: metrics—7 ms [ok]
plot_session(mod)session_timeline() lists recorded steps and timings; plot_session() displays them as an execution timeline.
predict(), apply_decomp(), and reconstruct() accept their own execution_config. Their resource allocation follows the prediction host or the supplied configuration.