如何在 mlr3 中使用并行化加速重采样过程?

How to speed up resampling process with parallelizaiton in mlr3?

我尝试 运行 在 mlr3 中使用并行化的重采样过程。但我发现它总是比顺序计划慢。这是我的代码和结果:

# load the packages
library(mlr3)
library(future)
library(future.apply)
library(tictoc)

# sequential plan
set.seed(100)
tic()
task_train_cv <- resample(
  task = task_train,           # the training data is about 60000 rows and 29 cols
  learner = lrn("classif.ranger", predict_type = "prob"),
  resampling = rsmp("cv", folds = 5),
  store_models = TRUE)
toc()                          # 207.14 sec elapsed

# parallel plan
plan(multisession)
set.seed(100)
tic()
task_train_cv_par <- resample(
  task = task_train,
  learner = lrn("classif.ranger", predict_type = "prob"),
  resampling = rsmp("cv", folds = 5),
  store_models = TRUE)
toc()                          # 268.99 sec elapsed
plan(sequential)

我已经测试了很多次,计划中有不同数量的工人(),运行在不同的笔记本电脑上,并行计划总是比较慢.它也发生在 超参数调整和嵌套重采样过程 上。但是当我在 Windows.

中查看任务管理器时,我可以看到会话正在后台运行

我在 mlr3 中的并行化设置有问题吗?谢谢!

在 mlr3learners 的当前 CRAN 版本中,随机森林实现默认使用线程(默认值将在下一版本中更改)。因此,您正在比较两个并行执行,而第二个通过多会话执行的开销略大。