python - Theano/Pylearn2。如何并行训练?

标签 python multithreading machine-learning theano

我有 YAML 中描述的卷积神经网络模型。当我运行 pylearn2 的 train.py 时,我发现只使用了四个核心中的一个。

有没有办法运行多线程训练?

是的,这可能是一个 Theano 问题。我关注了这个http://deeplearning.net/software/theano/tutorial/multi_cores.html关于多核支持的 Theano 教程,以及 OMP_NUM_THREADS=2 python theano/misc/check_blas.py -q 对我不起作用 - 我只看到一个线程在运行。还有进一步的问题: 训练可以与OMP_NUM_THREADS并行吗?因为我无法检查它,因为OMP_NUM_THREADS没有做这件事。 那么我应该担心我的 BLAS 吗?

我有带有 LAPACK 的 BLAS,numpy 连接到它们,python 2.7.9,我的系统是 Core i5 4300U 上的 Ubuntu 15.04。

谢谢您,热烈的祝福!

最佳答案

您的问题最直接的答案是:您无法按照您想要的方式并行训练。

BLAS、OpenMP 和/或在 GPU 上运行仅允许并行执行某些操作。如果训练算法被设计为并行化,则训练本身只能以您想要的方式并行化。默认情况下,PyLearn2 使用普通的随机梯度下降 (SGD) 训练算法,该算法不可并行。有支持并行化的 SGD 版本(例如 Google's DistBelief ),但现成的 PyLearn2 中不提供这些版本。这主要是因为 PyLearn2 构建在 Theano 之上,而 Theano 很大程度上是为共享内存操作而设计的。

如果您有 GPU,那么切换到 GPU 几乎肯定会获得更快的训练速度。如果这不是一种选择,只要您的 BLAS 和 OpenMP 设置正确,您应该会看到有时会使用多个内核。事实上,当 OMP_NUM_THREADS > 2 时,check_blas.py 没有显示出任何改进,这表明您没有正确设置它们。如果您需要这方面的帮助,我建议您提出一个新问题,提供有关您所做的事情的更多信息,以及打印其配置时 numpy 显示的设置(例如,请参阅 here)。

关于python - Theano/Pylearn2。如何并行训练?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30470517/

相关文章:

python - 线程队列工作示例

dataset - Libsvm 数据集格式中样本的含义(特别是 Mnist)

python - 如何使用 sklearn 管道和 FeatureUnion 选择多个(数字和文本)列进行文本分类?

python - 对 Pandas Groupby 中的列求和

python - 自定义排序的字典列表 Python

python - 使用正则表达式获取拆分版本号的最佳方法

python正则表达式提取用户名:password or email:password in mixed delimited csv

java - 在调用方法之前不执行任何操作的线程或类

java - 如何通过配置更改在 Android 上管理蓝牙连接?

插入符中基于重采样的性能度量