盤古大模型參與者解讀盤古β大模型
摘要:盤古 NLP 大模型有兩個,α和β。α已經開源 gitee 連結,它是基於 GPT-3 結構的網路,主打生成類任務。β是基於 Transformer 結構的網路,更擅長理解類任務。
本文分享自華為雲社群,原文作者:泰坦 。
在 4 月 25 日的華為 HDC 大會上, 餘總和田奇老師釋出了盤古 AI 大模型,作為參與了盤古專案的開發人員,也來湊個熱鬧,簡單介紹一下盤古專案,如下圖:
NLP 大模型其實有兩個,α和β。α已經開源 gitee 連結,它是基於 GPT-3 結構的網路,主打生成類任務。β是基於 Transformer 結構的網路,更擅長理解類任務,田其老師臺上互動的就是β,CLUE 打榜的也是β。
什麼是大模型
- 網路引數大
千億引數:100000000000*4(float32)/1024^3=381.5GB
在盤古β中, 實際引數量約為 400G, 使用 Adam 最佳化器, 總引數量約為 1.2T, 在 2048 卡訓練下, 因為有一些冗餘資訊, 儲存的 ckpt 實際大小為 830M。
- 訓練資源大
使用數千張昇騰 910 訓練 1 月以上。
- 訓練資料大
原始資料 40T, 處理後資料 600G。
實際上最重要的是要有鈔能力。
如何訓練大模型
大模型的困難,實際難在工程。我們使用華為雲機器學習平臺 ModelArts + 機器學習框架 Mindspore + AI 處理器昇騰 910 進行開發。為了支撐大模型專案,Mindspore 的小夥伴開發了非常多的新特性,如最佳化器模型並行,管道並行等,具體資訊可以檢視我們總架金雪鋒的答案。
下面借鑑一下立交橋跳水冠軍的帖子,簡單介紹一下並行技術,及盤古β如何運用它們的。
資料並行
資料並行(DP)是應用最廣的並行策略,對在多個裝置上部署深度學習模型非常有用。但該方法存在缺陷,如隨著訓練裝置數量不斷增加,通訊開銷不斷增長,模型統計效率出現損失等。如下圖所示,資料並行中每個分散式節點儲存相同的引數(parameters),input 的資料不一樣。由於盤古β使用了 Adam 最佳化器,會佔用非常多的靜態記憶體,所以 batch size 開不大。使用資料並行,相當於擴大了 batch size。
模型並行
單卡無法容納全量引數, 需要把模型引數切分到每個不同的卡上。分散式節點儲存不同的引數,但是他們的 input 往往是相同的。
在盤古β中,所有引數為 1.2T,每張 910 卡實際可用 HBM 為 31G,理論算出最少需要 40 張卡。由於 HCCL 等限制,實際最少需要 64 卡進行訓練。可以選擇 32 模型並行,2 資料並行,或者 64 模型並行。
管道並行
大規模分散式訓練, 計算通訊耗時長. 使用管道並行, 加速訓練(X2)。
前面的模型並行,只是對模型的引數進行了切分,管道並行是對網路進行切分,每張卡只建立一個子網路,再透過流水線的方式組合起來。
以上圖為例,4 個節點將 5 層的網路進行了切分,每個節點只建立一個子網路。節點的執行序如下圖所示:
每個節點接收前一個節點的輸出,計算完成後再把輸出傳遞給下一個節點。當最後一個 stage 完成計算後,便開始計算反向,grads 由最後一個節點一層層傳遞到第一個節點,最後完成引數更新,再進行下一個 step。
盤古β由 encoder+decoder 結構組成,兩者共用一個 Embedding 層。在管道並行下,需要把 Embedding 層從第一個 stage 一直傳遞到第一個 Decoder 所在的 stage,在此 stage 對 target_ids 計算嵌入,再送入 Decoder 中進行計算。而所有 Decoder 都會用到 Encoder 的輸出來計算 cross attention,所以我們對 Decoder 做了改造,使其接收 Encoder 輸出的同時,再把此 Encoder 的輸出傳遞給下一層 Decoder。
在盤古β中,我們把整個模型切分成了 16 個 stage,最後執行速度比非管道並行快 1 倍。
其他小功能
容災
由於採用大叢集進行訓練,難免會發生硬體,軟體方面的問題,造成訓練終止。我們開發了容災功能,會把每張卡使用的引數儲存成 ckpt,上傳到 ModelArts 的 NAS 硬碟上。繼續訓練時每張卡只需要下載對應的 ckpt 載入,便可以繼續訓練了。在盤古β中,從任務建立後,每臺機器都需要下載完整資料集到本地,每張卡的訓練程式都需要下載一個 ckpt 進行載入,再進行圖編譯,最後真正訓練跑起來需要 2 小時左右。
彈性訓練
由於資源較為緊張,專案開始僅有 1024 卡進行訓練,當剩餘資源到位後,我們調整了並行策略,然後手動拆分 ckpt,再進行繼續訓練。
當預訓練完成後,finetuen 會使用 128 或 256 卡進行訓練,此時又需要手動合併 ckpt,再進行訓練。
拆分合並 ckpt 需要理解 Tensor 在不同並行策略下的排布,及策略改變後如何變換 Tensor,保證每一張卡獲取到對應的 Tensor 切片。
訓練技巧
無監督預訓練
盤古β採用了 Masked Language Model 方法進行預訓練,即在輸入句子中隨機 mask 掉 15%的詞,模型預測 mask 掉的 token。
下游任務(CLUE)finetune
使用 multi_task 方法(無監督資料集,CLUE 資料集無監督資料集,CLUE 資料有監督資料集)進行第一次 finetune。這裡使用的是 CLUE 所有下游任務的資料集。如無監督資料集 A 條,CLUE 資料集無監督資料集 B 條,CLUE 資料有監督資料集 C 條。
當第一次 finetune 的 loss 達到預期後,再針對單獨的下游任務,使用有監督資料集進行 finetuen。
PET(Pattern-Exploiting Training)
任務轉換:不再直接對 label 進行預測,而是預測其 label description,即將其轉換為完形填空形式的任務,來預測不同 labeldescription 的機率,例如:
一個樣本為“context:’「天天特價房」華庭仁和國際 3 室 2 廳 2 衛僅售 65 萬’, label: ‘房產’”
轉換為如下形式:
“以下是一則 房產 相關新聞標題: 「天天特價房」華庭仁和國際 3 室 2 廳 2 衛僅售 65 萬"
分散式推理
在大部分 CLUE 任務中,decoder 只需要推理 1 步,但一些生成任務會推理多步。由於圖編譯會把 decoder 的迴圈部分完全展開,故我們在這裡進行了改造,把整個網路拆分成了 Encoder+Decoder 兩個網路,decoder 的多步推理放在 python 層進行。
管道並行推理比較複雜,訓練時使用上千張卡,推理時僅使用 32 卡。訓練時整個網路分成了 16 個 stage,推理時 encoder 分成 4 個 stage,decoder 分成 4 個 stage,每張卡既有 encoder,也有 encoder。由於管道並行網路的特殊性,只有第一個 stage 需要真正的輸入,只有最後一個 stage 才有真正的輸出。不同的 stage 是跨機器的,就需要把 encoder 的輸出傳遞給 decoder,這裡我們建立了 Send,Recv 網路進行傳送,接收。
最後
當前盤古β使用的 mindspore 有些特性是新開發的,目前還在努力開發,預計不久這些新功能就會正式合入 mindspore 的 master,華為雲 ModelArts 也經過了此次大模型的考驗,沉澱了一些能力,將來也會上線一些大模型的新功能,請大家拭目以待。
作者:華為雲開發者社群
連結:
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2157/viewspace-2797582/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【重磅】華為雲盤古大模型5.0,正式釋出!大模型
- 跨越AI天塹時:行動代號“盤古大模型”AI大模型
- 2024年智慧革命:HarmonyOS NEXT與盤古大模型5.0的顛覆性融合大模型
- 華為盤古大模型5.0技術解密:更多模態,複雜推理大模型解密
- 華為雲用盤古大模型重塑服務,ModelArts Studio全面升級大模型
- 首批!華為雲盤古研發大模型透過程式碼大模型評估,獲當前最高等級大模型
- 華為雲釋出醫療健康解決方案,盤古大模型賦能五大醫藥健康場景大模型
- 讓AI拋棄“小作坊”,擁抱“工業化”:盤古大模型究竟是什麼?AI大模型
- 華為雲董理斌:做難事解難題,盤古大模型以“智”重塑千行萬業大模型
- PaddlePaddle官方九大NLP模型盤點模型
- 推送!10大主流AI模型適用盤點AI模型
- 各種AI模型拿來就能用!五大深度學習模型庫大盤點AI模型深度學習
- 【智慧製造】智慧製造流派 全球11種智慧製造參考模型大盤點!模型
- 【大模型】模型安全大模型
- 大模型高效開發的秘密武器:大模型低參微調套件MindSpore PET大模型套件
- OpenSearch向量檢索和大模型方案深度解讀大模型
- LLaMA 3 原始碼解讀-大語言模型5原始碼模型
- 參天生長大模型:昇騰AI如何強壯模型開發與創新之根?大模型AI
- 深耕銷售科技,迴圈智慧釋出「盤古」零樣本NLP平臺及三大產品矩陣矩陣
- 「模型解讀」歷數GAN的5大基本結構模型
- 國產開源大模型盤點:ChatGLM-6B 和 MOSS 的應用與創新大模型
- Java記憶體模型最全詳解(5大模型圖解)Java記憶體大模型圖解
- OpenDevin出技術報告了,大模型Agent開發者必讀dev大模型
- MetaLlama大模型大模型
- 網易盤古的“吃雞”之旅——記荒野行動Plus的幕後故事
- 深得復古醍醐味的JRPG ——《歧路旅人 大陸的霸者》
- 詳解孫宇晨“星辰大海”背後的一盤大棋,太空旅行需要更多人參與
- 大模型原理與思維鏈推理大模型
- 手搓大模型Task01:LLama3模型講解大模型
- 大模型學習進階 5-大模型測評大模型
- PG盤古OSK挖礦dapp系統開發智慧合約開發介紹APP
- 讀書筆記(6)古詩詞古文章筆記
- 四 阿里大模型接入:模型微調阿里大模型
- 影像描述大模型大模型
- 文生圖大模型大模型
- 大語言模型模型
- 語言大模型大模型
- 大模型的量化大模型