我正在对多个学习者(大约15个不同的学习者)运行mlr基准测试,并使用irace调优控件进行嵌套重采样。我的问题是:是否可以在parallelMap上运行两个并行化级别?
如果我使用mlr.benchmark级别,学习者结束第一次的速度就越快,只有计算要求更高的学习者才会继续运行,每个人都有一个线程。所以最终会有4-5个线程在运行。
如果我使用mlr.tuneParams级别,irace调优控件会产生6个线程并对所有线程进行求值,然后在所有线程都完成后,它会创建另外6个线程。我知道这种方法本质上是顺序的。
我的观点是,无论哪种方式,CPU核心都没有得到充分利用。例如,如果一个CPU有12个内核,我可以同时运行两个学习者,每个学习者使用6个内核进行调优。
现在,我手动执行此操作:我创建多个R会话,然后分别运行它们。
谢谢!
发布于 2019-06-26 21:14:25
当前使用parallelMap时,您不能跨多个级别进行并行。parallelMap::parallelStart()的level参数仅接受single level。
这是一个已知的限制,将来可能不会再改变。在mlr3中,所有级别都将使用future包进行并行化。
如果在没有设置显式级别的情况下在代码中嵌套了对parallelMap()的调用,则管道中的第一个调用将被并行化。
https://stackoverflow.com/questions/56762713
复制相似问题