谷歌大腦提出「洗髮水」二階優化算法,Transformer訓練時間減少40%

2021-01-08 澎湃新聞

關注前沿科技 量子位

曉查 發自 凹非寺

量子位 報導 | 公眾號 QbitAI

機器學習的優化步驟,目前都是一階方法主導。

無論是SGD還是Adam,此類優化算法在都是計算損失函數的一階導數——梯度,然後按照某種規定的方式讓權重隨梯度下滑方向迭代。

其實二階梯度會有更好的特性,因為它是計算梯度的導數,能夠更快地找到最合適的下降方向和速度。

然而出於計算量和存儲成本的考慮,二階優化算法很少用到。

最近,谷歌大腦提出了一種新的二階預處理方法,帶來很大改進,優於SGD、Adam和AdaGrad等一階算法,縮短了神經網絡的訓練時間。

它在Transformer訓練任務中比任何一階方法都快得多,而且能達到相同甚至更高的精度。連Jeff Dean也不禁在Twitter上點讚。

「洗髮水」算法

這篇文章是對之前一種二階方法洗髮水算法(Shampoo algorithm)做的實用化改進。

為何叫「洗髮水算法」?其實是對此類算法的一種幽默稱呼。洗髮水的廣告詞一般是「搓揉、衝洗、重複」,表示簡單重複式的無限循環,最後導致洗髮水用盡(out of bottle)。

而這種算法用於機器學習優化,最早來自於本文通訊作者Yoram Singer在2018年被ICML收錄的一篇文章Shampoo: Preconditioned Stochastic Tensor Optimization。

洗髮水算法需要跟蹤2個預條件算子(Preconditioner)的統計數值Lt和Rt。

然後計算這2個預條件算子的四次根再求逆。將這兩個矩陣分別左乘和右乘梯度向量,迭代出t+1步的梯度再由以下公式得出:

上述過程像不像一種簡單重複,所以被作者自稱為「洗髮水」。

2018年的那篇論文更側重於理論解釋,然而就是如此簡單的「洗頭」步驟實際應用起來也會面臨諸多困難。

這一步中最大的計算量來自於Lt-1/4和Rt-1/4。計算這個兩個數需要用到代價高昂的奇異值分解。

實際上,四次逆根不僅可以用SVD方法算出,也可以用舒爾-牛頓法(Schur-Newton algorithm)算出,而且隨著矩陣維度的增大,後者節約的時間越來越可觀。

舒爾-牛頓法可以在普通CPU上計算,不必消耗GPU、TPU這類神經網絡加速器的計算資源。

但即使是這樣,計算矩陣根的逆仍然相當耗時。如果不解決這個問題,訓練速度就不可能提高。

所以作者使用了異步計算的方法,並使用了TensorFlow中的Lingvo來對訓練循環進行改進。

CPU負責收集和處理訓練數據以及輔助活動,例如檢查點和訓練狀態摘要。而在GPU、TPU等加速器運行訓練循環時通常處於空閒或低利用率狀態,並自動提供雙精度計算。

這使它們成為計算預條件算子的理想選擇,而不會增加訓練消耗的資源。

使用異步計算

他們在每一步中都計算所有張量的預條件算子,但是預處理後的梯度卻是每N步計算一次,並交由CPU處理。

這期間,GPU或TPU依然在計算,過去的預條件算子在訓練過程中會一直使用,直到獲得更新後的預訓練算子為止。

計算過程像流水線一樣,並且異步運行而不會阻塞訓練循環。結果是,洗髮水算法中最難計算的步驟幾乎沒有增加總的訓練時間。

僅有這些還不夠,作者對洗髮水算法又做了幾點改進,使它可以適應大型模型的訓練。包括解耦步長大小和方向、預處理大型張量還有將大型張量劃分成多個塊。

最高提速67%

在WMT』14英語到法語翻譯的Transformer訓練任務中,該算法實現了1.67倍的加速,將時間減少了40%。

洗髮水算法在和Adam或AdaGrad精度相同的情況下,只需後兩者實現了約一半的相同的精度AdaGrad或亞當許多步驟,而且對學習率的寬容度比AdaGrad高。

之前異步計算中的N是一個可調參數,決定了訓練的計算量,N越大,計算量越小。當然N也會對結果造成影響。我們需要在訓練過程的性能和結果的質量之間做出權衡。

實驗表明,這種方法可以承受多達1200個步驟的延遲,而不會造成任何明顯的質量損失。

洗髮水也可以用在圖像分類任務中。

作者還在ImageNet-2012數據集上訓練了ResNet-50模型,結果比帶動量的SGD收斂更快,但是訓練損失與SGD相近,但是在測試集上的效果不如後者。

至於在泛化能力上的劣勢,洗髮水算法還有待進一步的改進。

論文地址:

https://arxiv.org/abs/2002.09018

https://arxiv.org/abs/1802.09568

作者系網易新聞·網易號「各有態度」籤約作者

— 完 —

如何關注、學習、用好人工智慧?

每個工作日,量子位AI內參精選全球科技和研究最新動態,匯總新技術、新產品和新應用,梳理當日最熱行業趨勢和政策,搜索有價值的論文、教程、研究等。

同時,AI內參群為大家提供了交流和分享的平臺,更好地滿足大家獲取AI資訊、學習AI技術的需求。掃碼即可訂閱:

了解AI發展現狀,抓住行業發展機遇

AI社群 | 與優秀的人交流

量子位 QbitAI · 頭條號籤約作者

վ'ᴗ' ի 追蹤AI技術和產品新動態

喜歡就點「在看」吧 !

原標題:《谷歌大腦提出「洗髮水」二階優化算法,Transformer訓練時間減少40%,Jeff Dean點讚》

閱讀原文

相關焦點

  • 二階梯度優化新崛起,超越 Adam,Transformer 只需一半迭代量
    然而在谷歌大腦與普林斯頓大學等研究者的努力下,二階梯度優化終於在實戰大模型上展現出獨特的優勢。研究者表示,為了縮短理論和實際優化效果之間的差距,該論文提出了一種二階優化的概念性驗證,並通過一系列重要的算法與數值計算提升,證明它在實際深度模型中能有非常大的提升。
  • 76分鐘訓練BERT!谷歌大腦新型優化器LAMB加速大批量訓練
    近日,來自谷歌大腦的研究者提出了一種新型優化器 LAMB,有效降低 BERT 預訓練時間,76 分鐘即可完成 BERT 預訓練!儘管 BERT效果驚人,但它所需的計算量非常大,原作者在論文中也表示每次只能預測 15% 的詞,因此模型收斂得非常慢。如果我們想保留這種 Mask 機制,那麼就需要尋找另一種加速方法了。
  • 1.6萬億參數的語言模型:谷歌大腦提出Switch Transformer,預訓練...
    在 Switch Transformer 的設計中,它們簡化了 MoE 的路由算法(routing algorithm),設計了直觀的改進模型,新模型的通信成本和計算成本都大大降低。此外,他們提出的訓練技術還提高了訓練的穩定性,首次表明大型稀疏模型也可以用低精度(bfloat16)進行訓練。
  • 科學家破解了谷歌的量子優化算法
    谷歌一直在爭相開發量子增強型的處理器,這種處理器使用量子力學效應來增進數據處理速度。谷歌為此的短期目標是已經設計出了一種新型的量子增強算法,可以在有真實噪聲的情況下運行。所謂的量子近似優化算法(Quantum Approximate Optimisation Algorithm,簡稱 QAOA)是谷歌目前開發的抗噪聲量子增強算法的基礎。
  • 比可微架構搜索DARTS快10倍,第四範式提出優化NAS算法
    在本文中,我們提出了一種基於近端迭代(NASP)的高效 NAS 方法。與以往的工作不同,NASP 將搜索過程重新定義為具有離散約束的優化問題和模型複雜度的正則化器。由於新的目標是難以解決的,我們進一步提出了一種高效的算法,由近端啟發法進行優化。
  • 聽說你了解深度學習最常用的學習算法:Adam優化算法?
    By蔣思源2017年7月12日  深度學習常常需要大量的時間和機算資源進行訓練,這也是困擾深度學習算法開發的重大原因。雖然我們可以採用分布式並行訓練加速模型的學習,但所需的計算資源並沒有絲毫減少。而唯有需要資源更少、令模型收斂更快的最優化算法,才能從根本上加速機器的學習速度和效果,Adam算法正為此而生!
  • 谷歌大腦重磅研究:快速可微分排序算法,速度快出一個數量級
    現在,谷歌大腦針對這一問題,提出了一種快速可微分排序算法,並且,時間複雜度達到了O(nlogn),空間複雜度達為O(n)。速度比現有方法快出一個數量級!代碼的PyTorch、TensorFlow和JAX版本即將開源。
  • 谷歌大腦提出AutoML-Zero,只會數學運算就能找到AI算法|開源
    接著谷歌又推出了AlphaGo Zero,只讓AI知道圍棋規則,從零開始學下棋,結果再次登上棋藝頂峰。AI既然能從零學習圍棋,是否可以從零開始摸索機器學習算法?當然可以,谷歌大腦團隊最新的研究成果已經做到了。谷歌將這種技術稱之為AutoML-Zero,意為「從零開始的自動機器學習」,已經在GitHub開源,並在Arxiv上提交了論文。
  • 谷歌AutoML新進展,進化算法加持,僅用數學運算自動找出ML算法
    機器之心報導參與:魔王、杜偉、小舟僅使用基礎數學運算就能自動搜索機器學習算法?谷歌 Quoc V. Le 等人提出了 AutoML-Zero 方法。2018 年 3 月,谷歌大腦團隊即進行相關研究,使用進化的 AutoML 來發現神經網絡架構。如今,谷歌將這項研究進一步擴展,證明從零開始進化 ML 算法是有可能的。相關研究被 ICML 2020 接收,這項研究出自谷歌大腦團隊 Quoc V. Le 等學者之手。
  • 從梯度下降到擬牛頓法:詳解訓練神經網絡的五大學習算法
    我們很容易地將神經網絡的權重組合成一個 n 維權重向量 w,而訓練損失就是以這些權重為變量的函數。下圖描述了損失函數 f(w)。如上圖所示,點 w* 是訓練損失函數的極小值點。在任意點 A,損失函數能分別對權重求一階偏導數和二階偏導數。
  • 一文看懂各種神經網絡優化算法:從梯度下降到Adam方法
    這篇文章介紹了不同優化算法之間的主要區別,以及如何選擇最佳的優化方法。 什麼是優化算法? 優化算法的功能,是通過改善訓練方式,來最小化(或最大化)損失函數E(x)。 模型內部有些參數,是用來計算測試集中目標值Y的真實值和預測值的偏差程度的,基於這些參數,就形成了損失函數E(x)。
  • 訓練神經網絡的五大算法
    在空間內任意選擇一個點A,我們都能計算得到損失函數的一階、二階導數。一階導數可以表示為一個向量: ᐁif(w) = df/dwi (i = 1,…,n) 同樣的,損失函數的二階導數可以表示為海森矩陣( Hessian Matrix ): Hi,jf(w) = d2f/dwi·dwj (i,j = 1,…,n) 多變量的連續可微分函數的求解問題一直被人們廣泛地研究。
  • 谷歌大腦提出簡化稀疏架構,預訓練速度可達T5的7倍
    目前,MoE 模型已在機器翻譯領域取得了令人矚目的成就,但由於模型複雜度高、通信成本高、訓練不夠穩定,其廣泛應用受到了一定的阻礙。為了解決這些問題,Google Brain 的研究者提出了 Switch Transformer。
  • 浪潮AI伺服器大幅提升NLP模型Transformer訓練性能
    性能數據顯示,相比同類伺服器,浪潮AI伺服器NF5488M5大幅提升了Transformer的訓練性能,GLUE基準訓練至80.4%的時間相比同類產品大幅減少67%。Transformer被視為是NLP的經典模型,2017年由谷歌提出,其利用自注意力(self-attention)機制實現快速並行,並且可以增加到非常深的深度,充分發掘DNN模型的特性,提升模型準確率。但是Transformer模型訓練是一大難題,因為其參數規模達到數億,對計算力的需求很大。
  • 直接對梯度下手,阿里提出新優化技巧,一行代碼即可改善現有優化器
    機器之心編輯部優化技術何其多也!比如批歸一化、權重標準化……但現有的優化方法大多基於激活或權重執行,最近阿里達摩院的研究者另闢蹊徑,直接對梯度下手,提出全新的梯度中心化方法。只需一行代碼即可嵌入現有的 DNN 優化器中,還可以直接對預訓練模型進行微調。優化技術對於深度神經網絡 (DNN) 的高效訓練至關重要。
  • Transformer生成論文摘要方法已出
    如果能夠將相關算法應用在論文寫作上,是不是摘要、引言、相關工作、結論部分都可以省很多功夫了?但是,正是因為現有的相關算法不夠成熟,能夠實際應用在生產中的文檔摘要算法不多,而且現有的算法普遍只能生成短的、描述事實的文本(在一些新聞平臺有所應用)。要將帶有邏輯結構的長文本進行抽取和摘要化處理,這樣的算法並不常見。
  • 谷歌和OpenAI新研究:如何使用達爾文進化論輔助設計人工智慧算法?
    人工神經網絡是為了複製生物學習單個概念的過程,而神經進化則是試圖再現構建大腦的部分過程——即適者(強大的或聰明的)生存的過程。儘管神經進化在 20 世紀 80 年代左右就已被提出,但隨著研究者在機器學習的不同視角上對其進行研究,它也正獲得新的關注。
  • ...nlogn)時間、O(n)空間複雜度可微分排序算法,速度快出一個數量級
    現在,谷歌大腦針對這一問題,提出了一種快速可微分排序算法,並且,時間複雜度達到了O(nlogn),空間複雜度達為O(n)。速度比現有方法快出一個數量級!代碼的PyTorch、TensorFlow和JAX版本即將開源。
  • 技術| 深度解讀最流行的優化算法:梯度下降
    本文旨在讓你對不同的優化梯度下降法的算法有一個直觀認識,以幫助你使用這些算法。我們首先會考察梯度下降法的各種變體,然後會簡要地總結在訓練(神經網絡或是機器學習算法)的過程中可能遇到的挑戰。我們首先會考察梯度下降法的各種變體,然後會簡要地總結在訓練(神經網絡或是機器學習算法)的過程中可能遇到的挑戰。接著,我們將會討論一些最常見的優化算法,研究它們的解決這些挑戰的動機及推導出更新規律(update rules)的過程。我們還會簡要探討一下,在平行計算或是分布式處理情況下優化梯度下降法的算法和架構。最後,我們會考慮一下其他有助於優化梯度下降法的策略。
  • 告別調參煉丹,谷歌「權重無關」神經網絡開源了!
    新智元報導 來源:Google AI 作者:Adam Gaier&David Ha 編輯:小芹 【新智元導讀】谷歌大腦備受關注的