0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

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

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

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

NVIDIA英偉達企業(yè)解決方案 ? 來源:NVIDIA英偉達企業(yè)解決方案 ? 作者:NVIDIA英偉達企業(yè)解 ? 2021-10-11 16:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

NVIDIA Megatron 是一個基于 PyTorch 的框架,用于訓(xùn)練基于 Transformer 架構(gòu)的巨型語言模型。本系列文章將詳細介紹Megatron的設(shè)計和實踐,探索這一框架如何助力大模型的預(yù)訓(xùn)練計算。

大模型是大勢所趨

近年來,NLP 模型的發(fā)展十分迅速,模型的大小每年以1-2個數(shù)量級的速度在提升,背后的推動力當(dāng)然是大模型可以帶來更強大更精準(zhǔn)的語言語義理解和推理能力。

截止到去年,OpenAI發(fā)布的GPT-3模型達到了175B的大小,相比2018年94M的ELMo模型,三年的時間整整增大了1800倍之多。按此趨勢,預(yù)計兩年后,會有100 Trillion參數(shù)的模型推出。

另外一個特點是,自從18年 Google 推出 Attention is All You Need論文后,這幾年的模型架構(gòu),不管是雙向的BERT,還是生成式的GPT,都是基于Transformer 架構(gòu)來構(gòu)建的,通常說的模型有多少層,指的便是有多少個Transformer塊來堆疊起來的。

而且,這類模型的計算量也主要來自于對Transformer塊的處理,其本質(zhì)上可以轉(zhuǎn)化成大量的矩陣操作,天然地適合NVIDIA GPU的并行架構(gòu)。

分布式是大模型訓(xùn)練的必須

大模型的預(yù)訓(xùn)練對計算、通信帶來的挑戰(zhàn)是不言而喻的。我們以GPT-3 175B 模型為例,分析預(yù)訓(xùn)練對計算量、顯存、通信帶來的挑戰(zhàn)。

GPT-3 175B模型的參數(shù)如下:網(wǎng)絡(luò)層(Number of layers): 96

句子長度(Sequence length): 2048

隱藏層大?。℉idden layer size): 12288

詞匯表(Vocabulary size):51200

總參數(shù)量:約175B

1. 對顯存的挑戰(zhàn)

175B的模型,一個原生沒有經(jīng)過優(yōu)化的框架執(zhí)行,各部分大概需要的顯存空間:

模型參數(shù):700 GB (175B * 4bytes)

參數(shù)對應(yīng)的梯度:700 GB

優(yōu)化器狀態(tài):1400 GB

所以,一個175B模型共需要大概2.8 TB的顯存空間,這對 GPU 顯存是巨大的挑戰(zhàn):

1)模型在單卡、單機上存放不下。以 NVIDIA A100 80GB為例,存放此模型需要超過35塊。

2) 必須使用模型并行,并且需要跨機器。主流的A100 服務(wù)器是單機八卡,需要在多臺機器之間做模型切分。

2. 對計算的挑戰(zhàn)

基于Transformer 架構(gòu)的模型計算量主要來自于Transformer層和 logit 層里的矩陣乘,可以得出每個迭代步大致需要的計算量:

28ee9970-2981-11ec-82a8-dac502259ad0.png

B: 批大小,S:句子長度,l:Transformer 層數(shù),h:隱藏層大小,V:詞匯表大小

這是真實計算量的一個下限,但已是非常接近真實的計算量。關(guān)于此公式的詳細說明,請參考 NVIDIA Paper(https://arxiv.org/abs/2104.04473)里的附錄章節(jié)。

其中S=2048, l=96, h=12288, V=51200,在我們的實踐中,B = 1536,一共需要迭代大約95000次。代入這次參數(shù)到上述公式,可以得到:

一次迭代的計算量:4.5 ExaFLOPS.

完整訓(xùn)練的計算量:430 ZettaFLOPS (~95K 次迭代)

這是一個巨大的計算量,以最新的 NVIDIA A100 的FP16計算能力 312 TFLOPS來計算,即使不考慮計算效率和擴展性的情況,需要大概16K A100*days的計算量。直觀可以理解為16000塊A100一天的計算量,或者一塊A100 跑43.8年的計算量。

3. 對通信的挑戰(zhàn)

訓(xùn)練過程中GPU之間需要頻繁的通信,這些通信源于模型并行和數(shù)據(jù)并行的應(yīng)用,而不同的并行劃分策略產(chǎn)生的通信模式和通信量不盡相同。

對于數(shù)據(jù)并行來說,通信發(fā)生在后向傳播,用于梯度通信,通信類型為AllReduce,每次后向傳播中的通信量為每個GPU上的模型大小。

對于模型并行來說,稍微復(fù)雜些。模型并行通常有橫切和豎切兩種,比如把一個模型按網(wǎng)絡(luò)層從左到右橫著擺放,橫切即把每個網(wǎng)絡(luò)層切成多份(Intra-layer),每個GPU上計算網(wǎng)絡(luò)層的不同切塊,也稱為Tensor(張量)模型并行。豎切即把不同的網(wǎng)絡(luò)層切開(Inter-layer),每個GPU上計算不同的網(wǎng)絡(luò)層,也稱為Pipeline (流水線)模型并行。

對于Tensor模型并行,通信發(fā)生在每層的前向和后向傳播,通信類型為AllReduce,通信頻繁且通信量比較大。

對于Pipeline 模型并行,通信發(fā)生在相鄰的切分點,通信類型主要為P2P,每次通信數(shù)據(jù)量比較少但比較頻繁,而且會引入額外的GPU 空閑等待時間。

稍后會詳細闡述在Transformer 架構(gòu)上如何應(yīng)用這兩種模型劃分方式。

更為復(fù)雜的是,對于超大的語言模型,通常會采用數(shù)據(jù)并行 + Tensor 模型并行 + Pipeline 模型并行混合的方式,這使得通信方式錯綜復(fù)雜在一起,對系統(tǒng)連接拓撲提出更大的挑戰(zhàn):能靈活滿足不同劃分策略、不同通信模式下,不同通信組里高效的通信。

總而言之,超大語言模型的預(yù)訓(xùn)練,采用多節(jié)點的分布式訓(xùn)練是必須,而且是基于模型并行的。這就對集群架構(gòu)和訓(xùn)練框架提出了嚴苛的設(shè)計要求,集群架構(gòu)要有優(yōu)化的互聯(lián)設(shè)計,訓(xùn)練框架更為重要:不僅僅是結(jié)合算法特點對模型做合理切割,更是需要做出結(jié)合系統(tǒng)架構(gòu)特點、軟硬一體的co-design。

為此,NVIDIA 分別提出了優(yōu)化的分布式框架NVIDIA Megatron 和優(yōu)化的分布式集群架構(gòu) NVIDIA DGX SuperPOD。

優(yōu)化的分布式框架:NVIDIA Megatron

Megatron設(shè)計就是為了支持超大的Transformer模型的訓(xùn)練的,因此它不僅支持傳統(tǒng)分布式訓(xùn)練的數(shù)據(jù)并行,也支持模型并行,包括Tensor并行和Pipeline并行兩種模型并行方式。

1. Tensor 模型并行

上面我們看到,對于一個Transformer塊,主要包括Masked Multi Self Attention和Feed Forward兩個部分,對于Tensor并行,需要把這兩部分都并行化。

對于Feed Forward部分,是由多個全連接層組成的MLP網(wǎng)絡(luò),每個全連接層由矩陣乘和GeLU激活或Dropout組成,在Megatron中,F(xiàn)eed Forward采用兩層全連接層。對于一個全連接層,可以表示為:

2958f2b6-2981-11ec-82a8-dac502259ad0.png

其中X輸入,A為參數(shù)矩陣,Y為輸出,則可以有兩種并行方式。

一種是按行的方向把權(quán)重矩陣A切分開并按列的方向把輸入X切分開,即:29910e9e-2981-11ec-82a8-dac502259ad0.png29b5ec78-2981-11ec-82a8-dac502259ad0.png則輸出:

29dc64fc-2981-11ec-82a8-dac502259ad0.png

其中括號中的每一項,可以在一個單獨的GPU上獨立的完成,再通過一次AllReduce完成求和操作。

另一種則是按列的方向把權(quán)重矩陣A切分開,而不切分輸入,即:

2a145b64-2981-11ec-82a8-dac502259ad0.png

則可以得到同樣按列方向切分開的輸出:

2a42867e-2981-11ec-82a8-dac502259ad0.png

方括號中每一項可以在一個單獨的GPU上獨立的完成,這樣每個GPU上得到部分的最終輸出,大家拼接在一起就是完整輸出,不需要再做AllReduce。

Megatron在計算MLP時采用了這兩種并行方式,具體如下圖所示:

2a79fe56-2981-11ec-82a8-dac502259ad0.png

整個MLP的輸入X先通過f放到每一塊GPU上,然后先使用上面提到的按列切分權(quán)重矩陣A的方式,在每塊GPU上得到第一層全連接的部分輸出Y1和Y2,然后采用按行切分權(quán)重矩陣B,按列切分Y的方式,其中前一層的輸出Y1和Y2剛好滿足Y的切分需求,因此可以直接和B的相應(yīng)部分做相應(yīng)的計算而不需要額外操作或通信。這樣得到了最終Z的部分、Z1和Z2,通過g做AllReduce得到最終的Z,再通過相應(yīng)的激活層或Dropout。

這樣就完成了MLP層的Tensor并行,對于Masked Multi Self Attention層,如下圖所示:

2b02aa44-2981-11ec-82a8-dac502259ad0.png

正如它的名字中提到的,它是由多個Self Attention組成的,因此很自然的并行方式就是可以把每個Self Attention分到不同的GPU上去進行計算,這樣每塊GPU上就能夠得到輸出的一部分,最后的Linear全連接層,由于每個GPU上已經(jīng)有部分輸出,因此可以采用上面全連接層的按行的方向切權(quán)重矩陣B并按列的方向切輸入Y的方式直接進行計算,再通過AllReduce操作g得到最終結(jié)果。

2b7ec49e-2981-11ec-82a8-dac502259ad0.png

這樣我們就可以完成Transformer塊的Tensor并行。有了Tensor并行,我們可以把模型的每一層進行切分,分散到不同的GPU上,從而訓(xùn)練比較大的模型。由于Tensor并行會對每一層進行切分,并且需要通信,因此Tensor并行在同一臺機器上,并且有NVLink的加速情況下性能最好。如果模型進一步增大,大到一臺機器可能都放不下整個模型,這時就需要引入另一種并行方式,Pipeline并行。

2. Pipeline 模型并行

相對于Tensor并行的把模型的每一層內(nèi)部進行切分,Pipeline并行是會在模型的層之間進行切分,不同的層在不同的GPU或機器節(jié)點上進行計算。由于不同的層間有依賴關(guān)系,所以如果直接并行會像下圖所示,黑色部分是前向,綠色部分是反向計算,灰色部分是空閑,可以看出GPU的絕大部分時間是在等待。

2c11f9f8-2981-11ec-82a8-dac502259ad0.png

為了解決這個問題,Megatron把每一個batch分成了更小的microbatch,如下圖所示,把batch 1分成了1a,1b,1c,1d四個microbatch,由于不同的microbatch間沒有數(shù)據(jù)依賴,因此互相可以掩蓋各自的等待時間,提高GPU利用率,提升整體的性能。

2c5e11c6-2981-11ec-82a8-dac502259ad0.png

這就是Megatron 核心的兩種模型并行的設(shè)計,可以支撐超大的Transformer-based 語言模型,再結(jié)合經(jīng)典的數(shù)據(jù)并行方式,可以讓大模型的訓(xùn)練更快。

編輯:jq

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

    關(guān)注

    8

    文章

    7250

    瀏覽量

    91552
  • NVIDIA
    +關(guān)注

    關(guān)注

    14

    文章

    5282

    瀏覽量

    106071
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    28

    文章

    4925

    瀏覽量

    130940
  • 分布式
    +關(guān)注

    關(guān)注

    1

    文章

    992

    瀏覽量

    75279
  • MLP
    MLP
    +關(guān)注

    關(guān)注

    0

    文章

    57

    瀏覽量

    4534

原文標(biāo)題:NVIDIA Megatron:超大Transformer語言模型的分布式訓(xùn)練框架 (一)

文章出處:【微信號:NVIDIA-Enterprise,微信公眾號:NVIDIA英偉達企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 0人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    雙電機分布式驅(qū)動汽車高速穩(wěn)定性機電耦合控制

    摘要:為了利用所設(shè)計的雙電機防滑差速驅(qū)動系統(tǒng)來提高分布式驅(qū)動汽車的動力學(xué)性能,在前期同軸耦合驅(qū)動控制理論研究的基礎(chǔ)上,開展該車的高速穩(wěn)定性機電耦合控制研究。建立并驗證包含所設(shè)計驅(qū)動系統(tǒng)在內(nèi)的分布式
    發(fā)表于 06-18 16:37

    潤和軟件StackRUNS異構(gòu)分布式推理框架的應(yīng)用案例

    江蘇潤和軟件股份有限公司(以下簡稱“潤和軟件”)自主研發(fā)的StackRUNS異構(gòu)分布式推理框架已在實際場景中取得顯著成效,成功應(yīng)用于大型園區(qū)多模態(tài)模型演練及高校滿血版DeepSeek-MoE 671B的運行,有效推動了大
    的頭像 發(fā)表于 06-13 09:11 ?375次閱讀
    潤和軟件StackRUNS異構(gòu)<b class='flag-5'>分布式</b>推理<b class='flag-5'>框架</b>的應(yīng)用案例

    潤和軟件發(fā)布StackRUNS異構(gòu)分布式推理框架

    當(dāng)下,AI模型規(guī)模持續(xù)膨脹、多模態(tài)應(yīng)用場景日益復(fù)雜,企業(yè)正面臨異構(gòu)算力資源碎片化帶來的嚴峻挑戰(zhàn)。為應(yīng)對行業(yè)痛點,江蘇潤和軟件股份有限公司(以下簡稱“潤和軟件”)正式發(fā)布自主研發(fā)的StackRUNS異構(gòu)分布式推理框架,高效融合異構(gòu)
    的頭像 發(fā)表于 06-13 09:10 ?389次閱讀
    潤和軟件發(fā)布StackRUNS異構(gòu)<b class='flag-5'>分布式</b>推理<b class='flag-5'>框架</b>

    AI原生架構(gòu)升級:RAKsmart服務(wù)器在超大規(guī)模模型訓(xùn)練中的算力突破

    近年來,隨著千億級參數(shù)模型的崛起,AI訓(xùn)練對算力的需求呈現(xiàn)指數(shù)級增長。傳統(tǒng)服務(wù)器架構(gòu)在應(yīng)對分布式訓(xùn)練、高并發(fā)計算和顯存優(yōu)化等場景時逐漸顯露瓶頸。而RAKsmart為
    的頭像 發(fā)表于 04-24 09:27 ?254次閱讀

    淺談工商企業(yè)用電管理的分布式儲能設(shè)計

    文章設(shè)計了一種新的用于工商業(yè)用電管理的分布式儲能系統(tǒng)。由于儲能系統(tǒng)硬件置換成本高,選擇在傳統(tǒng)儲能系統(tǒng)的硬件框架基礎(chǔ)上,對控制軟件進行優(yōu)化設(shè)計,建立分布式儲能系統(tǒng)模型,分析發(fā)電量、儲電量
    的頭像 發(fā)表于 03-24 15:43 ?2983次閱讀
    淺談工商企業(yè)用電管理的<b class='flag-5'>分布式</b>儲能設(shè)計

    騰訊公布大語言模型訓(xùn)練新專利

    近日,騰訊科技(深圳)有限公司公布了一項名為“大語言模型訓(xùn)練方法、裝置、計算機設(shè)備及存儲介質(zhì)”的新專利。該專利的公布,標(biāo)志著騰訊在大語言模型
    的頭像 發(fā)表于 02-10 09:37 ?383次閱讀

    分布式云化數(shù)據(jù)庫有哪些類型

    分布式云化數(shù)據(jù)庫有哪些類型?分布式云化數(shù)據(jù)庫主要類型包括:關(guān)系型分布式數(shù)據(jù)庫、非關(guān)系型分布式數(shù)據(jù)庫、新SQL分布式數(shù)據(jù)庫、以列方式存儲數(shù)據(jù)、
    的頭像 發(fā)表于 01-15 09:43 ?448次閱讀

    模型訓(xùn)練框架(五)之Accelerate

    Hugging Face 的 Accelerate1是一個用于簡化和加速深度學(xué)習(xí)模型訓(xùn)練的庫,它支持在多種硬件配置上進行分布式訓(xùn)練,包括 CPU、GPU、TPU 等。Accelerat
    的頭像 發(fā)表于 01-14 14:24 ?657次閱讀

    語言模型開發(fā)框架是什么

    語言模型開發(fā)框架是指用于訓(xùn)練、推理和部署大型語言模型的軟件工具和庫。下面,AI部落小編為您介紹
    的頭像 發(fā)表于 12-06 10:28 ?506次閱讀

    分布式通信的原理和實現(xiàn)高效分布式通信背后的技術(shù)NVLink的演進

    的大小已經(jīng)超出了單個 GPU 的范圍。所以就需要實現(xiàn)跨多個 GPU 的模型訓(xùn)練,這種訓(xùn)練方式就涉及到了分布式通信和 NVLink。 當(dāng)談及分布式
    的頭像 發(fā)表于 11-18 09:39 ?1227次閱讀
    <b class='flag-5'>分布式</b>通信的原理和實現(xiàn)高效<b class='flag-5'>分布式</b>通信背后的技術(shù)NVLink的演進

    分布式故障在線監(jiān)測|高精度技術(shù)選用 行波特征 故診模型

    、高精度技術(shù)選用、行波特征及故障診斷模型的相關(guān)信息: 一、分布式故障在線監(jiān)測: 1、工作原理:通過在監(jiān)測對象(輸電線路)的不同位置分布式地安裝監(jiān)測終端,實時采集監(jiān)測對象的各種參數(shù),如工頻電流、行波電流等。這些監(jiān)
    的頭像 發(fā)表于 10-11 12:00 ?392次閱讀

    【《大語言模型應(yīng)用指南》閱讀體驗】+ 基礎(chǔ)知識學(xué)習(xí)

    收集海量的文本數(shù)據(jù)作為訓(xùn)練材料。這些數(shù)據(jù)集不僅包括語法結(jié)構(gòu)的學(xué)習(xí),還包括對語言的深層次理解,如文化背景、語境含義和情感色彩等。 自監(jiān)督學(xué)習(xí):模型采用自監(jiān)督學(xué)習(xí)策略,在大量無標(biāo)簽文本數(shù)據(jù)上學(xué)習(xí)
    發(fā)表于 08-02 11:03

    語言模型的預(yù)訓(xùn)練

    能力,逐漸成為NLP領(lǐng)域的研究熱點。大語言模型的預(yù)訓(xùn)練是這一技術(shù)發(fā)展的關(guān)鍵步驟,它通過在海量無標(biāo)簽數(shù)據(jù)上進行訓(xùn)練,使模型學(xué)習(xí)到
    的頭像 發(fā)表于 07-11 10:11 ?940次閱讀

    Transformer語言模型簡介與實現(xiàn)過程

    在自然語言處理(NLP)領(lǐng)域,Transformer模型以其卓越的性能和廣泛的應(yīng)用前景,成為了近年來最引人注目的技術(shù)之一。Transformer模型
    的頭像 發(fā)表于 07-10 11:48 ?2912次閱讀

    使用PyTorch搭建Transformer模型

    Transformer模型自其問世以來,在自然語言處理(NLP)領(lǐng)域取得了巨大的成功,并成為了許多先進模型(如BERT、GPT等)的基礎(chǔ)。本文將深入解讀如何使用PyTorch
    的頭像 發(fā)表于 07-02 11:41 ?2529次閱讀

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學(xué)習(xí)
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品