0

我尝试在 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)

我已经测试了很多次,plan() 中有不同数量的工作人员,并且在不同的笔记本电脑上运行,并行计划总是较慢。它也发生在超参数调整和嵌套重采样过程中。但是当我检查 Windows 中的任务管理器时,我可以看到会话正在后台运行。

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

4

1 回答 1

1

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

于 2021-02-23T09:49:12.927 回答