Theano/Pylearn2。如何并行培训?

2024-05-15 12:01:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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

谢谢,温馨的祝愿!在


Tags: 方法py模型httpyamlnettrain神经网络
1条回答
网友
1楼 · 发布于 2024-05-15 12:01:43

对你的问题最直接的回答是:你不能以你想要的方式并行训练。在

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)。在

相关问题 更多 >