深度模型訓練時間預估
我做深度學習的時間不長,很多模型在訓練前我總是嘀咕,在給定的時間內能不能訓練完。
所以我做了一些實驗,如果大家願意做一些四則運算,借用下面的數據,能夠在訓練前大致估計出一個模型的訓練時間。
結論(最簡單的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 fromhttps://asteroidsathome.net/boinc/cpu_list.php)
跑模型時,CPU基本佔用10個核。GPU佔用一塊顯卡。CPU和GPU都使用float32。
[Theory Analysis]
僅從double GFLOPS來看,K40M能比CPU快上25X,如果CPU只使用一半的核,上限應該是50X。
從 http://karpathy.github.io/2015/05/21/rnn-effectiveness/的經驗,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 | 機器學習 | 自然語言處理 |