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

时间:2016-11-23 03:52:56

标签: tensorflow gpu theano

我的GPU是Titan X应该比CPU(Intel(R)Xeon(R)CPU E5-2643 v3 @ 3.40GHz)更快。但我的两个模型在GPU上运行速度稍慢。一个型号在GPU上运行得更快。在这两个模型中,一个用tensorflow实现,另一个用theano实现。这两个模型的共同特征是它们都属于分层Bi-LSTM模型,这意味着底部Bi-LSTM的最后输出作为输入馈入另一个。所以这两个模型都不太简单。 所以我想询问一下他们在GPU上运行速度慢的原因是什么?

1 个答案:

答案 0 :(得分:0)

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

Theano与scan有多个问题,这是RNN循环的主力。

这里有一些:

  1. 由于theano在编译时不知道形状信息,因此得到的编译例程可能不是最理想的(比如使用gemv用于矢量矢量点)。

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

  3. 管道不好。使用scan实现映射操作通常比直接使用底层操作要慢。显然优化器还为时过早,仍然无法识别这类问题。

  4. 解决方案:

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

    2. 如果能够负担编译时间,请尝试展开RNN(使用普通循环来构建图形而不是scan)。

    3. 我提出PR来解决gemv问题,仅针对旧的GPU后端。试一试(如果还没有合并)。现在它是开发大师分支的一部分。