0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何高效訓(xùn)練Transformer?

AI科技大本營 ? 來源:AI科技大本營 ? 2023-03-01 09:48 ? 次閱讀

近期,微軟亞洲研究院從深度學(xué)習(xí)基礎(chǔ)理論出發(fā),研發(fā)并推出了 TorchScale 開源工具包。TorchScale 工具包通過采用 DeepNet、Magneto 和 X-MoE 等最先進(jìn)的建模技術(shù),可以幫助研究和開發(fā)人員提高建模的通用性和整體性能,確保訓(xùn)練模型的穩(wěn)定性及效率,并允許以不同的模型大小擴(kuò)展 Transformer 網(wǎng)絡(luò)

如今,在包括語音、自然語言處理(NLP)、計(jì)算機(jī)視覺(CV)、多模態(tài)模型和 AI for Science 等領(lǐng)域的研究中,Transformer 已經(jīng)成為一種通用網(wǎng)絡(luò)結(jié)構(gòu),加速了 AI 模型的大一統(tǒng)。與此同時(shí),越來越多的實(shí)踐證明大模型不僅在廣泛的任務(wù)中能產(chǎn)生更好的結(jié)果、擁有更強(qiáng)的泛化性,還可以提升模型的訓(xùn)練效率,甚至衍生出新的能力。因此,學(xué)術(shù)界和產(chǎn)業(yè)界都開始追求更大規(guī)模的模型。

然而隨著模型的不斷擴(kuò)大,其訓(xùn)練過程也變得更加困難,比如會(huì)出現(xiàn)訓(xùn)練不收斂等問題。這就需要大量的手動(dòng)調(diào)參工作來解決,而這不僅會(huì)造成資源浪費(fèi),還會(huì)產(chǎn)生不可預(yù)估的計(jì)算成本。

與其揚(yáng)湯止沸,不如釜底抽薪。微軟亞洲研究院從深度學(xué)習(xí)基礎(chǔ)理論出發(fā),創(chuàng)新推出了 TorchScale 工具包,并已將其開源。TorchScale 是一個(gè) PyTorch 庫,允許科研和開發(fā)人員更高效地訓(xùn)練 Transformer 大模型。同時(shí),它有效地提升了建模的性能和通用性,提高了 Transformer 的穩(wěn)定性和訓(xùn)練效率。

TorchScale GitHub 頁面:

https://github.com/microsoft/torchscale

“我們希望通過 TorchScale 的系列工作從更底層出發(fā)做一些基礎(chǔ)性的研究創(chuàng)新,通過數(shù)學(xué)或者理論上的指導(dǎo)和啟發(fā),在 Transformer 模型擴(kuò)展的工作中取得更好的效果,而不是單純的調(diào)參或僅從工程層面部分緩解某些問題。TorchScale 能夠支持任意的網(wǎng)絡(luò)深度和寬度,實(shí)驗(yàn)驗(yàn)證它可以輕松擴(kuò)大模型規(guī)模,而且只需要幾行代碼就能夠?qū)崿F(xiàn)多模態(tài)模型的訓(xùn)練?!蔽④泚喼扪芯吭鹤匀徽Z言計(jì)算組首席研究員韋福如表示。

據(jù)了解,TorchScale 主要從三個(gè)方面幫助科研人員克服了擴(kuò)展 Transformer 大模型時(shí)的困難:

DeepNet:提升模型的穩(wěn)定性。

Magneto:提升模型的通用性。

X-MoE:提升模型訓(xùn)練的高效性。

effb850a-b1f7-11ed-bfe3-dac502259ad0.png

圖1:TorchScale 解決大模型在

穩(wěn)定性、通用性、高效性上面臨的問題

DeepNet:讓Transformer訓(xùn)練深度超過1000層

盡管近年來模型參數(shù)的數(shù)量越來越大,已經(jīng)從百萬級(jí)擴(kuò)展到萬億級(jí),但參數(shù)的深度卻一直受限于 Transformer 訓(xùn)練的不穩(wěn)定性。為了解決這一問題,一些科研人員嘗試通過更好的初始化或架構(gòu)來提升 Transformer 的穩(wěn)定性,但這也只能讓 Transformer 在百層級(jí)別的深度下保持穩(wěn)定。

微軟亞洲研究院的研究員們發(fā)現(xiàn),模型輸出的劇烈變化是導(dǎo)致模型不穩(wěn)定的重要原因。為此,研究員們?cè)跉埐钸B接處使用了一種新的歸一化函數(shù)——DeepNorm。新的函數(shù)由理論推導(dǎo)而來,可以把模型輸出的變化限制在常數(shù)范圍內(nèi)。這種方法只需要改變幾行代碼,就可以大幅提升 Transformer 的穩(wěn)定性。通過引入新的 DeepNorm 函數(shù),研究員們訓(xùn)練了超深的 Transformer 網(wǎng)絡(luò) DeepNet,在保證模型穩(wěn)定的同時(shí),可以將模型深度擴(kuò)展到1000層以上。

DeepNorm 同時(shí)具備 Post-LN 的性能和 Pre-LN 的訓(xùn)練穩(wěn)定性。這個(gè)新方法或?qū)⒊蔀?Transformer 的首選替代方案,它不僅適用于深模型,更適用于大模型。值得一提的是,與具有120億參數(shù)的48層模型相比,微軟亞洲研究院32億參數(shù)的200層模型在100多個(gè)語言、超10000個(gè)語言對(duì)和130億個(gè)文本對(duì)的多語言機(jī)器翻譯實(shí)驗(yàn)中實(shí)現(xiàn)了5 BLEU 的提升。在大規(guī)模多語言翻譯任務(wù)上,隨著 DeepNet 模型深度從10層擴(kuò)展至100層和1000層,模型也獲得了更高的 BLEU 值。

f02d63ae-b1f7-11ed-bfe3-dac502259ad0.png

圖2:隨著模型深度從10層擴(kuò)展至100層和1000層,DeepNet 有效提升了多語言翻譯結(jié)果

韋福如說,“此前,科研人員在訓(xùn)練更大規(guī)模的模型時(shí),往往需要投入大量的精力在模型調(diào)參上,無形中增加了實(shí)驗(yàn)成本,有的模型在訓(xùn)練中途就無法繼續(xù)下去了,即使給模型打上補(bǔ)丁也還是會(huì)影響模型性能。DeepNet 可以幫助科研人員大幅降低調(diào)參的負(fù)擔(dān),在提升模型性能的同時(shí)降低實(shí)驗(yàn)成本。”

Magneto:真正實(shí)現(xiàn)多模態(tài)模型架構(gòu)統(tǒng)一

跨語言、視覺、語音和多模態(tài)的模型在模型結(jié)構(gòu)上走向大一統(tǒng)的趨勢(shì)如今已經(jīng)愈發(fā)明顯。具體而言,從 NLP 領(lǐng)域開始,Transformer 已成為 AI 各領(lǐng)域的主流結(jié)構(gòu)。然而,盡管都使用了 Transformer,但不同模態(tài)任務(wù)的模型結(jié)構(gòu)在具體實(shí)現(xiàn)時(shí)仍存在顯著差異。例如,GPT 和 ViT 模型采用了 Pre-LN Transformer,而 BERT 和機(jī)器翻譯模型使用的是 Post-LN 來獲得更好的性能。更重要的是,對(duì)于多模態(tài)模型,不同輸入模態(tài)的最優(yōu) Transformer 變體通常是不同的。以微軟亞洲研究院推出的多模態(tài)預(yù)訓(xùn)練模型 BEiT-3為例,其使用 Post-LN 對(duì)于視覺部分是次優(yōu)的,而 Pre-LN 對(duì)于語言部分是次優(yōu)的。

要想讓多模態(tài)預(yù)訓(xùn)練真正實(shí)現(xiàn)大一統(tǒng)就需要一個(gè)統(tǒng)一的架構(gòu),該架構(gòu)需要在不同任務(wù)和模態(tài)上都能有良好的性能表現(xiàn)。另外,如之前所述,Transformer 架構(gòu)訓(xùn)練的穩(wěn)定性也是一個(gè)痛點(diǎn)。微軟亞洲研究院的研究員們意識(shí)到,通用模型的開發(fā)需要更基礎(chǔ)的 Transformer,即 Foundation Transformer。首先它的建模能夠作為各種任務(wù)和模式的統(tǒng)一架構(gòu),這樣就可以使用相同的主干而無需反復(fù)魔改。其通用的設(shè)計(jì)原則也應(yīng)該支持多模態(tài)基礎(chǔ)模型的開發(fā),在不犧牲性能的前提下將統(tǒng)一的 Transformer 用于各種模態(tài)。其次,它的網(wǎng)絡(luò)結(jié)構(gòu)應(yīng)能夠保障訓(xùn)練的穩(wěn)定性,從而降低基礎(chǔ)模型大規(guī)模預(yù)訓(xùn)練的難度。

為了實(shí)現(xiàn)這些目標(biāo),微軟亞洲研究院的研究員們提出了一個(gè) Foundation Transformer——Magneto。在 Magneto 中,研究員們引入了 Sub-LN,為每個(gè)子層(即多頭自注意力和前饋網(wǎng)絡(luò))添加了額外的 LayerNorm,并且提出了一種新的初始化方法,為從根本上提高訓(xùn)練的穩(wěn)定性提供了理論保證。

通過對(duì) Magneto 在不同任務(wù)和模態(tài)上的評(píng)測(cè),包括掩碼語言建模(即BERT)、因果語言建模(例如GPT)、機(jī)器翻譯、掩碼圖像建模(即BEiT)、語音識(shí)別和視覺語言預(yù)訓(xùn)練(即BEiT-3),結(jié)果顯示在下游任務(wù)上,Magneto 顯著優(yōu)于各種 Transformer 變體。此外,得益于訓(xùn)練穩(wěn)定性的提高,Magneto 還允許使用更高的學(xué)習(xí)率來進(jìn)一步提高結(jié)果。

f064913a-b1f7-11ed-bfe3-dac502259ad0.jpg

圖3:Magneto 在語言、圖像、

語音和多模態(tài)任務(wù)上的實(shí)驗(yàn)結(jié)果


X-MoE:優(yōu)于基線SMoE模型,助力模型高效訓(xùn)練

在有關(guān)大模型訓(xùn)練的研究中,除了將網(wǎng)絡(luò)深度做得更深和將寬度即隱藏維度擴(kuò)大以外,還可以利用混合專家系統(tǒng)(Mixture of Experts, MoE)。盡管 MoE 可以在諸如語言模型和視覺表示學(xué)習(xí)等廣泛?jiǎn)栴}上獲得更好的性能,但也會(huì)導(dǎo)致更高的計(jì)算成本,這促使越來越多的科研人員開始探索稀疏混合專家模型(Sparse Mixture-of-Experts, SMoE)。SMoE 主要通過構(gòu)建稀疏激活的神經(jīng)網(wǎng)絡(luò)來增加模型容量。在不顯著增加計(jì)算開銷的情況下 SMoE 模型在各種任務(wù)(包括機(jī)器翻譯、圖像分類和語音識(shí)別)上的性能都優(yōu)于稠密模型。

在 SMoE 模型中,路由機(jī)制發(fā)揮著重要的作用。給定輸入 token,路由機(jī)制會(huì)測(cè)量每個(gè) token 與專家之間的相似度分?jǐn)?shù),然后再根據(jù)路由得分將 token 分配給最匹配的專家。因此,近年來許多研究都集中在如何設(shè)計(jì) token 專家分配算法上。然而,微軟亞洲研究院的研究員們發(fā)現(xiàn),當(dāng)前的路由機(jī)制傾向于以專家為中心來推動(dòng)隱藏表示聚類,這容易引起表征坍塌(Representation Collapse),損害模型性能。

為了緩解現(xiàn)有的路由機(jī)制引起的表征坍塌問題,微軟亞洲研究院的研究員們提出了新的方法 X-MoE,為 SMoE 模型引入了一種簡(jiǎn)單而有效的路由算法。具體來說,區(qū)別于現(xiàn)有 SMoE 模型直接使用隱藏向量進(jìn)行路由,X-MoE 先將隱藏向量投射到低維空間中,再對(duì) token 表示和專家表示進(jìn)行 L2 歸一化,來測(cè)量低維超球面上的路由分?jǐn)?shù)。此外,研究員們還提出了軟專家門(soft expert gate),以學(xué)習(xí)控制專家的激活。

f0c5d684-b1f7-11ed-bfe3-dac502259ad0.png

圖4:X-MoE 流程圖

微軟亞洲研究院的研究員們對(duì)這一新方法在跨語言模型預(yù)訓(xùn)練任務(wù)上進(jìn)行了評(píng)測(cè)。實(shí)驗(yàn)結(jié)果表明,在語言建模和微調(diào)性能方面,基于 X-MoE 的模型始終優(yōu)于基線 SMoE 模型。實(shí)驗(yàn)分析還表明,與 SMoE 基線相比,X-MoE 方法有效緩解了表征坍塌問題。該方法在預(yù)訓(xùn)練和微調(diào)期間也實(shí)現(xiàn)了更一致的路由行為,證實(shí)了 X-MoE 路由算法的有效性。

“隨著技術(shù)的持續(xù)演進(jìn),大模型的訓(xùn)練不僅僅是工程層面的工作。我們應(yīng)該從基礎(chǔ)研究的角度出發(fā),探索下一代 Transformer 網(wǎng)絡(luò)架構(gòu)。與此同時(shí),在 AI 模型大一統(tǒng)趨勢(shì)的推動(dòng)下,我們更應(yīng)該追求同一結(jié)構(gòu)來支持不同模態(tài)的輸入,并在不同語言和模態(tài)的任務(wù)上獲得良好的性能。通過理論指導(dǎo)讓模型變得更大、更穩(wěn)定、更通用?!表f福如說。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    3181

    瀏覽量

    42240
  • 計(jì)算機(jī)視覺
    +關(guān)注

    關(guān)注

    8

    文章

    1688

    瀏覽量

    45873
  • 自然語言處理
    +關(guān)注

    關(guān)注

    1

    文章

    586

    瀏覽量

    13464

原文標(biāo)題:如何高效訓(xùn)練 Transformer?微軟亞研院開源TorchScale工具包

文章出處:【微信號(hào):AI科技大本營,微信公眾號(hào):AI科技大本營】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于DINO知識(shí)蒸餾架構(gòu)的分層級(jí)聯(lián)Transformer網(wǎng)絡(luò)

    在本文的網(wǎng)絡(luò)設(shè)計(jì)中,訓(xùn)練階段首先會(huì)訓(xùn)練第一階段的 Transformer 網(wǎng)絡(luò)來得到一個(gè)有較好表征能力的特征生成器,隨后再引入池化操作,加上二三階段 Transformer 共同
    發(fā)表于 07-25 16:58 ?1292次閱讀

    基于Transformer做大模型預(yù)訓(xùn)練基本的并行范式

    在之前的內(nèi)容中,我們已經(jīng)介紹過流水線并行、數(shù)據(jù)并行(DP,DDP和ZeRO)。 今天我們將要介紹最重要,也是目前基于Transformer做大模型預(yù)訓(xùn)練最基本的并行范式:來自NVIDIA的張量模型
    的頭像 發(fā)表于 05-31 14:38 ?2366次閱讀
    基于<b class='flag-5'>Transformer</b>做大模型預(yù)<b class='flag-5'>訓(xùn)練</b>基本的并行范式

    如何進(jìn)行高效的時(shí)序圖神經(jīng)網(wǎng)絡(luò)的訓(xùn)練

    提高多GPU訓(xùn)練的性能,包括局部性感知的數(shù)據(jù)劃分策略以及高效的任務(wù)調(diào)度策略。首先,本文使用高效的數(shù)據(jù)劃分策略將圖數(shù)據(jù)以及點(diǎn)的特征向量進(jìn)行有效的劃分,來降低GPU之間額外的通信開銷。點(diǎn)的特征向量占據(jù)很大
    發(fā)表于 09-28 10:37

    探索一種降低ViT模型訓(xùn)練成本的方法

    ,Transformer架構(gòu)已成為大量計(jì)算機(jī)視覺模型的關(guān)鍵組成部分。然而,訓(xùn)練大型變壓器模型通常需要付出巨大的成本。例如,在4個(gè)GPU上訓(xùn)練像DeiT-S這樣的小型ViT大約需要3天時(shí)間。為了降低成本,作者建議探索以下
    發(fā)表于 11-24 14:56

    教你如何使用Python搭一個(gè)Transformer

    與基于RNN的方法相比,Transformer 不需要循環(huán),主要是由Attention 機(jī)制組成,因而可以充分利用python的高效線性代數(shù)函數(shù)庫,大量節(jié)省訓(xùn)練時(shí)間。
    的頭像 發(fā)表于 04-24 15:00 ?7215次閱讀
    教你如何使用Python搭一個(gè)<b class='flag-5'>Transformer</b>

    視覺新范式Transformer之ViT的成功

    ? 這是一篇來自谷歌大腦的paper。這篇paper的主要成果是用Transformer[1]取代CNN,并證明了CNN不是必需的,甚至在大規(guī)模數(shù)據(jù)集預(yù)訓(xùn)練的基礎(chǔ)上在一些benchmarks做到
    的頭像 發(fā)表于 02-24 09:31 ?6726次閱讀
    視覺新范式<b class='flag-5'>Transformer</b>之ViT的成功

    Transformer的復(fù)雜度和高效設(shè)計(jì)及Transformer的應(yīng)用

    幫助。 本文涉及25篇Transformer相關(guān)的文章,對(duì)原文感興趣的讀者可以關(guān)注公眾號(hào)回復(fù): ACL2021Transformers,下載本文所涉及的所有文章~本文主要內(nèi)容: 前言 ACL 2021中
    的頭像 發(fā)表于 09-01 09:27 ?6179次閱讀
    <b class='flag-5'>Transformer</b>的復(fù)雜度和<b class='flag-5'>高效</b>設(shè)計(jì)及<b class='flag-5'>Transformer</b>的應(yīng)用

    超大Transformer語言模型的分布式訓(xùn)練框架

    NVIDIA Megatron 是一個(gè)基于 PyTorch 的框架,用于訓(xùn)練基于 Transformer 架構(gòu)的巨型語言模型。本系列文章將詳細(xì)介紹Megatron的設(shè)計(jì)和實(shí)踐,探索這一框架如何助力
    的頭像 發(fā)表于 10-11 16:46 ?2603次閱讀
    超大<b class='flag-5'>Transformer</b>語言模型的分布式<b class='flag-5'>訓(xùn)練</b>框架

    探究超大Transformer語言模型的分布式訓(xùn)練框架

    NVIDIA Megatron 是一個(gè)基于 PyTorch 的框架,用于訓(xùn)練基于 Transformer 架構(gòu)的巨型語言模型。本系列文章將詳細(xì)介紹Megatron的設(shè)計(jì)和實(shí)踐,探索這一框架如何助力
    的頭像 發(fā)表于 10-20 09:25 ?2359次閱讀

    用于語言和視覺處理的高效 Transformer能在多種語言和視覺任務(wù)中帶來優(yōu)異效果

    白皮書《Transformer-LS:用于語言和視覺處理的高效 Transformer》中提出了“長(zhǎng)-短 Transformer” (Transfo
    的頭像 發(fā)表于 12-28 10:42 ?1494次閱讀

    英偉達(dá)H100 Transformer引擎加速AI訓(xùn)練 準(zhǔn)確而且高達(dá)6倍性能

    Hopper 架構(gòu)從頭開始構(gòu)建,憑借強(qiáng)大的算力和快速的內(nèi)存來加速這些新一代 AI 工作負(fù)載,從而處理日益增長(zhǎng)的網(wǎng)絡(luò)和數(shù)據(jù)集。 Transformer 引擎是全新 Hopper 架構(gòu)的一部分,將顯著提升 AI 性能和功能,并助力在幾天或幾小時(shí)內(nèi)訓(xùn)練大型模型。 使用
    的頭像 發(fā)表于 04-01 09:24 ?4056次閱讀

    基于Transformer架構(gòu)的文檔圖像自監(jiān)督預(yù)訓(xùn)練技術(shù)

    本文簡(jiǎn)要介紹ACM MM 2022錄用論文“DiT: Self-supervised Pre-training for Document Image Transformer”[1]的主要工作。該論文
    的頭像 發(fā)表于 11-15 11:32 ?1362次閱讀

    PyTorch教程11.9之使用Transformer進(jìn)行大規(guī)模預(yù)訓(xùn)練

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程11.9之使用Transformer進(jìn)行大規(guī)模預(yù)訓(xùn)練.pdf》資料免費(fèi)下載
    發(fā)表于 06-05 15:07 ?0次下載
    PyTorch教程11.9之使用<b class='flag-5'>Transformer</b>進(jìn)行大規(guī)模預(yù)<b class='flag-5'>訓(xùn)練</b>

    PyTorch教程-11.9. 使用 Transformer 進(jìn)行大規(guī)模預(yù)訓(xùn)練

    11.9. 使用 Transformer 進(jìn)行大規(guī)模預(yù)訓(xùn)練? Colab [火炬]在 Colab 中打開筆記本 Colab [mxnet] Open the notebook
    的頭像 發(fā)表于 06-05 15:44 ?1146次閱讀
    PyTorch教程-11.9. 使用 <b class='flag-5'>Transformer</b> 進(jìn)行大規(guī)模預(yù)<b class='flag-5'>訓(xùn)練</b>

    Transformer在下一個(gè)token預(yù)測(cè)任務(wù)上的SGD訓(xùn)練動(dòng)態(tài)

    ,對(duì)Transformer工作原理的相關(guān)研究仍然十分有限。 其中最大謎團(tuán)在于,Transformer為什么僅依靠一個(gè)「簡(jiǎn)單的預(yù)測(cè)損失」就能從梯度訓(xùn)練動(dòng)態(tài)(gradient training dynamics)中涌現(xiàn)出
    的頭像 發(fā)表于 06-12 10:11 ?787次閱讀
    <b class='flag-5'>Transformer</b>在下一個(gè)token預(yù)測(cè)任務(wù)上的SGD<b class='flag-5'>訓(xùn)練</b>動(dòng)態(tài)