深度学习模型在GPU上的运行速度比在CPU上运行慢的原因是什么?



我的GPU是泰坦X的X,它的速度应该比CPU快,即Intel(R)Xeon(R)CPU E5-2643 V3 @ 3.40GHz。但是我的两个模型在GPU上的运行较慢。一种模型在GPU上运行得更快。在这两种模型中,一种用TensorFlow实施,另一种是用Theano实施的。这两个模型的共同特征都是它们都属于层次BI-LSTM模型,这意味着底部Bi-LSTM的最后一个输出被作为输入送入另一个。因此,这两个模型都没有太简单。因此,我想询问它们在CPU上的GPU Thant上运行较慢的可能原因是什么?

我可以为theano方提供一些信息:

theano在scan上遇到了多个问题,这是其RNN循环的主力。

这是其中的一些:

  1. 由于Theano在编译时不知道形状信息,因此所得的编译例程可以次优(例如将gemv用于向量 - 向量点)。

  2. (截至2016年11月)scan的当前版本是在Cython中实现的,该版本在纯C 版本上具有一些开销。如果RNN在一个步骤上没有太多的计算密度,则可能很重要。

  3. 它不能很好地管道。使用scan实现地图操作通常比直接使用基础操作较慢。显然,优化器还为时过早,仍然无法识别出这种问题。

解决方案:

  1. 尝试升级到开发版本。他们一直在加班。

  2. 尝试展开RNN(如果您可以负担得起的汇编时间,请使用普通循环来构建图形而不是scan)。

  3. 我仅针对旧的GPU后端来解决gemv问题。尝试一下(如果还没有合并)。现在是Dev Master Branch的一部分。

相关内容

最新更新