在mlr和parallelMap中可以并行化多个级别吗?例如mlr.tuneParams和mlr.benchmark

时间:2019-06-25 22:14:39

标签: r mlr

我正在与多个学习者(大约15个不同的学习者)一起运行mlr基准测试,并使用irace调整控件进行嵌套重采样。 我的问题是:是否可以在parallelMap上运行两个并行化级别?

如果我使用mlr.benchmark级别,则学习速度越快的人将首先结束,而只有更多计算要求高的学习者仍在运行,每个学习者都有一个线程。因此最终会运行4个或5个线程。

如果我使用mlr.tuneParams级别,则irace调整控件会生成6个线程来评估所有线程,然后在所有线程完成后再创建6个线程。我知道这种方法本质上是顺序的。

我的观点是未充分使用CPU内核。 例如,如果一个CPU有12个内核,我可以同时运行两个学习器,每个学习器使用6个内核进行调整。

现在我正在手动执行此操作:我创建了多个R会话并分别运行它们。

谢谢!

1 个答案:

答案 0 :(得分:1)

您目前无法使用parallelMap在多个级别上并行化。 level的{​​{1}}参数仅接受single level

这是一个已知的限制,将来可能不会更改。 在mlr3中,所有级别都将使用parallelMap::parallelStart()包进行并行化。

如果在代码中嵌套了对future的调用而未设置显式级别,则管道中的第一个调用将被并行化。