1.6萬億參數的語言模型:谷歌大腦提出Switch Transformer,預訓練...

2021-01-15 澎湃新聞

機器之心報導

編輯:魔王、杜偉、張倩

剛剛,Google Brain 高級研究科學家 Barret Zoph 發帖表示,他們設計了一個名叫「Switch Transformer」的簡化稀疏架構,可以將語言模型的參數量擴展至 1.6 萬億(GPT-3 是 1750 億)。在計算資源相同的情況下,Switch Transformer 的訓練速度可以達到 T5 模型的 4-7 倍。

在深度學習領域,模型通常會對所有輸入重用相同的參數。但 Mixture of Experts (MoE,混合專家) 模型是個例外,它們會為每個輸入的例子選擇不同的參數,結果得到一個稀疏激活模型——雖然參數量驚人,但計算成本恆定。

目前,MoE 模型已在機器翻譯領域取得了令人矚目的成就,但由於模型複雜度高、通信成本高、訓練不夠穩定,其廣泛應用受到了一定的阻礙。

為了解決這些問題,Google Brain 的研究者提出了 Switch Transformer。在 Switch Transformer 的設計中,它們簡化了 MoE 的路由算法(routing algorithm),設計了直觀的改進模型,新模型的通信成本和計算成本都大大降低。此外,他們提出的訓練技術還提高了訓練的穩定性,首次表明大型稀疏模型也可以用低精度(bfloat16)進行訓練。

論文連結:https://arxiv.org/pdf/2101.03961.pdf

代碼連結:https://github.com/tensorflow/mesh/blob/master/mesh_tensorflow/transformer/moe.py

研究者還將新模型與 T5-Base 和 T5-Large 進行了對比,結果表明,在相同的計算資源下,新模型實現了最高 7 倍的預訓練速度提升。這一改進還可以擴展至多語言設置中,在所有的 101 種語言中都測到了新模型相對於 mT5-Base 版本的性能提升。

最後,研究者在 Colossal Clean Crawled Corpus 上進行預訓練,將語言模型的參數量提升至上萬億,且相比 T5-XXL 模型實現了 4 倍加速。

研究者還表示,雖然這項工作著眼於規模,但它也表明,Switch Transformer 架構不僅在具備超級計算機的環境下具有優勢,在只有幾個計算核心的計算機上也是有效的。此外,研究者設計的大型稀疏模型可以被蒸餾為一個小而稠密的版本,同時還能保留稀疏模型質量提升的 30%。

Switch Transformer 的設計原理

Switch Transformer 的主要設計原則是,以一種簡單且計算高效的方式最大化 Transformer 模型的參數量。Kaplan 等人(2020)已經對擴展的效益進行了詳盡的研究,揭示了隨模型、數據集大小以及計算預算變化的冪定律縮放。重要的是,該研究提倡在相對較少數據上訓練大型模型,將其作為計算最優方法。

基於這些,研究者在增加參數量的同時保持每個示例的 FLOP 不變。他們假設參數量與執行的總計算量無關,是可以單獨縮放的重要組件。所以,研究者通過設計一個稀疏激活的模型來實現這一目標,該模型能夠高效地利用 GPU 和 TPU 等為稠密矩陣乘法設計的硬體。

在分布式訓練設置中,模型的稀疏激活層在不同設備上分配唯一的權重。所以,模型權重隨設備數量的增加而增加,同時在每個設備上保持可管理的內存和計算空間。

Switch Transformer 的編碼器塊如下圖 2 所示:

簡化稀疏路由

Shazeer 等人(2017)提出了一個自然語言 MoE 層,它以 token 表徵 x 為輸入,然後將其發送給最堅定的 top-k 專家(從 N 個專家組成的 {E_i(x)} ^N_i=1 集合中選出)。他們假設將 token 表徵發送給 k>1 個專家是必要的,這樣可以使 routing 函數具備有意義的梯度。他們認為如果沒有對比至少兩個專家的能力,則無法學習路由。

與這些想法不同,谷歌大腦這項研究採用簡化策略,只將 token 表徵發送給單個專家。研究表明,這種簡化策略保持了模型質量,降低了路由計算,並且性能更好。研究者將這種 k=1 的策略稱為 Switch 層。

下圖 3 展示了具有不同專家容量因子(expert capacity factor)的路由示例:

高效稀疏路由

研究者使用了 Mesh-Tensorflow 庫 (MTF),它具有類似於 TensorFlow 的語義和 API,可促進高效分布式數據和模型並行架構。研究者在設計模型時考慮到了 TPU,它需要靜態大小。

分布式 Switch Transformer 實現:所有張量形狀在編譯時均得到靜態確定,但由於訓練和推斷過程中的路由決策,計算是動態的。鑑於此,一個重要的技術難題出現了:如何設置專家容量?

專家容量(每個專家計算的 token 數量)的計算方式為:每個批次的 token 數量除以專家數量,再乘以容量因子。如公式(3)所示:

如果將太多 token 發送給一個專家(下文稱為「丟棄的 token」),則會跳過計算,token 表徵通過殘差連接直接傳遞到下層。但增加專家容量也不是沒有缺點,數值太高將導致計算和內存浪費。這當著的權衡如上圖 3 所示。

實證研究發現,將丟棄的 token 比例保持在較低水平對於稀疏專家模型的擴展很重要。設計決策對模型質量和速度的影響參見下表 1。

Switch Transformer

研究者首先在 Colossal Clean Crawled Corpus (C4) 數據集上對 Switch Transformer 進行了預訓練測試,使用了掩蔽語言建模任務。在預訓練設置中,他們遵循 Raffel 等人(2019)確定的最優方案,去掉了 15% 的 token,然後使用單個 sentinel token 來替代掩蔽序列。為了比較模型性能,研究者提供了負對數困惑度的結果。

Switch Transformer 與 MoE Transformer 的比較結果如下表 1 所示。結果表明,Switch Transformer 在速度 - 質量(speed-quality)基礎上優於精心調整的稠密模型和 MoE Transformer,並在固定計算量和掛鍾時間情況下取得了最佳結果;Switch Transformer 的計算佔用空間比 MoE Transformer 小;Switch Transformer 在低容量因子(1.0, 1.25)下表現更好。

提升訓練和微調的技巧

與原版 Transformer 模型相比,稀疏專家模型在訓練時可能更加困難。所有這些層中的 hard-swithing(路由)決策都可能導致模型的不穩定。此外,像 bfloat16 這樣的低精度格式可能加劇 router 的 softmax 計算問題。研究者採取了以下幾種技巧來克服訓練困難,並實現穩定和可擴展的訓練。

對大型稀疏模型使用可選擇行精度(Selective precision with large sparse models)

為實現穩定性使用更小的參數初始化(Smaller parameter initialization for stability)

正則化大型稀疏模型(Regularizing large sparse models)

預訓練可擴展性

在預訓練期間,研究者對 Switch Transformer 的可擴展性進行了研究。在此過程中,他們考慮了一個算力和數據都不受限制的機制。為了避免數據受限,研究者使用了大型 C4 資料庫,裡面包含 180B 的目標 token。在觀察到收益遞減之前,他們一直進行訓練。

專家的數量是擴展模型最有效的維度。增加專家的數量幾乎不會改變計算成本,因為模型只為每個 token 選擇一個專家,這與專家的總體數量無關。router 必須基於更多的專家計算概率分布,但這是一個輕量級的計算成本 O(d_model × num experts)。其中,d_model 是層與層之間所傳遞的 token 的嵌入維度。在這一部分,研究者以固定的計算成本考慮基於步數和時間的可伸縮性。

基於步數的可擴展性

下圖 4 展示了多個模型在訓練步數恆定、專家數量增加時表現出的可擴展性提升情況。從中可以觀察到一個趨勢:在保持每個 token 的 FLOPS 不變時,擁有更多的參數(專家)可以提高訓練速度。

基於時間的可擴展性

如上圖 4 所示,隨著專家數量的增加,模型的性能會不斷提升。雖然模型的每個 token 擁有與基線近乎相同的 FLOPS,但 Switch Transformers 會產生額外的跨設備通信成本,路由機制也會帶來額外的計算開銷。因此,在基於步數的設置中觀察到的樣本效率提升未必能轉化為時間上的模型質量提升。這就引出了一個問題:

在訓練時間和計算成本都固定的前提下,我們應該訓練一個稠密模型還是稀疏模型?

下圖 5 和 6 解決了這個問題。圖 5 展示了預訓練模型質量隨訓練時間增加所產生的變化。在訓練時間和計算成本都固定的情況下,Switch Transformer 的速度優勢非常明顯。在這種設置下,如果要達到相似的困惑度,Switch-Base 64 專家模型的訓練時間僅為 T5-Base 模型的 1/7。

可擴展性 VS. 一個更大的稠密模型

上面的實驗表明,一個計算不受限制的稠密模型已經被 Switch 超越。圖 6 考慮了一種不同的情況:如果把計算資源分給一個更大的稠密模型會怎麼樣?

為了驗證這個問題,研究者將 Switch-Base 與更強的基線 T5-Large 進行了對比。實驗結果表明,儘管 T5-Large 每個 token 所用的 FLOPs 是 Switch-Base 的 3.5 倍,但後者的樣本效率依然更高,而且速度是前者的 2.5 倍。此外,如果設計一個與 T5-Large 所需 FLOPs 相同的 Switch 模型(Switch-Large),上述提升還會更加明顯。

下遊任務中的結果

微調

這裡使用的基線方法是經過高度調參、具備 223M 參數的 T5-Base 和具備 739M 參數的 T5-Large 模型。針對這兩個模型,該研究作者設計了具備更多參數的 FLOP-matched Switch Transformer。

在多項自然語言任務中,Switch Transformer 帶來了顯著性能提升。最明顯的是 SuperGLUE,在該基準上 FLOP-matched Switch Transformer 相比 T5-Base 和 T5-Large 的性能分別提升了 4.4% 和 2%,在 Winogrande、closed book Trivia QA 和 XSum 上也出現了類似情況。唯一沒有觀察到性能提升的基準是 AI2 推理挑戰賽(ARC)數據集:在 ARC challenge 數據集上 T5-Base 的性能超過 Switch-Base;在 ARC easy 數據集上,T5-Large 的性能超過 Switch-Large。

整體而言,Switch Transformer 模型在多項推理和知識任務中帶來了顯著性能提升。這說明該模型架構不只對預訓練有用,還可以通過微調將質量改進遷移至下遊任務中。

蒸餾

部署具備十億、萬億參數量的大型神經網絡並非易事。為此,該論文研究了如何將大型稀疏模型蒸餾為小型稠密模型。下表 7 展示了該研究所用的蒸餾技術:

使用表 7 中最優的蒸餾技術後,研究者將多個稀疏模型蒸餾為稠密模型。他們對 Switch-Base 模型進行蒸餾,由於專家數量的不同,其參數量在 11 億至 147 億之間。該研究可以將具備 11 億參數量的模型壓縮 82%,同時保留 37% 的性能提升。最極端的情況下,將模型壓縮了 99%,且維持了 28% 的性能提升。

最後,研究者將微調稀疏模型蒸餾為稠密模型。下表 9 展示了對 74 億參數 Switch-Base 模型(該模型針對 SuperGLUE 任務進行了微調)的蒸餾結果——223M T5-Base。與預訓練結果類似,蒸餾後的模型仍保留 30% 的性能提升。這可能有助於確定用於微調任務的特定專家並進行提取,從而獲得更好的模型壓縮。

多語言學習

在下遊任務實驗中,研究者衡量了模型質量和速度的權衡,模型在 101 種不同語言上進行了預訓練。下圖 7 展示了 Switch T5 Base 模型與 mT5-Base 在所有語言上的質量提升情況(負對數困惑度)。對兩個模型經過 100 萬步預訓練後,Switch Transformer 的最終負對數困惑度相較基線有所提升。

下圖 8 展示了 Switch Transformer 相較 mT5-Base 的每一步加速情況,前者實現了平均 5 倍的加速,其中在 91% 的語言上實現了至少 4 倍加速。這表明 Switch Transformer 是高效的多任務和多語言學習器。

使用數據、模型和專家並行化來設計模型

隨意地增加專家數量會出現收益遞減問題(參見上圖 4),該研究介紹了一些補充性的擴展策略,涉及結合數據、模型與專家並行化的權衡。

結合數據、模型與專家並行化,構建萬億參數模型

Switch Transformer 設計過程中,研究者試圖平衡 FLOPs per token 和參數量。當專家數量增加時,則參數量增加,但不改變 FLOPs per token。要想增加 FLOPs,則需增加 d_ff 維度(這也會帶來參數量的增加,但相對較少)。這就是一種權衡:增加 d_ff 維度會導致每個核心內存的耗盡,因而必須增加 m。但由於核心 N 的數量是固定的 N = n × m,因此必須降低 n,也就是說需要使用更小的批大小。

在結合模型並行化和專家並行化之後,發送 token 到正確的專家以及模型並行化導致的內部 all-reduce 通信會帶來 all-to-all 通信成本。在結合這三種方法時,如何平衡 FLOPs、通信成本和每個核心的內存變得非常複雜。

該研究結合數據、模型與專家並行化,設計了兩個大型 Switch Transformer 模型,分別具備 3950 億參數和 1.6 萬億參數,並研究了這些模型在上遊預訓練語言模型和下遊微調任務中的性能。參數量、FLOPs 和不同模型的超參數參見下表 10:

關於 Switch Transformer 還有很多問題

在論文最後部分,谷歌大腦研究者探討了一些關於 Switch Transformer 和稀疏專家模型的問題(這裡稀疏指的是權重,而不是注意力模式)。

問題 1:Switch Transformer 的性能更好嗎?原因是否在於巨量參數?

性能的確更好,但原因不在參數量,而在於設計。參數有助於擴展神經語言模型,大模型的性能確實會好一些。但是該研究提出的模型在使用相同計算資源的情況下具備更高的樣本效率。

問題 2:沒有超級計算機的情況下,我能使用該方法嗎?

儘管這篇論文聚焦非常大型的模型,但研究者仍找到了具備兩個專家的模型,既能提升性能又可以輕鬆適應常用 GPU 或 TPU 的內存限制。因此,研究者認為該技術可用於小規模設置中。

問題 3:在速度 - 準確率帕累託曲線上,稀疏模型的表現優於稠密模型嗎?

是的。在多種不同模型規模情況下,稀疏模型在每一步和牆上時鐘時間方面都優於稠密模型。受控實驗表明,對於固定的計算量和時間而言,稀疏模型的表現超過稠密模型。

問題 4:我無法部署萬億參數模型,可以將模型縮小嗎?

雖然無法完整維持萬億參數模型的質量,但通過將稀疏模型蒸餾為稠密模型,可實現 10-100 倍的壓縮率,同時獲得專家模型約 30% 的質量改進。

問題 5:為什麼要使用 Switch Transformer 代替模型並行稠密模型?

以時間為基準,Switch Transformer 要比使用分片參數(sharded parameter)的稠密模型高效得多。同時,這一選擇並非互斥,Switch Transformer 中也可以使用模型並行化,這可以提高 FLOPs per token,但也會導致傳統模型並行化的減速。

問題 6:為什麼稀疏模型未得到廣泛使用?

嘗試稀疏模型的想法被稠密模型的巨大成功所阻撓。並且,稀疏模型面臨著多個問題,包括模型複雜度、訓練難度、通信成本等。而 Switch Transformer 緩解了這些問題。

AAAI 2021線上分享 | 利用多輪閱讀理解的框架解決實體連結問題

在華為雲被 AAAI 2021 會議接收的論文中,研究者提出利用多輪閱讀理解的框架來解決短文本的實體連結問題,並在多個中英文數據集上均取得了當前 SOTA 的實體連結效果。

1月14日20:00,華為雲語音語義創新 Lab 算法工程師Xavier為大家詳細解讀此前沿研究。

添加機器之心小助手(syncedai5),備註「AAAI」,進群一起看直播。

© THE END

轉載請聯繫本公眾號獲得授權

投稿或尋求報導:content@jiqizhixin.com

原標題:《1.6萬億參數的語言模型:谷歌大腦提出Switch Transformer,預訓練速度可達T5的7倍》

閱讀原文

相關焦點

  • 首個萬億級模型:谷歌推出語言模型 Switch Transformers,1.6 萬億...
    眾所周知,參數量是機器學習算法的關鍵。在大規模參數量和數據集的支持下,簡單的體系結構將遠遠超過複雜的算法。在自然語言領域,被稱為史上最強 NLP 的 GPT-3 擁有 1750 億參數。近日,Google 將這一參數量直接拉高到了 1.6 萬億。
  • 谷歌大腦提出簡化稀疏架構,預訓練速度可達T5的7倍
    剛剛,Google Brain 高級研究科學家 Barret Zoph 發帖表示,他們設計了一個名叫「Switch Transformer」的簡化稀疏架構,可以將語言模型的參數量擴展至 1.6 萬億(GPT-3 是 1750 億)。
  • 1.6 萬億參數你怕了嗎?谷歌大腦語言模型速度是 T5 速度的 7 倍
    機器學習當中,參數越多,理論上的精度越高(也極易產生過擬合),當然需要的算力也更多,GPT-3 使用了驚人的 1750 億參數,堪稱史上最大 AI 模型,沒想到這才多久,Google Brain 團隊就搞了一個大新聞,他們使用了 1.6 萬億參數推出了語言模型 Switch Transformer,比 T5 模型當中的 T5-XXL 模型還要快4倍,比基本的 T5 模型快了 7 倍。
  • 首個萬億級模型!Google重磅推出語言模型Switch Transformers,1.6...
    眾所周知,參數量是機器學習算法的關鍵。在大規模參數量和數據集的支持下,簡單的體系結構將遠遠超過複雜的算法。在自然語言領域,被稱為史上最強NLP的GPT-3擁有1750億參數。近日,Google將這一參數量直接拉高到了1.6萬億。
  • 76分鐘訓練BERT!谷歌大腦新型優化器LAMB加速大批量訓練
    選自arXiv作者:Yang You、Jing Li等機器之心編輯部去年,谷歌發布了基於雙向 Transformer 的大規模預訓練語言模型 BERT 並開源。該模型參數量非常大——3 億,訓練時間也很長。
  • 華為諾亞方舟開源預訓練模型「哪吒」,4項任務均達到SOTA
    BERT之後,新的預訓練語言模型XLnet、RoBERTa、ERNIE不斷推出,這次,華為諾亞方舟實驗室開源了基於BERT的中文預訓練語言模型NEZHA(哪吒),寓意模型能像哪吒那樣三頭六臂、大力出奇蹟,可以處理很多不同的自然語言任務。
  • 谷歌大腦提出「洗髮水」二階優化算法,Transformer訓練時間減少40%
    最近,谷歌大腦提出了一種新的二階預處理方法,帶來很大改進,優於SGD、Adam和AdaGrad等一階算法,縮短了神經網絡的訓練時間。它在Transformer訓練任務中比任何一階方法都快得多,而且能達到相同甚至更高的精度。連Jeff Dean也不禁在Twitter上點讚。
  • 預訓練圖像處理Transformer:華為諾亞、北大等提出IPT模型,刷榜多...
    預訓練模型能否在視覺任務上復刻在自然語言任務中的成功?華為諾亞方舟實驗室聯合北京大學、雪梨大學、鵬城實驗室提出底層視覺 Transformer,使用 ImageNet 預訓練,在多項視覺任務上達到 SOTA。與自然語言任務相比,視覺任務在輸入形式上有很大差別。
  • PTMs|2020最新NLP預訓練模型綜述
    提出了一種預訓練模型的分類體系,通過四種分類維度來劃分目前已有的預訓練模型。(2) 「ELMo」[6]. 用「兩層的Bi-LSTM」從「雙向語言模型任務BiLM」(包括1個前向的語言模型以及1個後向的語言模型)中預訓練一個「Bi-LSTM Encoder」。能夠顯著提升一系列NLP下遊任務的性能。
  • NLP領域預訓練模型的現狀及分析
    預訓練的方法最初是在圖像領域提出的,達到了良好的效果,後來被應用到自然語言處理。預訓練一般分為兩步,首先用某個較大的數據集訓練好模型(這種模型往往比較大,訓練需要大量的內存資源),使模型訓練到一個良好的狀態,然後下一步根據不同的任務,改造預訓練模型,用這個任務的數據集在預訓練模型上進行微調。
  • 超越BERT、GPT,微軟提出通用預訓練模型MASS
    為此,微軟亞洲研究院的研究員在ICML 2019上提出了一個全新的通用預訓練方法MASS,在序列到序列的自然語言生成任務中全面超越BERT和GPT。在微軟參加的WMT19機器翻譯比賽中,MASS幫助中-英、英-立陶宛兩個語言對取得了第一名的成績。
  • 一文讀懂最強中文NLP預訓練模型ERNIE
    為了去發現訓練數據中這些有價值的信息,在ERNIE 2.0 中,提出了一個預訓練框架,可以在大型數據集合中進行增量訓練。通過使用連續學習,可以不斷積累新的知識,模型在新任務當中可以用歷史任務學習到參數進行初始化,一般來說比直接開始新任務的學習會獲得更好的效果。a: 預訓練連續學習ERNIE 的預訓練連續學習分為兩步,首先,連續用大量的數據與先驗知識連續構建不同的預訓練任務。其次,不斷的用預訓練任務更新ERNIE 模型。
  • 微軟亞研院提出通用預訓練模型MASS
    5月10日消息,微軟亞洲研究院的研究員在ICML 2019上提出了一個全新的通用預訓練方法MASS(Masked Sequence to Sequence Pre-training),在序列到序列的自然語言生成任務中全面超越BERT和GPT。在微軟參加的WMT19機器翻譯比賽中,MASS幫助中-英、英-立陶宛兩個語言對取得了第一名的成績。
  • 萬能 Transformer,你應該知道的一切
    1.1 Transformer 結構Transformer 模型結構如圖1所示,模型由6個編碼器(Encoder)和6個解碼器(Decoder) 組成,輸入(Inputs)和輸出(Outputs)通過同一個訓練好的詞嵌入層(Word Embedding)將輸入字符轉換為維度為d的向量。
  • NeurIPS|既能理解又能生成自然語言,微軟提出統一預訓練新模型
    論文地址:https://arxiv.org/abs/1905.03197實現地址:https://github.com/microsoft/unilm這篇論文提出了一種新型的統一的預訓練語言模型(UniLM),它既可以針對自然語言理解任務進行微調,也能用於自然語言生成任務。
  • 谷歌大腦CMU聯手推出XLNet,20項任務全面超越BERT
    新智元報導 來源:arxiv、知乎等編輯:大明【新智元導讀】谷歌大腦和CMU聯合團隊提出面向NLP預訓練新方法XLNet,性能全面超越此前NLP領域的黃金標杆BERT,在20個任務上實現了性能的大幅提升,刷新了18個任務上的SOTA結果,可謂全面屠榜!近日,谷歌大腦主任科學家Quoc V.
  • 谷歌研究院出品:高效 Transformer 模型最新綜述
    為了幫助對這一領域感興趣的研究者在繁多的模型中梳理出一條脈絡,谷歌研究院撰寫了最新高效 Transformer 模型研究綜述,介紹了近年來該領域的最新進展。  其中,Class 列中的縮寫分別代表:(1)FP,固定模式或固定模式的組合(2)M:記憶(3)LP:可學習的模式(4)LR:低秩(5)KR:核方法(6)RC:遞歸。此外,n 一般代表序列長度,b 則為局部窗口(或模塊)的尺寸。n 後的下表 g 代表全局記憶長度,n_c 代表卷積壓縮後的序列長度。
  • 中國最大AI預訓練模型發布:113億參數,北京智源研究院、阿里、清華...
    而在此技術背後,是研究組提出的針對多模態認知生成的大規模預訓練的架構M6:MultiModality-to-MultiModality Multi-task Mega-Transformer。據了解,模型整體架構基於Transformer,其中圖像進行切塊並對塊採用ResNet-50提取特徵。
  • 中文最佳,哈工大訊飛聯合發布全詞覆蓋中文BERT預訓練模型
    基於 Transformers 的雙向編碼表示(BERT)在多個自然語言處理任務中取得了廣泛的性能提升。在預訓練語言模型時,需要對語料進行 mask 操作,使模型在看不見 token 的情況下對 mask 的詞語進行預測。然而,基於單個 token 的 mask 方法訓練中文語料,可能忽略了中文分詞的作用。
  • Pytorch-Transformers 1.0 發布,支持六個預訓練框架,含 27 個預...
    1.0,該項目支持 BERT, GPT, GPT-2, Transfo-XL, XLNet, XLM 等,並包含 27 個預訓練模型。哪些支持PyTorch-Transformers(此前叫做pytorch-pretrained-bert)是面向自然語言處理,當前性能最高的預訓練模型開源庫。