深度模型訓練時間預估

我做深度學習的時間不長,很多模型在訓練前我總是嘀咕,在給定的時間內能不能訓練完。

所以我做了一些實驗,如果大家願意做一些四則運算,借用下面的數據,能夠在訓練前大致估計出一個模型的訓練時間。

結論(最簡單的RNN分類模型下):

  • 600M參數、25M詞語,1 epoch需要4K s。
  • GPU/CPU 加速比(使用theano backend)隨著問題規模的增大而增大。上限我猜測應該是20倍。
  • 當Batch Size在[32, 1024]區間時,訓練時間基本隨著batch size增大線性降低。
  • Sentence長度對於訓練時間的影響是sub-linear的。
  • tensorflow比theano慢至少一倍
  • CNMem可以加速24%。

[實驗設計]

模型是一個最簡單的RNN分類模型。

· 一層Emb 300維

· 一層LSTM 128維

· 一層dropout(0.5)

· 一層sigmoid

測試數據是1M句子。

硬體(Below info comes fromasteroidsathome.net/boi)

跑模型時,CPU基本佔用10個核。GPU佔用一塊顯卡。CPU和GPU都使用float32。

[Theory Analysis]

僅從double GFLOPS來看,K40M能比CPU快上25X,如果CPU只使用一半的核,上限應該是50X。

karpathy.github.io/2015的經驗,10x的加速。「 Also, it helps ifyou have a GPU or otherwise training on CPU will be about a factor of 10xslower.」

[GPU/CPU 加速比隨著問題規模的增大而增大]

Imp.plt.plot([20,280, 2000], [2 / 0.5, 9.2/0.95, 57/4.], "o-", label="CPU")

Imp.plt.xlabel("Vocabsize (K terms)")

Imp.plt.ylabel("CPUtime /GPU Time")

Imp.plt.title("BatchSize 100, Sent Len 25, 1M sentences")

Imp.plt.plot([32,128, 1024], [25/2.7, 7/0.76, 2.1/0.19], "o-")

Imp.plt.xlabel("BatchSize")

Imp.plt.ylabel("CPUtime /GPU Time")

Imp.plt.title("VocabSize 280K, Sent Len 25, 1M sentences")

[為什麼隨著問題規模增大,加速比越來越大?]

Vocabulary size從20K擴大到280K,擴大到14倍。CPU時間增加到4.6倍。並不是線性的,這是因為問題的規模除了受到vocabularysize影響,還受到LSTM層的影響。

Vocabulary size從280K擴大到2M,擴大到7.1倍。CPU時間增加到6.19,接近線性。(當vocab size極大時,LSTM層對規模的影響可以忽略不計了)而GPU時間增加到4。說明,GPU的並行度遠高於CPU,GPU還能通過更高的並行度來加快運算。

[Batch Size V.S Training Time]

Imp.plt.plot([32,128, 1024], [25, 7, 2.1], "o-")

Imp.plt.xlabel("BatchSize")

Imp.plt.ylabel("CPUtime(in K sec)")

Imp.plt.title("VocabSize 280K, Sent Len 25, 1M sentences")

Imp.plt.plot([32,128, 1024], [2.7, 0.76, 0.19], "o-")

Imp.plt.xlabel("BatchSize")

Imp.plt.ylabel("GPUtime(in K sec)")

Imp.plt.title("VocabSize 280K, Sent Len 25, 1M sentences")

從128 ->1024的batch size(8x),速度提升了4x。仍然可觀。

[Sentence長度對訓練時間的影響是sub-linear的]

我不能理解這個結果。

[原始測試結果]


推薦閱讀:

Neural Machine Translation with Word Predictions 閱讀筆記
SQLnet 代碼閱讀筆記
Bag of Word
自然語言處理透析希拉里和特朗普各自的「演講范兒」
下半年寫作計劃

TAG:深度學習DeepLearning | 機器學習 | 自然語言處理 |