scikit-learn和ipyparallel后端

时间:2017-06-04 16:23:50

标签: python parallel-processing scikit-learn multiprocessing cluster-computing

根据 this 回答,在使用ipycluster运行的集群上使用scikit-learn并行特性非常简单。

但是,我的示例仅在起始节点上运行。我使用anaconda分发的ipython,skit-learn和ipyparallel,更新到最新版本。

from sklearn.externals.joblib import Parallel, parallel_backend, register_parallel_backend
from ipyparallel import Client
from ipyparallel.joblib import IPythonParallelBackend
from sklearn.cluster import MeanShift

c = Client(profile='mpi')
print(c.ids)
bview = c.load_balanced_view()

register_parallel_backend('ipyparallel', lambda : IPythonParallelBackend(view=bview))

xyz=loaddata()
ms = MeanShift()
with parallel_backend('ipyparallel'):
    ms.fit(X)

我用这个命令运行一个集群:

ipcluster start --profile=mpi -n 17 --log-level DEBUG --delay 5

此示例并行运行 ,但仅在启动它的节点上运行(htop表示完整处理器利用率)。 Ipycluster日志表示存在客户端连接,但没有任何任务被提交给任何节点。 对此群集的基本测试表明它正常运行,并且ipyparallel本身按预期工作。

任何想法,为什么这个例子不会分布在所有节点上?

0 个答案:

没有答案