如何在 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 版本中,随机森林实现默认使用线程(默认值将在下一版本中更改)。因此,您正在比较两个并行执行,而第二个通过多会话执行的开销略大。
我尝试 运行 在 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 版本中,随机森林实现默认使用线程(默认值将在下一版本中更改)。因此,您正在比较两个并行执行,而第二个通过多会话执行的开销略大。