我正在使用多个学习器(大约 15 个不同的学习器)运行一个 mlr 基准测试,并使用 irace 调整控件进行嵌套重采样。 我的问题是:是否可以在parallelMap 上运行两个并行化级别?
如果我使用 mlr.benchmark 级别,则速度更快的学习器首先结束,只有计算要求更高的学习器保持运行,每个学习器一个线程。所以最终会运行 4 个或者 5 个线程。
如果我使用 mlr.tuneParams 级别,irace 调整控件会生成 6 个线程来评估所有线程,然后在所有线程完成后,它会创建另外 6 个线程。我知道这个方法本质上是顺序的。
我的观点是,无论哪种方式,CPU 核心都没有得到充分利用。 例如,如果 CPU 有 12 个核心,我可以同时运行两个学习器,每个学习器使用 6 个核心进行调优。
现在我正在手动执行此操作:我创建多个 R session 并单独运行它们。
谢谢!
最佳答案
目前,您无法使用 parallelMap
跨多个级别进行并行化。
parallelMap::parallelStart()
的 level
参数仅接受 single level .
这是一个已知的限制,将来可能不会再改变。
在 mlr3所有级别都将使用 future
包并行化。
如果您在代码中嵌套调用 parallelMap()
且未设置显式级别,则管道中的第一个调用将被并行化。
关于r - 在mlr和parallelMap中可以并行化多个级别吗?例如 mlr.tuneParams 和 mlr.benchmark,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56762713/