32分鐘訓練神經機器翻譯,速度提升45倍

2020-12-25 機器之心Pro

選自Facebook

作者:MICHAEL AULI、MYLE OTT、SERGEY EDUNOV

機器之心編譯

深度模型的訓練時間通常對研究者而言都是很大的挑戰,我們需要花數小時甚至數天才能知道某個小改進到底好不好。然而如果我們從一開始就考慮降低模型訓練時間,那麼很多概念都能迅速驗證。在 Facebook 開發者的試驗中,他們採用了低精度和大批量等一系列加速訓練方法,並成功地將需要 24 小時訓練的 NMT 降低到 32 分鐘。該項目相關的分布式訓練代碼已開源。

項目地址:https://github.com/pytorch/fairseq

我們想讓用戶用自己喜歡的語言體驗我們的產品,同時與世界各地的人們建立聯繫。為此,我們使用神經機器學習(NMT)自動翻譯帖子和內容中的文本。我們之前關於這一課題的研究 fairseq 已經開源,這是一個序列到序列的學習庫,可供任何人訓練 NMT 模型,完成自動摘要或其他文本生成任務。

隨著 NMT 模型在從大規模單語數據(只有一種語言的數據)中的學習越來越成功,訓練速度變得越來越重要。為了適應這樣的發展,我們必須想辦法大大減少訓練時間。直到最近,NMT 模型的這種訓練在單臺機器上還需要數周,對於快速實驗和部署來說,這一速度實在太慢。

由於在精度和訓練設置上做了幾項改變,我們在短短 32 分鐘內就能訓練一個強大的 NMT 模型(參見《Scaling Neural Machine Translation》),速度是原來的 45 倍(原來需要 24 小時)。在之後的一項研究《Understanding Back-Translation at Scale》中,我們展示了這一速度大幅提升的訓練設置如何讓我們利用單語文本訓練準確得多的模型。

《Scaling Neural Machine Translation》:https://arxiv.org/abs/1806.00187《Understanding Back-Translation at Scale》(EMNLP 2018):https://arxiv.org/abs/1808.09381

加速訓練

我們首先在一臺配備 8 塊 Volta GPU 的英偉達 DGX-1 機器上把模型的訓練時間從近 24 小時縮減至不到 5 小時。神經網絡包含數百萬個參數,這些參數在訓練過程中會被調整並通常以 32 位浮點精度存儲。然後,我們把訓練的精度從 32 位轉換為 16 位,這樣不僅能減少 GPU 內存佔用,還讓我們能夠使用英偉達最新 Volta GPU 架構提供的經過高度優化的 Tensor Core。降低了精度(16 位)的訓練有時會由於浮點「溢出」而導致模型質量降低。在本研究中,我們實施了一個已知的自動監控和防止溢出程序,並將訓練時間從近 24 小時減至 8.25 小時,速度提升 2.9 倍而沒有降低模型質量。

接下來,我們通過所謂的累積更新,延遲了模型更新來減少 GPU 之間的通信。通過同步訓練模型,從而每個 GPU 可以維持一個完整、相同的模型副本,但是會處理訓練數據的不同部分。處理時需要反向傳播——在網絡上被分為 forward pass 和 backward pass(前向/反向),以計算訓練模型所需的統計量。在處理每個小批量(mini-batch),GPU 會同步地相互交流結果(梯度)。這樣可能導致效率低下:首先,在 GPU 之間發送數據會消耗時間;其次,處理較快的工作站必須等待速度較慢的工作站(即所謂散兵遊勇),然後訓練才能繼續。

後者對於文本相關模型來說是一大挑戰,不同的句子長度會使這個問題更加嚴重。我們對這兩個問題的解決方案是在工作線程互相通信之前,讓每個工作線程處理並累積多個小批量的結果,從而延遲同步點。這將訓練時間縮減至 7.5 小時,且無損模型質量。

累積更新還能增加有效的批大小,即每一個訓練步所使用的數據量。在我們的研究設置中,批大小增大為 16 倍。這使得學習率可以翻倍,訓練時間減少到 5.2 個小時,比原始系統實現了 4.6 倍的加速。

圖:通過 (i) 減少工作站之間的通信、(ii) 減少不同 GPU 的工作負載變化從而節約閒置時間,累加多個前向/反向步驟的梯度,實現訓練加速。

最後,我們使用 16 位浮點數來進一步提高每一個工作站的批大小,從而利用釋放出的額外 GPU 內存。通過將每個工作站的批大小從 3.5K 單詞提升到 5K 單詞,該研究將總訓練時間減少到 4.9 個小時,對原始系統實現了 4.9 倍的加速。

擴展

我們對單個機器訓練的優化還可應用於在多個機器上進行並行訓練(即分布式訓練)。我們將訓練從單個 DGX-1 機器擴展到 16 個機器(即 128 塊 GPU),發現可以在 37 分鐘內訓練完成同樣的模型,與原始的單機器設置相比,速度提升了 38.6 倍。

在多個機器上訓練時,另一個優化是同時發生 GPU 通信和反向傳播。在反向傳播之後,我們將所有信息傳達給其他工作站。典型情況下,反向傳播和通信按順序執行,但是我們通過儘可能並行 GPU 通信和反向傳播而節省時間。具體來說,我們在反向傳播步驟結束後立刻開始在多個工作站之間同步梯度。這樣 GPU 通信和反向傳播發生就實現了並行,這節省了 14% 的訓練時間,且使總訓練時間從將近 24 個小時下降到 32 分鐘,速度提升了 44.7 倍。

圖:反向傳播與梯度同步的並行示意圖。

圖:每次改進後訓練總時間的變化情況。

在更多未翻譯數據上訓練

加速訓練允許我們在更大數據集上訓練模型。一般而言,訓練 NMT 模型需要原文與參考譯文對應的成對文本,例如雙語數據等。但是,雙語數據相對於網絡上或其它地方常見的大量單語數據要有限地多。在第二篇論文《Understanding Back-Translation at Scale》中,我們展示了如何通過僅提供我們想要翻譯的語言的文本來提升模型的翻譯性能,以及利用大量的此類數據可以大幅提升模型準確度。

通過單語數據提升 NMT 模型最高效的方法之一是反向翻譯(back-translation)。如果我們的目標是訓練一個英語到德語的翻譯模型,我們可以首先訓練一個從德語翻譯到英語的模型並利用該模型翻譯所有的單語德語數據,然後在已有的和新的數據上簡單地訓練一個英語到德語的最終模型。我們的論文顯示,數據如何被翻譯是非常重要的,通過採樣故意不總是選擇最好的翻譯同樣也是非常重要的。

圖:演示反向翻譯的動畫

如果我們把 2.26 億個反向翻譯的句子添加到現有的包含 500 萬個句子的訓練數據中,我們就能大幅提升翻譯質量。下圖(左)顯示了這一系統在標準 WMT』14 英-德基準測試集上的準確率(fairseq & 單語數據)。該系統可以在 16 個 DGX-1 機器上經過 22.5 小時訓練而成。圖中還顯示了 DeepL 的準確率,這是一個依賴於高質量人工翻譯的專業翻譯服務,此前該服務在該基準測試上表現最佳。

快速翻譯

我們還提高了 fairseq 模型的翻譯速度。具體來說,我們實現了很巧妙的高速緩存,或從計算和批處理中移除完成句子的幾個單詞而不是句子。這提高了大約 60% 的速度。下圖展示了 fairseq 和其它工具集的對比。只從 32 位浮點數變到 16 位浮點數就能提升 40% 的速度。

圖:在標準 WMT』14 英語-德語基準測試集上使用大型 Transformer 模型和 V100GPU 得到的翻譯速度。

未來計劃

擴展和提高自動化翻譯技術仍將是我們工作的重點。為了讓該研究項目儘快成長起來,我們共享了分布式訓練的代碼,並將其作為我們的 fairseq 開源項目的一部分,從而使其他研究者也可以輕鬆地以更快的速度訓練 NMT 模型。進行分布式訓練僅需稍微改動訓練命令。

實現更快的 NMT 訓練是一項激動人心的發現。大幅度地降低訓練時間可以加快實驗周轉,使我們能更輕鬆地在更好的模型中做研究。把無標籤數據應用到翻譯之外的問題(如問答或自動摘要)上也是很不錯的發現。

原文連結:https://code.fb.com/ai-research/scaling-neural-machine-translation-to-bigger-data-sets-with-faster-training-and-inference/

本文為機器之心編譯,轉載請聯繫本公眾號獲得授權

相關焦點

  • Caffe2新增RNN支持,Facebook全面轉向神經機器翻譯
    在 Caffe2 RNN 中,最突出的亮點是幾乎零開銷的 RNN 引擎,它不僅可執行任意 RNN 單元且難以置信地靈活,還可以進行束搜索;Caffe2 RNN 還允許每塊 GPU 使用大批量數據進行訓練,並實現了所謂的靜態 RNN。通過 Caffe2 RNN,Facebook 的神經機器翻譯的效率提升高達 2.5x,Facebook 全部的機器翻譯模型從基於短語的系統轉換為所有語言的神經模型。
  • ACL 2018 | TA-NMT:利用大語種語料,提升小語種神經機器翻譯能力
    與大語種豐富的語料數據相比,小語種機器翻譯面臨的主要挑戰是語料的稀疏性問題。為了更好地解決這一問題,微軟亞洲研究院自然語言計算組提出了一個呈三角結構的神經機器翻譯模型TA-NMT,利用大語種的豐富語料來提升小語種機器翻譯的能力。近年來,神經機器翻譯發展迅速,在諸如英法、英德、中英等許多大語種(Rich Language)翻譯任務上均取得了突破性成果。
  • 什麼是神經機器翻譯(NMT)?
    機器翻譯翻譯行業不斷發展以滿足客戶的需求,神經機器翻譯(NMT)是這一進程的最新一步。由於能夠一次翻譯整個句子,NMT的輸出可以類似於人工翻譯。隨著越來越多的企業走向全球化,NMT可能會對翻譯行業產生巨大影響。什麼是神經機器翻譯?NMT使用基於神經網絡的技術來實現更多上下文精確的翻譯,而不是一次翻譯一個單詞的破碎句子。使用大型人工神經網絡計算單詞序列的概率,NMT將完整的句子放入一個集成模型中。
  • F8 2017 | 技術負責人為你解析 Facebook 神經機器翻譯
    首先,Necip Fazil Ayan 表示,神經機器翻譯為 Facebook 帶來翻譯質量的大幅提升:精確度(是否清楚表達了原句的意思)提升 20%,通順程度(翻譯語句聽起來是否正常)提升 24%。基於短語架構機器翻譯的缺陷:再來看一看神經網絡機器翻譯系統。神經機器翻譯系統會考慮原句的整個語境,以及當次翻譯過程中此前翻譯出的所有內容。它的優點有:支持大段的語序重排(long distance reordering)連續、豐富的表達。
  • Facebook展示了如何讓機器翻譯速度變快,同時又能擴展應用的方法
    直到目前,在一臺機器上訓練這種類型的NMT模型都需要好幾周時間,這種速度顯然比較慢。 現在,經過對模型精確度和訓練設置的多種改變,我們可以在32分鐘內訓練一個強大的NMT模型,速度比之前快了45倍。論文地址:arxiv.org/abs/1808.09381
  • 史丹福大學 NLP 組開放神經機器翻譯代碼庫
    在這篇文章中,他們還放出了在多種翻譯任務上(比如英德翻譯和英語-捷克語翻譯)實現了當前最佳結果的代碼庫(codebase)。除此之外,「為了鼓勵再現和增加透明」,他們還放出了他們用於訓練模型的處理過的數據以及可以通過他們的代碼庫使用的預訓練好的模型。發布地址:http://nlp.stanford.edu/projects/nmt/
  • 神經機器翻譯的直觀解釋 | 留言送書
    來源 | Towards Data Science作者 | Renu Khandelwal 編譯 | VK什麼是神經機器翻譯?神經機器翻譯是一種將一種語言翻譯成另一種語言的技術。一個例子是把英語轉換成印地語。讓我們想想,如果你在一個印度村莊,那裡的大多數人都不懂英語。你打算毫不費力地與村民溝通。在這種情況下,你可以使用神經機器翻譯。
  • F82017|技術負責人為你解析Facebook神經機器翻譯
    首先,Necip Fazil Ayan 表示,神經機器翻譯為 Facebook 帶來翻譯質量的大幅提升:精確度(是否清楚表達了原句的意思)提升 20%,通順程度(翻譯語句聽起來是否正常)提升 24%。這是兩代架構的翻譯結果對比(土耳其語到英語)左邊是基於短語的機器翻譯,大多數詞語的意思是對的,但順序不對勁。
  • 【重磅】谷歌發布 Zero-Shot 神經機器翻譯系統:AI 巴別塔有望成真
    這種新的模型體積不僅與多語言翻譯模型一樣,參數相同,而且速度更快、質量更高。不僅如此,系統還實現「零數據翻譯」,也即能夠在從來沒有見過的語言之間進行翻譯。這意味著傳說中的「巴別塔」有望成真。神經網絡改革了許多領域,我們確信可以進一步提高翻譯質量,但這樣做意味著重新思考谷歌翻譯背後的技術。今年 9 月,谷歌翻譯改為啟用谷歌神經機器翻譯(GNMT)的新系統,這是一個端到端的學習框架,可以從數百萬個示例中學習,並在翻譯質量方面有顯著提升。不過,雖然啟用 GNMT 的幾種語言翻譯質量得到了提升,但將其擴展到所有 103 種穀歌翻譯支持的語種,卻是一個重大的挑戰。
  • 面向神經機器翻譯的篇章級單語修正模型
    《面向神經機器翻譯的篇章級單語修正模型》[1]是EMNLP2019上一篇關於篇章級神經機器翻譯的工作。針對篇章級雙語數據稀缺的問題,這篇文章探討了如何利用篇章級單語數據來提升最終性能,提出了一種基於目標端單語的篇章級修正模型(DocRepair),用來修正傳統的句子級翻譯結果。
  • 一行代碼讓訓練速度提升2倍,飛槳自動混合精度技術詳解
    但是在深度學習領域,模型的參數、數據集的規模等等動輒就是以億為單位,甚至更大,因此當模型訓練成功之時,放一首張靚穎的「終於等到你」作為背景音樂實在是太應景了。那如果現在向你推薦一款神器,可以實現訓練速度翻倍,訪存效率翻倍,你心動嗎?
  • 神經機器翻譯工具 將首先用於中翻英
    據新華社消息 世界智慧財產權組織10月31日在日內瓦表示,中國國際專利申請量預計兩年內將居全球次席,因此該組織推出的最新基於人工智慧的神經機器翻譯工具將首先用在中文專利文檔轉化為英文的服務上。 神經機器翻譯是一個新興技術,建立在龐大的、能夠「學習」之前翻譯過的句子的神經網絡模型上。與之前「基於短語」的方法相比,神經機器翻譯可產生更為自然的語序,並在差異性較大的兩種語言的翻譯中,如日文-英文或中文-英文中有顯著進步。
  • 號稱要砸翻譯飯碗,神經機器翻譯哪家強?
    Google新發布了神經機器翻譯(GNMT:Google Neural Machine Translation)系統,並稱該系統使用了當前最先進的訓練技術,能夠實現到當下機器翻譯質量上最大的提升。有從事翻譯職業的網友甚至這樣形容:作為翻譯看到這個新聞的時候,我理解了18世紀紡織工人看到蒸汽機時的憂慮與恐懼。
  • 神經機器翻譯的編碼-解碼架構有了新進展, 具體要怎麼配置?
    翻譯/  崔躍輝、葉倚青校對/  葉倚青用於循環神經網絡的編碼-解碼架構,在標準機器翻譯基準上取得了最新的成果,並被用於工業翻譯服務的核心。該模型很簡單,但是考慮到訓練所需的大量數據,以及調整模型中無數的設計方案,想要獲得最佳的性能是非常困難的。
  • 谷歌翻譯預言世界末日 神經機器翻譯或是故障原因
    當被要求將「dog dog dog dog dog dog dog dog dog」這個短語從夏威夷語翻譯成英語時,支持谷歌翻譯的人工智慧開始產生關於世界末日的荒謬警告。這個無意義的句子在翻譯時,會提及對世界末日和耶穌基督第二次降臨。一旦發現故障,谷歌翻譯的粉絲很快就會在社交媒體上大量使用這個短語,模仿人工智慧引發的怪異結果。
  • 三項斜坡訓練 快速提升跑者速度力量和耐力
    網易體育6月11日報導:斜坡訓練能給跑者帶來諸多益處,改善跑步效率,讓關節和結締組織適應更大強度的訓練,比在平地上跑步的功率更高,同時克服重力增強跑者力量。
  • ...訓練速度可提升數倍,如何用「稀疏學習」從頭開始訓練稀疏網絡?
    雷鋒網 AI 科技評論:《從頭開始訓練稀疏網絡:在不損失性能的情況下加速訓練速度》這篇博文介紹的是我和 Luke Zettlemoyer 通過在整個訓練期間保持神經網絡的稀疏性從而加速訓練速度的一項工作。這項工作證明,通過完善稀疏動量算法,可以在短短一次訓練中用稀疏隨機權值來初始化一個神經網絡,並使其達到密集網絡的性能水平。
  • 單機訓練速度提升 640 倍!獨家解讀快手商業廣告模型 GPU 訓練平臺...
    然而隨著模型從Logistic Regression到深度神經網絡的演化以及硬體的發展,基於CPU的訓練系統或許已經不再是最合適的解決方案了。本著不盲從、不抄襲、堅持原創技術路線的原則,快手西雅圖FeDA智能決策實驗室推出了名為"Persia"的基於GPU的廣告推薦訓練系統。以往需要50臺CPU機器訓練20小時的系統,如今只需要一臺普通的GPU機器在一到兩小時完成,單機效率提升高達640倍。
  • Google 翻譯出現宗教話語,可能是因為用了聖經訓練模型導致
    哈佛大學助理教授,研究自然語言處理和計算機翻譯的 Andrew Rush 則不認為會是有人惡意搗亂,因為 Google 翻譯內置的過濾器會捕捉和屏蔽這類型的修改。他表示,奇怪翻譯出現更有可能的原因和 2 年前 Google 翻譯技術的改變有關, Google 翻譯目前使用了一種被稱為「神經機器翻譯」的技術。
  • 資源| 史丹福大學NLP組開放神經機器翻譯代碼庫(附論文)
    選自斯坦福機器之心編譯參與:吳攀、杜夏德近日,史丹福大學自然語言處理組(Stanford NLP)發布了一篇文章,總結了該研究組在神經機器翻譯(NMT)上的研究信息。在這篇文章中,他們還放出了在多種翻譯任務上(比如英德翻譯和英語-捷克語翻譯)實現了當前最佳結果的代碼庫(codebase)。