【发布时间】:2016-08-25 14:10:46
【问题描述】:
我创建了一个由 host0 到 host47 组成的 48 节点集群(所有节点都是具有 no NFS 的 g2.2xlarge Amazon EC2 实例)。
根据https://ipyparallel.readthedocs.io/en/latest/process.html,我在host0 上创建了一个控制器,在host1 到host47 上创建了47 个引擎。我已经从StarCluster 项目复制了sshipyparallel 集群的大部分配置(但是,正如我所说,没有NFS)。
集群工作并且似乎产生了正确的结果,但加载模块有时需要很长时间。
例如,
import ipyparallel as ipp
client = ipp.Client('/path/to/ipcontroller-client.json',sshkey='mykey')
view = client[:]
view.block=True
with view.sync_imports():
import time
import numpy
from keras.models import Sequential
from keras.layers import Dense, Dropout
from keras.regularizers import l1
from keras.optimizers import SGD
from subprocess import check_output
需要 30 多分钟才能完成。如果我更改为block=False 和view.wait(),这不会改变。同样使用view.execute("import time; import numpy; import keras.models ...") 也无济于事。我知道加载keras 模块有点慢,但在我的本地机器上通常不到 1 分钟就可以完成。我已经尝试过 pickle 和 json (un)packing。
我应该提到,当我使用 same 集群进行另一个计算时,模块的加载工作正常。我猜加载的模块在某处缓存。但是当我终止实例、创建新实例并配置新的ipyparallel 集群时,我在模块加载方面遇到了同样的问题。
查看ipcontroller的日志,可以发现大部分请求对应sync_imports
2016-08-25 12:12:02.310 [IPControllerApp] queue::client '\x00"_\x0b\x0b'
submitted request '46244cf0-ad0a-4748-a84c-8d3d69d8252c' to 0
在几分钟内完成。但是,其中一些需要大约 30 分钟。请参阅以下来自 ipcontroller 日志的 complete_time - submit_time 直方图。
我最近才开始使用 python,但我不知道这里可能出现什么问题。似乎完成时间和提交时间之间的最大时间差随着集群大小的增加而增加。 任何指向可能问题的指针都非常受欢迎。
顺便说一句:我使用的是 Python 2.7.6 和 Ipyparallel 5.1.1
【问题讨论】:
标签: python amazon-ec2 theano keras ipython-parallel