我在YAML中描述了卷积神经网络模型。当我运行pylearn2的train.py
时,我发现只使用了四个核中的一个。在
有没有一种多线程运行培训的方法?
是啊,也许这是个很难回答的问题。我遵循了http://deeplearning.net/software/theano/tutorial/multi_cores.html关于多核支持的no教程,OMP_NUM_THREADS=2 python theano/misc/check_blas.py -q
对我不起作用-我看到只有一个线程在运行。还有一个问题:
培训可以与OMP_NUM_THREADS
并行吗?因为我不能检查它,因为OMP_NUM_THREADS
不能做这件事。我该为我的布拉斯烦恼吗?
我有BLAS和LAPACK,numpy
连接到它们,python2.7.9,我的系统是内核i54300u上的ubuntu15.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)。在相关问题 更多 >
编程相关推荐