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