Deep-Learning
為什麼我的 LSTM 需要這麼長時間來訓練?
我正在嘗試訓練雙向 LSTM 來執行順序文本標記任務(特別是,我想做自動標點符號)。
我使用字母作為構建塊:我用 50 維嵌入向量表示每個輸入字母,饋入單個 100 維隱藏層,饋入 100 維輸出層,然後饋入 MLP。
對於訓練,我有一個包含大約 18 百萬個字母的語料庫——大約有 70,000 個句子,每個句子中大約有 250 個字母。(我在 Ubuntu 16.04 系統上的 Python 3 上使用過 DyNet)。
主要問題是訓練非常緩慢:每次訓練迭代大約需要半天時間。由於訓練通常需要大約 100 次迭代,這意味著我必須等待一個多月才能獲得合理的結果。
我問了其他一些做深度學習的人,他們告訴我“深度學習很慢,你必須習慣它”。儘管如此,等待一個多月的培訓似乎非常緩慢。
這些時間對於訓練 LSTM 模型很常見嗎?如果沒有,我做錯了什麼,我能做些什麼來加快訓練速度?
不管我說這話有多痛苦,
Deep learning is slow, get used to it
..不過,您可以採取一些措施來加快訓練速度:
- 你用的是什麼GPU?我的一個朋友去年對 LSTM 進行了一些研究,並在她的 NVIDIA GTX7 上訓練他們?顯卡。由於這變得非常緩慢,他們試圖在更現代的 CPU 上訓練網絡,這實際上導致了一個非常重要的加速。
- 你用的是什麼框架?雖然大多數框架都具有可比性,但我聽說一些框架比其他框架慢的傳言 ( https://arxiv.org/pdf/1608.07249.pdf )。如果您要進行大量培訓,那麼切換框架可能是值得的。
- 是否可以在您的公司/大學硬件上訓練您的網絡?大學和研究公司通常擁有一些強大的硬件供他們使用。如果這不是一個選項,也許您可以考慮使用一些雲計算能力。
所有這些解決方案顯然都假設您的模型本身是最佳的(就訓練時間和準確性而言),這也是您需要考慮的問題,但超出了此答案的範圍。