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

Facebook展示了如何讓機器翻譯速度變快,同時又能擴展應用的方法
評論