編者按:機器翻譯是人工智能在實際應用中的一個重要領域。在這篇文章中,Facebook的研究人員們展示了他們是如何讓機器翻譯速度變快,同時又能擴展應用的方法。
我們希望,用戶能用自己的母語體驗他們的產品,從而將全世界各地的用戶聯系起來。為了這一目的,我們用神經機器翻譯(NMT)自動翻譯文章和評論的文字。此前有關這項工作的成果已經在fairseq上開源,這是一種序列到序列的學習庫,可以讓任何人訓練NMT、進行文本摘要總結或者其他文本生成任務。
隨著NMT在學習大型單一語種數據上的能力逐漸提高,追求更快的訓練速度成為了研究重點。為了這一目的,我們必須找到一種方法能顯著減少訓練時間。直到目前,在一臺機器上訓練這種類型的NMT模型都需要好幾周時間,這種速度顯然比較慢。
現在,經過對模型精確度和訓練設置的多種改變,我們可以在32分鐘內訓練一個強大的NMT模型,速度比之前快了45倍。論文地址:arxiv.org/abs/1808.09381
加速訓練
首先,我們的重點在如何減少模型的訓練時間,最終僅用了一個NVIDIA DGX-1和8個Volta GPUs就將之前將近24個小時的訓練時間減少到了5小時以下。神經網絡通常含有數百萬個參數,可以在訓練時進行調整。這些參數通常會儲存在32位浮點數中。第一步,我們將訓練從32位轉換成16位,從而減少GPU內存,并且能使用經過優化的NVIDIA Tensor Cores。用精度降低的浮點訓練有時會導致模型質量的降低,因為浮點的“溢出”。在我們的工作中,我們應用了一種常見的用于自動檢測和放置過載的技術,將訓練時間減少到了8.25個小時,速度快了2.9倍并且沒有使模型質量損失。
接下來,我們通過所謂的“累積更新(cumulative upgrade)”來延遲模型的更新。我們對模型進行同步訓練,從而每個GPU保留著和模型一樣的副本,但處理訓練數據不同的部分。處理需要反向傳播,反向傳播在網絡上分為前向傳遞和后向傳遞,以計算訓練模型所需的統計數據。處理完每個mini-batch后,GPU會將結果(梯度)同步互相傳遞。這種方法會導致潛在的低效:首先,在GPU之間傳輸數據會消耗時間;第二,速度快的單元要等待速度慢的單元才能繼續訓練。
后者是文本處理模型一個重要的挑戰,不同長度的句子會讓問題更嚴重,這一點在計算機視覺領域是體會不到的,因為訓練的圖像通常大小相同。針對上面提到的兩個問題,我們的解決方法是拖延同步點,將多個mini-batch的結果聚集起來再傳播到各個處理單元中。這將訓練時間減少到了7.5個小時,沒有損失模型質量。
累積更新同樣增加了高效訓練的量,或者用于每個步驟訓練的數據。在我們的設置中,batch的大小增加了16倍,這是我們將學習率提高了一倍,從而讓訓練時間減少到了5.2小時。
在多個步驟間進行梯度聚集
最終,我們用多余的GPU內存進一步擴大了batch的大小。通過將每個處理單元從原來的3500單詞增加到5000個單詞,我們能將整體的訓練時間減少到4.9小時,是原來的4.9倍。
在多個機器上訓練
我們在單一機器上的訓練優化同樣可以應用在多機器訓練中(即分布式訓練)。將原本在單獨DGX-1機器上的訓練擴展到16個機器上時(有128個GPU),我們發現只需37分鐘就能訓練相同的模型,這是原來的38.6倍。
在多個機器上訓練時,另一種優化會使GPU交流和反向傳遞重疊。反向傳遞之后,我們獲得了在其他處理單元中交流所需要的信息。通常來說,反向和交流是接連出現的,但是我們可以讓二者重疊從而節省時間。特別的,我們可以當反向步驟一在某個神經網絡的子集中完成,就在多個處理單元中對梯度進行同步。GPU交流之后就會和反向傳遞重合。這就進一步減少了訓練時間,即達到了32分鐘。
反向傳播中的反向傳遞(back pass)可以和梯度同步重疊進行,從而提高訓練速度
每次模型優化后訓練時間的減少
在更多未翻譯的數據上訓練
將模型的訓練時間縮短后,我們又開始研究如何訓練模型在更大的數據集上工作。通常來講,訓練NMT模型需要有對應翻譯版本的數據,即雙語數據。但是這種資源十分有限,可用數據大多只有一種語言。在我們的第二篇論文中(地址:arxiv.org/abs/1808.09381),我們展示了如何讓模型在這種情況下工作,同時用大量數據訓練可以讓精確度有所提升。
其中提高NMT在單一語言數據上效率的技術之一就是反向翻譯(back-translation)。如果我們的目的是訓練一個英譯德的翻譯模型,那么我們首先要訓練一個德譯英的模型,然后用它來訓練所有單一德語的數據。之后把英譯德模型在現有和新數據上進行訓練。我們的論文表明,數據如何翻譯是很重要的,在采樣過程中并不總是選擇最佳翻譯版本是很有用的。
反向翻譯過程
如果我們在現有的500萬條句子中加入2.26億條反向翻譯的句子,那么模型翻譯質量會得到顯著提高。下方的表格就展示了系統的精確度在不同數據上的表現。
更快的翻譯
我們同樣改善了翻譯速度,模型一經訓練好,fairseq就能翻譯出來。尤其是我們使用了智能緩存,或者從計算中算出了一經完成的句子,并且分批處理單詞數量而不是句子。這將翻譯速度提高了將近60%。下方圖表就展示了各種方法的對比。
結語
繼續提升自動翻譯技術仍然是我們的研究重點,希望未來有更多發現能讓訓練速度更快,這樣就可以推動實驗的迭代次數,讓NMT模型的發展更快。我們還希望未來能用無標記數據解決翻譯之外的問題,例如問答或文本總結。
-
Facebook
+關注
關注
3文章
1429瀏覽量
54653 -
人工智能
+關注
關注
1791文章
46872瀏覽量
237598 -
機器翻譯
+關注
關注
0文章
139瀏覽量
14873
原文標題:數據集更大、訓練速度更快,Facebook改善機器翻譯的秘訣有哪些?
文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論