我正在与多个学习者(大约15个不同的学习者)一起运行mlr基准测试,并使用irace调整控件进行嵌套重采样。 我的问题是:是否可以在parallelMap上运行两个并行化级别?
如果我使用mlr.benchmark级别,则学习速度越快的人将首先结束,而只有更多计算要求高的学习者仍在运行,每个学习者都有一个线程。因此最终会运行4个或5个线程。
如果我使用mlr.tuneParams级别,则irace调整控件会生成6个线程来评估所有线程,然后在所有线程完成后再创建6个线程。我知道这种方法本质上是顺序的。
我的观点是未充分使用CPU内核。 例如,如果一个CPU有12个内核,我可以同时运行两个学习器,每个学习器使用6个内核进行调整。
现在我正在手动执行此操作:我创建了多个R会话并分别运行它们。
谢谢!
答案 0 :(得分:1)
您目前无法使用parallelMap
在多个级别上并行化。
level
的{{1}}参数仅接受single level。
这是一个已知的限制,将来可能不会更改。
在mlr3中,所有级别都将使用parallelMap::parallelStart()
包进行并行化。
如果在代码中嵌套了对future
的调用而未设置显式级别,则管道中的第一个调用将被并行化。