假设我有一台有32个核心的机器,并且希望尽可能高效地执行一个嵌套的5外折叠和3内折叠的CV。
在外折上,我对两个或多个学习者进行基准测试,在内部折叠上,我为其中一个或n-k的学习者调谐超参数。
如何设置batch_size和未来::plan()?
term_eval如何依赖批处理大小?
这样做明智吗?我的预感是更好地并行运行内环。但我对term_evals和batch_size并不确定。
lrn1 <- auto_tuner(
method = "random_search",
learner = lrn1,
resampling = rsmp("cv", folds = 3),
measure = msr("classif.auc"),
term_evals = 100,
batch_size = 10,
store_models = TRUE
)
design = benchmark_grid(task = task, learner = c(lrn1, lrn2), resampling = rsmp("cv", folds = 5))
# Runs the inner loop in parallel and the outer loop sequentially
future::plan(list("sequential", "multisession"))
bmr = benchmark(design, store_models = TRUE)发布于 2022-11-28 13:18:44
如果使用rsmp("cv", folds = 3)和set batch_size = 10,一次使用30个核心(3倍x 10次配置)。
term_eval是如何依赖于批处理大小的?
term_eval不依赖于batch_size。batch_size指定在检查终止符之前计算多少个配置。在您的示例中,在10个配置之后检查终止符。但是你还有90种配置,所以调优还在继续。终止符在10个配置之后再次检查,以此类推。当计算100个配置时,终止符将停止调优。batch_size还确定并行计算多少个配置。
我的预感是更好地并行运行内部循环。
是的,并行运行内循环,即保持future::plan(list("sequential", "multisession"))。
https://stackoverflow.com/questions/74600792
复制相似问题