2016-11-23 101 views
1

我的GPU是Titan X應該比Intel(R)Xeon(R)CPU E5-2643 v3 @ 3.40GHz的CPU要快。但是我的兩款機型在GPU上運行速度稍慢。一個模型在GPU上運行得更快。在這兩個模型中,一個用tensorflow實現,另一個用theano實現。這兩個模型的共同特點是它們都屬於分級Bi-LSTM模型,這意味着底部Bi-LSTM的最後輸出作爲輸入被饋送到另一個。所以這兩種模式都不是太簡單。 所以我想問一下在GPU上運行速度比CPU慢的原因是什麼?GPU上的深度學習模式運行速度慢於CPU上運行的可能原因是什麼?

+0

「nvidia-smi」報告的gpu使用情況是什麼?也許代碼不夠利用GPU? – sygi

回答

0

我公司可提供的theano側的一些信息:

Theano已經具有scan多個問題,這是其RNN主力循環。

下面是其中一些:

  1. 由於theano不知道在編譯時形狀信息,編譯後的程序可能是次優(例如使用gemv矢量矢量點)。

  2. (截至2016年11月)當前版本的scan是在cython中實現的,它在純C++版本上有一定的開銷。如果RNN在一個步驟中沒有太多的計算密度,這可能很重要。

  3. 它流水不好。使用scan來實現映射操作通常比直接使用底層操作要慢。顯然,優化器還不成熟,仍然無法識別這類問題。

解決方案:

  1. 嘗試升級到dev版本。他們一直在加班加點改進。

  2. 嘗試展開RNN(使用簡單的循環來構建圖形而不是scan),如果您負擔得起編譯時間。

  3. 我做了一個PR地址gemv問題,只針對舊的GPU後端。嘗試一下(如果尚未合併)。現在它是開發主分支的一部分。

相關問題