我需要在 15 台机器(每台 4 核)上运行数千*个模型,所有机器都是 Windows。我开始学习parallel
, snow
and snowfall
包并阅读了一堆介绍,但他们主要关注主控的设置。关于如何在 Windows 上设置工作(从)节点的信息很少。这些信息常常是矛盾的: 有人说 SOCK 集群实际上是最简单的方法,其他人声称Windows 上的 SOCK 集群设置很复杂(sshd 设置),最好的方法是 MPI.
那么,在Windows上安装从节点的最简单方法是什么? MPI、PVM、SOCK 还是 NWS?我的,可能是天真的想法是(按优先级列出):
- 使用从属节点上的全部 4 个内核(必需)。
- 理想情况下,我只需要带有一些包的 R 和一个从属 R 脚本或 R 函数,它们将侦听某个端口并等待来自主服务器的任务。
- 理想情况下,可以从集群中动态添加/删除节点。
- 理想情况下,从站将连接到主站 - 因此我不必在主站的配置中列出所有从站 IP。
只有 1 是 100% 需要的,2-4 是“很好”。这样的要求是不是太天真了?
很抱歉,我无法从可用的文档和教程中弄清楚这一点。如果您指出我正确的来源,我将不胜感激。
* Note that each of those thousands of models will take at least 7 minutes, so there won't be a big communication overhead.
遗憾的是,所有这些 API(例如并行/雪/降雪)使用起来都很复杂,有很多文档,但不是您需要的...我找到了一个非常简单的 API,并且直接实现了我概述的想法!!这是雷迪斯和doRedisR包 (as 推荐这里)。最后一个非常简单的教程存在!只是修改了一下,得到了这个:
工人只需要R、 doRedis 包和这个脚本:
require(doRedis)
redisWorker('jobs', '10.0.0.7') # IP of the server
主人需要Redis服务器正在运行(已安装实验性的 Windows 二进制文件对于 Windows),以及此 R 代码:
require(doRedis)
registerDoRedis('jobs')
foreach(j=1:10,.combine=sum,.multicombine=TRUE) %dopar%
... # whatever you need to run
removeQueue('jobs')
添加/删除worker是完全动态的,无需在master上指定IP,自动“负载平衡”,简单并且不需要大量的文档!该解决方案满足所有要求,甚至更多 - 如中所述?registerDoRedis
:
doRedis并行后端可以容忍工作进程之间的故障并自动重新提交失败的任务。
我不知道使用 SOCKS/MPI/PVM/NWS 的并行/降雪/降雪会多么复杂,如果有可能的话,但我想非常复杂......
唯一的使用redis的缺点我发现:
-
它是一个数据库服务器。我想知道这个 API 是否存在于某个地方,而不需要安装我根本不需要的数据库服务器。我想它一定存在!
- 当前的 doRedis 包中存在一个错误("object '.doRedisGlobals' not found")还没有解决方案并且我无法将旧的工作 doRedis 1.0.5 包安装到 R 3.0.1 中.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)