我在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的DistBelief),但是现成的PyLearn2中不提供这些版本。这主要是因为PyLearn2建立在Theano之上,并且Theano非常适合共享内存操作。
如果您拥有GPU,那么几乎可以肯定的是,切换到GPU可以更快地接受培训。如果这不是一种选择,那么只要正确设置BLAS和OpenMP,您应该会看到一段时间使用多个内核。当check_blas.py
没有任何改善的事实OMP_NUM_THREADS > 2
表明您没有正确设置它们。我建议您打开一个新问题,如果您需要帮助,请提供更多有关已完成操作的信息,以及在打印其配置时numpy显示的设置(例如,请参见此处)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句