【问题标题】:How to speed up resampling process with parallelizaiton in mlr3?如何在 mlr3 中使用并行化加快重采样过程?
【发布时间】:2021-02-23 09:17:20
【问题描述】:

我尝试在 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 中的并行化设置有问题吗?谢谢!

【问题讨论】:

    标签: r parallel-processing future mlr3


    【解决方案1】:

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

    【讨论】:

    • 谢谢!你解决了我的困惑。我在 ranger learner 中将 num.threads 设置为 1,并测试了其他一些没有内置线程的学习器,然后并行化工作。
    猜你喜欢
    • 1970-01-01
    • 2016-08-26
    • 2021-10-16
    • 2022-03-07
    • 1970-01-01
    • 2021-05-23
    • 1970-01-01
    • 2022-09-01
    • 1970-01-01
    相关资源
    最近更新 更多