如何加速神經語言模型訓練?東北大學小牛翻譯團隊有妙招

2021-01-17 雷鋒網

雷鋒網AI科技評論按:本文為東北大學自然語言處理實驗室(小牛翻譯團隊)成員肖桐、李垠橋為雷鋒網(公眾號:雷鋒網)AI科技評論撰寫的獨家稿件,得到了其指點和審核,雷鋒網在此表示感謝。

團隊簡介:東北大學自然語言處理實驗室(小牛翻譯團隊)由姚天順教授於1980年創立,長期從事機器翻譯及語言分析方面的研究。小牛翻譯團隊所研發的NiuTrans系統開源版和小牛翻譯企業版已經被來自  60 餘個國家的2000多個機構使用,並支持44種語言的翻譯。團隊在CWMT、NTCIR等評測中取得多項第一、第二的成績,發表AI、IJCAI、AAAI、ACL等期刊及會議論文40餘篇,並於2016年獲得中文信息處理領域最高獎錢偉長中文信息科學技術獎(一等獎)。

一、神經語言模型簡介

語言作為人類之間進行溝通交流的橋梁,在歷史發展的長河中扮演著極其重要的角色。而隨著人工智慧時代的到來,人們更加希望語言不僅僅能夠在人和人之間進行信息的傳遞,也能讓機器「理解」人所說的話。而在這個過程中十分重要的一個環節就是給人所說的語言建立一個科學有效的模型,具體來說就是讓機器有能力從眾多文字序列中找到合適的字符組合表達語義,與人類進行正常的溝通。

上圖的例子中,我們將語言模型作為一個黑盒,它能夠對三個輸入的「句子」進行一個評判,判斷其語言學上的合理性,這便是語言模型要做的工作。具體來說,它通過鏈式法則對整個文字序列作為句子的可能性進行量化,對每個詞語出現在當前位置(指歷史單詞出現後該詞語出現)的概率求乘積得到整句話的概率。


那要如何知道每個詞出現時的概率呢?在神經語言模型中,其整體結構如上圖所示(圖為循環神經語言模型[1]),輸入層將離散表示的詞彙轉化成連續空間上的詞向量,不同詞彙之間的向量距離能夠反映詞語之間的相似性。隱藏層將輸入層傳遞來的詞向量進行更深層次的表述。輸出層結合隱藏層所傳遞來的信息對可能出現在下一個位置的詞進行預測,獲得詞彙表中每個詞的預測概率,有了它我們就能夠按照鏈式法則對句子的概率進行預測了。

二、更快地訓練神經語言模型

隨著在語音識別、機器翻譯等領域對語言模型性能需求的日益增長,我們迫切地希望能夠進一步改善神經語言模型的性能。一般來說使用更大量的訓練數據來訓練更複雜的模型結構將會獲得更優的模型性能,但與此同時帶來的問題在於其訓練所花費的時間消耗也相應地變長了。面對這種情況,如何有效地減少訓練神經語言模型佔用的時間成為了亟待解決的問題。

那麼如何加快神經語言模型的訓練呢?在處理器的發展過程中,前期主要通過提升硬體主頻來提升設備的運算速度,而後期由於受到物理環境等客觀因素的限制,逐漸將方向轉到多核並行上來提升計算速度。類似於該過程,在神經網絡的訓練加速中也主要有兩種方法,一種是通過提高硬體的性能來對訓練進行加速,另一種是通過增加參與運算的設備數量來達到加速的目的。前者就是對目前來說的一種主流思想,這種方法通過逐漸將神經網絡中矩陣運算相關的操作由CPU向GPU遷移,達到加速的目的。後者是我們要研究的重點,希望能在更多的設備上對神經語言模型進行訓練。

三、多設備並行的訓練方法及優化

面對著更多的訓練數據,我們要如何在多臺設備上進行網絡的訓練呢?一種常見的方法就是數據並行[2],該方法由Jeffrey Dean等人提出,其核心思想就是將訓練數據分散到多臺設備上同時進行訓練,並維護同一套網絡參數。具體的過程為,在網絡中設置一個參數伺服器,用來保存全局的網絡參數,其餘每臺設備在計算好自己的權重梯度後將其發送給參數伺服器,由參數伺服器將梯度更新到全局最新的權重中來,最後將最新的參數返回給設備伺服器完成一個minibatch的更新。

上述方法中存在兩種參數同步的策略,一種是同步地進行參數更新,另一種為異步。二者的區別在於參數伺服器向每個設備返回更新後的參數的時機不同。前者需要等待收集到全部設備上發送來的梯度後再進行權重的更新,而後者每當參數伺服器收到一個梯度後便將其更新到自身權重中,並把當前權重值返回給設備,過程如上圖所示。由於異步的方式加速效果有限,同時會對模型收斂產生一定程度的負面影響,因此在實際情況中一般較少使用。

理想情況下,由於數據並行將數據分散到了多臺設備上進行訓練,因此系統訓練速度應該同設備數量的增長而線性增大,但實際結果並不盡如人意。我們在一臺機器上使用多臺GPU設備對神經語言模型進行訓練,速度圖像如上圖所示,並沒有達到所期待的幾張卡速度就翻幾倍的現象。造成這個問題的原因是什麼呢?

我們可以看到,在數據並行的過程中,權重矩陣以及梯度需要在設備之間進行頻繁的數據傳輸,不論是機器內部設備之間的傳遞還是機器之間的,這部分的傳輸速度相對設備的計算性能均相去甚遠。也就是說,雖然我們使用了多臺設備進行協同訓練,成功地將運算分散到多臺設備上並行執行,但是在這個過程中為了維護同一套網絡參數,反而在設備間的數據傳輸上投入了不小的精力,導致整體的速度提升受到制約。在之前提到的四卡實驗中,數據傳輸所花費的時間就佔據了整個訓練耗時的50%左右,給系統並行效率造成嚴重的負面影響。針對上述問題,眾多科研人員也紛紛提出各種策略,希望能降低多設備訓練中數據傳輸耗時對並行效果造成的不良影響,這裡主要介紹三種常見的優化方法。

第一種加速策略叫做All-Reduce[3],它將原本中央化的傳輸結構改為環形,取消了參數伺服器的設置,讓設備和設備之間以一種有向環的結構進行數據的傳輸,使得系統內帶寬的利用率更高,數據傳輸更加高效。

第二種方式叫做double-buffering,通過雙緩衝區協同工作的方法,將神經網絡訓練過程中梯度計算和數據傳遞兩部分進行時間上的重疊,使得單位時間能夠執行更多的minibatch。

此外還有一種更加簡單粗暴的方式叫做模型平均[4],該方法在每一輪的訓練過程中,不進行設備間的參數同步,只有當每一輪訓練結束後才進行參數的平均。這樣做有效降低了數據傳輸的頻次從而達到了加速的效果,對於帶寬較低的物理環境(如設備處於多臺機器上,使用乙太網進行連接)常常使用它對系統進行優化。

四、基於採樣的方式進行數據傳輸

面對數據傳輸在並行中的大量耗時,我們希望能進一步減小這部分所花費的時間。我們知道傳輸時間等於所要傳輸的數據量除以系統中的帶寬,因此在不對數據並行模式進行修改的前提下,我們只能通過兩種手段對其進行加速,分別是提升傳輸速度以及減小數據傳輸的數量。All-Reduce的方法就屬於第一類,通過數據傳輸結構的變化提升了傳輸性能。那麼我們換一種思想,能否從第二個角度,也就是減少所要傳輸的數據量來對數據傳輸時間進行優化呢?

我們擁有有限的帶寬,希望能儘可能快地完成權重梯度的傳遞,那麼一種方式就是對所要傳輸的梯度矩陣進行採樣,使得需要被傳輸的數據量更少,這樣花費在這部分的時間也會相應地降低。定下了整體的優化方向之後,接下來的問題就是我們要按照哪種策略來進行採樣呢?

簡單一句話,「集中力量辦大事」。在向參數伺服器發送梯度的時候,從完整的梯度矩陣中抽取出對提高神經語言模型性能更有幫助的部分進行傳輸,減少傳輸的數據量,從而達到降低時間消耗的目的,如上圖所示。

這種方法針對神經語言模型的不同層提出了不同的採樣策略。以輸出層為例,權重矩陣為W,其大小為 v*h,v 為詞表大小,h為隱藏層節點數目。我們可以看到當網絡在前向傳播的過程中,權重的每一行都將與隱藏層的輸出向量進行點乘,得到詞彙表中某一詞的預測概率。也就是說,輸出層權重的每一行都和詞表中對應位次的詞相對應,這就是我們要對該層權重進行採樣的一大重要依據。為了能讓網絡更快地收斂,我們讓訓練集中頻繁出現的詞所對應的行向量具有更高的概率被抽取出來,傳遞給參數伺服器進行更新。具體的選取策略為:

其中,Vbase為在當前minibatch中出現的詞,Vα為從詞彙表中選擇頻繁出現的若干詞,Vβ為從詞彙表中隨機抽取的詞以保證系統具有良好的魯棒性,在測試集上更穩定。同樣,在輸入層和隱藏層也有各自不同的採樣策略。

舉個例子,如下圖所示在訓練階段,GPU1根據自身權重矩陣計算好它的權重梯度,然後通過採樣的方法從中抽取第一行和第三行傳遞給參數伺服器,同理GPU2也執行了類似的操作,抽取第二和第三行進行傳輸。參數伺服器GPU3收到兩臺設備傳遞過來的權重梯度後對它們按行進行累加,得到最終的梯度矩陣,將其更新到網絡參數中。在這個過程中由於兩臺設備均未採樣到第四行的梯度向量,因此在更新的時候並未對其進行更新。

前述方法中我們使用採樣的方式對需要傳輸的梯度進行抽取,儘可能頻繁地去更新那些對網絡性能幫助較大的部分。但其實既然我們已經決定捨棄掉了這部分梯度,為了進一步獲得速度上的提升,完完全全可以不去計算它們。我們都知道神經網絡的訓練需要經過前向傳播和反向傳播兩個步驟以獲得權重的梯度,這裡我們為它們建立兩套不同的採樣方式。

還是以輸出層為例,在前向傳播的過程中,我們依據採樣方式A捨棄掉一部分進行計算,接下來在梯度的反向傳輸過程中按照採樣方式B再次捨棄掉部分梯度的傳遞。方式B採樣的方式同數據傳輸中的採樣策略相同,使用Vall對行向量進行篩選,而方式A中我們從詞彙表中又隨機抽取出若干單詞加入到Vall中,這種方式在反向傳播過程中引入了一些噪聲詞彙,能夠有效提升模型的魯棒性。

針對上述兩種方法我們在PTB、FBIS以及Xinhua的數據集上進行測試,結果如上圖所示,其中baseline為異步訓練的結果,可以看出加速效果有限。在三個任務集上對網絡進行分布式訓練,我們可以看到將採樣的方法應用到梯度計算中的加速效果最佳,在使用4張卡的情況下,相對異步的方法可提速2.1倍左右,相對單卡可提升4.2倍左右。

在三個數據集上訓練LSTM語言模型[5]得到的性能如上圖所示(指標為困惑度),我們可以看到在使用了採樣的方式後模型性能與基線相差不大。下圖給出了在Xinhua的數據集上,校驗集困惑度隨訓練時間變化的曲線圖,其中在4張卡的環境下使用了採樣的方式後,可以看到其收斂性明顯優於基線,在第五輪訓練中困惑度得到明顯下降,同時在8-10輪左右的時候收斂。

在本章的開始處我們提到,在不對數據並行模式進行修改的前提下數據傳輸的加速方式主要有兩種,提升傳輸效率以及減少傳輸數量,二者分別對應我們提到的All-Reduce和採樣的兩種方法。我們在實驗中對比了兩種方式的加速效果,如下圖所示,All-Reduce的方式相對基線在四張卡上可提速約25%,在基於採樣的方式下提速比為41%左右。由於二者對於加速策略的出發點不同,因此理論上可以同時使用兩種方式對系統進行加速。

通過以上幾個實驗我們可以看到,基於採樣的方法在多設備上訓練神經語言模型可以有效減少在數據傳輸中的時間消耗,為在更多設備上訓練提供了可能。該方法主要包括數據傳輸中的採樣以及梯度計算中採樣,在4張GPU設備上訓練,相對異步的方式可提速約2.1倍,相對單卡訓練可提速4.2倍左右。該方法已被成功應用到小牛翻譯核心引擎中,對於其所支持的包括漢、英、日、韓等44種語言在內的翻譯系統,多設備系統的並行訓練性能提升明顯。

註:本文主要內容參考IJCAI 2017論文Fast Parallel Training of Neural Language Models,部分實驗來自CWMT 2017論文基於數據並行的神經語言模型多卡訓練分析。

參考文獻

[1]Mikolov T, Karafiát M, Burget L, et al. Recurrent neural network based language model[C]// INTERSPEECH 2010, Conference of the International Speech Communication Association, Makuhari, Chiba, Japan, September. DBLP, 2010:1045-1048.

[2] Dean J, Corrado G S, Monga R, et al. Large scale distributed deep networks[C]. International Conference on Neural Information Processing Systems. Curran Associates Inc. 2012:1223-1231.

[3] Wang L, Wu W, Bosilca G, et al. Efficient Communications in Training Large Scale Neural Networks[J]. 2017.

[4] Hansen L K, Salamon P. Neural Network Ensembles[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 1990, 12(10):993-1001.

[5] Surhone L M, Tennoe M T, Henssonow S F. Long Short Term Memory[J]. Betascript Publishing, 2010.

雷鋒網特約稿件,未經授權禁止轉載。詳情見轉載須知。

相關焦點

  • NLP領域預訓練模型的現狀及分析
    單位 | 小牛翻譯王澤洋 東北大學自然語言處理實驗室研究生,研究方向為機器翻譯。小牛翻譯,核心成員來自東北大學自然語言處理實驗室,由姚天順教授創建於1980年,現由朱靖波教授、肖桐博士領導,長期從事計算語言學的相關研究工作,主要包括機器翻譯、語言分析、文本挖掘等。團隊研發的支持140種語言互譯的小牛翻譯系統已經得到廣泛應用,並研發了小牛翻譯雲(https://niutrans.vip)讓機器翻譯技術賦能全球企業。
  • 神經結構搜索在機器翻譯中的應用
    單位 | 東北大學張裕浩,東北大學自然語言處理實驗室 2018 級研究生,研究方向包括神經網絡結構搜索、機器翻譯。    東北大學自然語言處理實驗室由姚天順教授創建於 1980 年,現由朱靖波教授、肖桐博士領導,長期從事計算語言學的相關研究工作,主要包括機器翻譯、語言分析、文本挖掘等。團隊研發的支持140種語言互譯的小牛翻譯系統已經得到廣泛應用。
  • Talk預告 | 南大NLP實驗室x字節李磊團隊合作研究:基於隱變量模型的神經機器翻譯
    他與大家分享的主題是: 「基於隱變量模型的神經機器翻譯」。屆時將會介紹鄭在翔及字節跳動李磊團隊提出的一個新的基於隱變量的神經機器翻譯模型:鏡像生成式神經機器翻譯模型。目前主流的神經機器翻譯模型主要是基於編碼器-解碼器框架的模型,使用極大似然估計來進行端到端的建模和學習。而這樣的方式可能不能很好地建模雙語互為譯文的平行句對的共同語義以及譯文的多樣變化。因此,一些研究者嘗試使用基於隱變量的模型來解決這個問題。此外,鄭在翔及字節跳動李磊團隊發現,隱變量模型還有解決神經機器翻譯中平行語料稀缺和更好地利用非平行語料的潛力。
  • 百度機器翻譯團隊獲得WMT2019中英翻譯冠軍
    今年中英方向參賽隊伍有來自微軟、字節跳動、金山、愛丁堡大學、東北大學、日本情報通信研究院等國內外知名機器翻譯團隊。本屆大賽,百度翻譯團隊憑藉在數據處理、模型架構、數據增強、模型集成等方面的創新性突破,最終力壓群雄,取得第一。
  • 從經典結構到改進方法,神經網絡語言模型綜述
    為什麼要給 LM 加上神經網絡?然而,N 元語言模型有一個明顯的缺點。為了解決這個問題,我們在將神經網絡(NN)引入到了連續空間的語言建模中。NN 包括前饋神經網絡(FFNN)、循環神經網絡(RNN),可以自動學習特徵和連續的表徵。
  • ACL 2018|西北大學:RNN語言模型的重要訓練數據抽樣
    這是讀芯術解讀的第138篇論文ACL 2018 Student Research WorkshopRNN語言模型的重要訓練數據抽樣Sampling Informative Training Data for RNN Language Models西北大學Northwestern University
  • 【微軟】大型神經語言模型的對抗性訓練,Adversarial Training
    對抗性訓練可以增強魯棒性,但是過去的工作常常發現它不利於推廣。在自然語言處理(NLP)中,預訓練大型神經語言模型(例如BERT)在針對各種任務的通用化方面顯示出令人印象深刻的收益,而從對抗性微調中得到了進一步的改進。但是,這些模型仍然容易受到對抗性攻擊。在本文中,我們表明對抗性預訓練可以同時提高泛化性和魯棒性。
  • 多家翻譯軟體大型翻車現場?機器翻譯到底有哪些不確定性
    1數據和算法雙重問題下的翻譯BUG那麼,只是簡單的一句缺乏上下文語境就能解釋這麼多家翻譯軟體為什麼都出現BUG麼?為此,AI科技評論專門諮詢了東北大學自然語言處理實驗室主任肖桐老師,他解釋道:「主要還是訓練數據的覆蓋度問題,數據中「銷」很多的時候被當作sell,對生僻一些的用法機器翻譯現在還無法處理。
  • 微軟提出新型通用神經機器翻譯方法,挑戰低資源語言翻譯問題
    數百萬人使用在線翻譯系統和移動應用進行跨越語言障礙的交流。在近幾年深度學習的浪潮中,機器翻譯取得了快速進步。微軟研究院近期實現了機器翻譯的歷史性裡程碑——新聞文章中英翻譯達到人類水平。這一當前最優方法是一個神經機器翻譯(NMT)系統,該系統使用了數千萬新聞領域的平行句子作為訓練數據。
  • ACL論文 | 深度學習大神新作,神經網絡的自然語言翻譯應用
    Manning進行了關於神經機器翻譯(NMT)的講座。神經機器翻譯是一種簡單的新架構,可以讓機器學會翻譯。該方法雖然相對較新,已經顯示出了非常好的效果,在各種語言對上都實現了最頂尖的表現。神經網絡在自然語言處理方面,未來有巨大的應用潛力。
  • 搜狗機器翻譯團隊獲得 WMT 2017 中英機器翻譯冠軍
    共有 20 支團隊提交了中文-英文翻譯系統、15 支團隊提交了英文-中文翻譯系統。參賽隊伍包括美國的約翰霍普金斯大學(JHU)、俄勒岡州立大學、美國空軍研究實驗室;加拿大的加拿大國家研究院(NRC)、英國的愛丁堡大學、羅徹斯特大學;中國的中科院計算技術研究所、廈門大學等。Sogou NMT 在中文到英文翻譯任務中名列第一。
  • 如何評價Google神經機器翻譯(GNMT)系統?
    幾年前,Google開始使用循環神經網絡來直接學習一個輸入序列(如一種語言的一個句子)到一個輸出序列(另一種語言的同一個句子)的映射。其中基於短語的機器學習(PBMT)將輸入句子分解成詞和短語,然後對它們的大部分進行獨立翻譯,而神經網絡機器翻譯(NMT)則將整個輸入句子視作翻譯的基本單元。
  • 重磅| 谷歌神經機器翻譯再突破:實現高質量多語言翻譯和zero-shot...
    儘管我們目前在谷歌搜索、谷歌翻譯應用和網站上只有 8 種語言,但我們的目標是將神經機器翻譯擴展到所有 103 種語言,並讓你能隨時隨地都能接入到谷歌翻譯。除此之外,谷歌今天還宣布了提供機器學習 API 的公共雲服務 Google Cloud Platform,「能讓任何人都輕鬆地使用我們的機器學習技術」。
  • 馬雲爸爸「翻譯情未了」? 回顧阿里翻譯平臺的進擊之路!
    ,谷歌翻譯幾乎要霸佔整個機器翻譯市場時,阿里翻譯宣布已成功研發阿里雲PAI工具,基於阿里雲PAI可以將神經網絡翻譯訓練效率提升5倍,這將大大加速阿里翻譯平臺的建設。當時把阿里翻譯平臺定位為阿里巴巴的語言服務平臺,將瞄準人機結合模式,在語言服務領域進行更多創新。365翻譯的加入確實為阿里的跨境電商領域分擔了一些翻譯業務上的壓力。並且在機器翻譯領域,和電商相關的幾個主要語種中,其翻譯的準確率基本和谷歌翻譯持平。然而,阿里語言服務平臺的野心並不止於此。他們想藉助強大的人工翻譯團隊和電商大數據研發下一代基於神經網絡技術的翻譯平臺。
  • 多倫多大學在讀博士朱子寧:如何利用語言探針檢測深度神經模型性能...
    語言探針(linguistic probe)是最近比較流行的一種可以探測深度神經模型裡面編碼了哪些特徵的「診斷性分類器」算法,分類器效果的好壞直接體現深度模型包含信息的好壞,也就是模型性能的好壞。「探針」的選擇是對模型性能的解釋,因此如何選擇「探針」成為了一個難點。
  • 用飛槳做自然語言處理:神經網絡語言模型應用實例
    發展帶來巨大推動,是多個領域的關鍵部分,但另一方面,成也蕭何敗也蕭何,語言模型其實也限制了 NLP 發展,比如說在創新性生成式任務上,還有如何用語言模型獲得雙向信息。 但這種方法會有一個很大的問題,那就是前面提到的維度災難,而這裡要實現的神經網絡語言模型(Neural Network Language Model),便是用神經網絡構建語言模型,通過學習分布式詞表示(即詞向量)的方式解決了這個問題。
  • Facebook放了個大招,基於CNN的語言翻譯模型快9倍,同傳壓力山大了...
    人工翻譯已經遠遠不可能滿足當今世界所產生的海量信息流,那麼,是否能有一種快速而準確的技術決絕方案,能替代人類去完成不同語言間的轉換? 就在昨天,Facebook人工智慧研究中心(FAIR)發布了使用全新的卷積神經網絡(CNN)進行語言翻譯的研究結果。據悉,這種新方法能夠以現有的循環神經網絡系統9倍的速度進行翻譯,而且翻譯的準確性還會得到大幅的提高。
  • 專訪Kinect手語翻譯系統團隊:網狀手語圖模型是實現實時翻譯的關鍵
    中科院計算所陳熙霖、柴秀娟帶領的研究團隊在手語識別領域擁有深厚的研究積澱與成果。北京聯合大學特殊教育學院擁有豐富的手語數據資源用於採集與驗證。微軟亞洲研究院的研究方向與專長在此項目中有用武之地:周明的自然語言計算組擅長語言模型,童欣的網絡圖形團隊能夠實現手語合成,都是這個項目所需的核心技術。
  • 百度提出冷聚變方法:使用語言模型訓練Seq2Seq模型
    近日,百度研究院發表論文提出冷聚變(Cold Fusion)方法,即在 Seq2Seq 模型訓練過程中加入語言模型,實現更快地收斂、更好的泛化,以及僅需少量標註數據即可實現向新域的完全遷移。機器之心對這篇論文進行了介紹。
  • ...規模集成Transformer模型,阿里達摩院如何打造WMT 2018機器翻譯...
    阿里達摩院機器智能實驗室的陳博興博士和司羅教授向機器之心介紹了阿里在機器翻譯領域的布局應用,以及如何通過對標準的 Transformer 模型進行改進和優化,而獲得更為優秀的神經機器翻譯系統。最開始我們基於循環神經網絡構建神經機器翻譯的標準模型,後來我們考慮使用卷積神經網絡提升並行訓練效果,而去年穀歌等研究團隊更是提出不使用 CNN 和 RNN 抽取特徵的 Transformer。儘管 Transformer 在解碼速度和位置編碼等方面有一些缺點,但它仍然是當前效果最好的神經機器翻譯基本架構。