我必须使用不同的参数并行运行相同的 R 脚本(通过批处理(。R 脚本生成 H2O 模型并对其进行评分。在这种情况下,我应该,
- 是否为 R 脚本的每个批处理运行设置单独的群集?
(或(
- 创建一个公共集群并设置脚本以使用它?
我更喜欢后一种解决方案,但我不确定如何自动初始化和关闭这么多批次的 H2O 集群。第一批必须创建集群(H2O.init((,最后一批必须关闭它(
为每个 R 会话设置单个 h2o 集群是理想的。
使用h2o::h2o.init()
启动 h2o 集群时,请确保为每个 R 会话指定不同的这些内容(每个脚本运行自己的 R 会话(:
ip
/port
(本地主机下的端口尚未占用(name
(通过顶部/htop在终端上检查其进度/使用情况(
根据需要更改其他选项。每个 R 会话都知道它正在运行的 h2o 群集,h2o::h2o.shutdown()
只会关闭特定的 h2o 群集。
建议使用设置单个群集并让所有脚本使用它,因为它更有效。每个集群都有内存开销,因此您的 20 个单独的集群将浪费(如果所有脚本都需要使用任何静态数据表,则更是如此(。您还必须猜测给每个人的正确金额。
另一方面,如果你的 20 个脚本每个都引用一个特定的表,例如用它们自己的数据加载它,并且通常假设它们是唯一运行的脚本,你就会遇到一个问题:你要么需要修改脚本以使其运行良好,要么在自己的 ip/port 上运行每个脚本。
我不确定如何自动初始化和关闭这么多批次的 H2O 集群。第一批必须创建集群(H2O.init((,最后一批必须关闭它(
在运行第一个脚本之前从命令行启动 H2O,并在所有脚本完成后手动终止它。通过这样做,每个脚本在执行h2o.init()
调用时都会发现它已经在运行。
如果必须完全自动,请确保启动命令将首先运行,但您需要某种观察程序脚本来注意所有其他进程何时完成。 (我倾向于在 cron 作业上运行ps
和grep
的组合;当然,还有更复杂的方法。