随着 ChatGPT 爆火出圈,狂飙之勢從 22 年底持續到 23 年初,與以往的技術突破不同的是,此次的大模型不僅被技術界關注,而且備受投資界、産業界和大衆消費者的追捧,使它成爲曆史上最快月活過億的現象級應用,繼而引發全球科技巨頭的 AI 競賽。
大模型的高智能化離不開對模型的大規模預訓練,這背後需要強大的 AI 框架作底層支持。面對動辄千億級參數的大模型,如何使能廣大開發者和用戶進行開發,在當前大模型研究分秒必争之時彎道超車?且讓我們順着大模型技術的方案拆解,一探昇思 MindSpore AI 框架的技術能力。
預訓練大模型的開發之路大規模預訓練—— GPT3 與鵬程 . 盤古
2020 年,OpenAI 祭出了遠超同期所有預訓練模型的大殺器 GPT3。憑借着 1750 億參數量,300B Token 的預訓練,GPT3 展現出非常強悍的自然語言處理能力,包括:
文本生成:根據 Prompt 來續寫(補全)句子。
上下文學習 ( In-context Learning ) : 遵循給定任務的幾個示例,然後爲新的測試用例生成解決方案。
世界知識 ( World Knowledge ) : 包括事實性知識和常識。
此時與 GPT3 同量級的大規模預訓練語言模型仍是國内外難以逾越的大山。2021 年 4 月,基于昇思 MindSpore AI 框架的多維度自動混合并行能力,以鵬城實驗室爲首的聯合科研團隊在大規模 AI 算力平台鵬城雲腦 II 上,訓練出業界首個 2000 億參數、以中文爲核心的預訓練生成語言模型鵬程 . 盤古。聯合團隊從開源開放數據集、common crawl 網頁數據、電子書等收集了近 80TB 原始數據,搭建了面向大型語料庫預處理的分布式集群,通過數據清洗過濾、去重、質量評估等處理流程,構建了一個約 1.1TB 大小的高質量中文語料數據集,經統計 Token 數量約爲 250B 規模。
憑借着與 GPT3 相同量級的參數量,鵬程 . 盤古預訓練模型擁有不遜于 GPT3 的上下文學習和世界知識能力。
△圖 1 鵬程 . 盤古模型架構
利用昇思 MindSpore AI 框架的自動并行能力,開發者隻需一行代碼就能實現模型自動切分、分布式并行計算,省卻大量複雜設計,在大集群上高效訓練千億至萬億參數模型。關于昇思 MindSpore 的自動并行能力,這裏先按下不表,讓我們繼續看下一個技術要素。
思維鏈的必經之路—— Code 預訓練
思維鏈(Chain of Thoughs,即鏈式思維推理)是大模型能夠擁有拟人化對話能力的關鍵。在 GPT3 之後,思維鏈能力開始被認爲是通過 few shot learning 進行激發,後續有 "lets think step by step" 的 zero shot prompt 進一步觸發了該能力。但是此時的大模型仍舊僅限于在各類數據集上呈現弱思維鏈能力。
直到代碼數據的預訓練模型出現并融入到自然語言預訓練模型中,大模型的思維鏈接能力躍上新的台階。下圖是 OpenAI 從 GPT3 以來的演進路線圖。左側的分支是代碼大模型的持續演進,一直到 code-davinci-002 将 LM 和 Code 訓練進行融合,再加入 instruct tuning,最終催生出耳熟能詳的 ChatGPT。
△圖 2 ChatGPT 演進路線
2022 年 9 月,清華大學團隊基于昇思 MindSpore 1.7 研發了 CodeGeeX 代碼預訓練大模型,并使用鵬城實驗室的大規模 AI 算力平台(鵬城雲腦 II)進行訓練。CodeGeeX 的訓練語料由兩部分組成:第一部分是開源代碼數據集,The Pile 與 CodeParrot;第二部分是補充數據,直接從 GitHub 開源倉庫中爬取 Python、Java、C++ 代碼。整個代碼語料含有 23 種編程語言、總計 1587 億個标識符(不含填充符)。
在開發與訓練過程中,清華大學與昇思 MindSpore 團隊深度合作,實現了一系列算子融合優化,包括單元素算子融合、層歸一化算子融合、FastGelu 與矩陣乘法融合、批量矩陣乘法與加法融合等 , 爲訓練速度帶來了顯著提升。
撬動人類的智慧—— RLHF 與 PPO
ChatGPT 令人震驚的能力在于其能夠真正拟人化地進行對話,生成内容更加符合人類的認知和價值觀。在大模型已經具備充足的世界知識、上下文學習能力和思維鏈能力的情況下,雖然可以在各大 NLP 數據集持續刷榜,但是仍舊存在一個問題——與人類的表達習慣差異巨大。而 ChatGPT 的前身 InstructGPT,向我們展示了人類反饋加入模型訓練的循環當中,所能呈現的巨大改變,那就是 RLHF(Reinforcement Learning from Human Feedback,即使用人類反饋強化學習)。
RLHF 技術主要分爲如下 4 個步驟:
1 ) 無監督預訓練 : 預訓練一個語言模型如 GPT-3。
2 ) 有監督的微調:生成一組 Prompt,以及對每個 Prompt 的人類反饋。即一個由對組成的訓練數據集。然後對預訓練的模型進行微調。,answer>
3 ) 訓練 " 人類反饋 " 的獎勵模型:建立一個獎勵模型,對預訓練語言模型輸出進行評分。首先給定一組 Prompt,機器生成對這些指令的 Answer,并由人類對其質量進行評分或排名。使用這個數據集來訓練一個獎勵模型,爲任何對輸出一個質量分數。,answer>
4 ) 訓練一個基于獎勵模型進行優化的強化學習策略。
下圖是 RLHF 的核心 PPO 算法的示意圖:
△圖 3 PPO 算法邏輯
針對 RLHF 所需的強化學習算法,昇思 MindSpore 進行了布局,發布 MindSpore Reinforcement Learning 套件,爲編寫強化學習算法提供了簡潔的 API 抽象,将算法與部署和調度解耦;将強化學習算法轉換爲一系列編譯後的計算圖,然後由昇思 MindSpore AI 框架在昇騰 AI 處理器、CPU、GPU 上高效運行。目前 MindSpore Reinforcement Learning 套件提供下述能力:
1 ) 提供豐富的強化學習算法:當前已支持 15+ 經典強化學習算法,涵蓋 Model-free/Model-based/Offline-RL/Imitation Learning,單智能體 / 多智能體,連續 / 離散動作空間,Episodic/Non-Episodic 等算法;接入 Mujoco、MPE、StarCraft2、DeepMind Control 等常用模拟環境。
2 ) 專注高性能訓練:通過計算圖和 ReplayBuffer 加速、異步環境并行和高性能領域組件,已支持算法的平均吞吐率相比主流框架提升 120%。
3 ) 支持大規模分式訓練:通過将強化學習算法分割成多個數據流片段(Fragmented Dataflow Graphs),并映射到異構設備上高效執行,對比業界主流框架實現了 3~5 倍的性能提升。
昇思 MindSpore 使能大模型曆程
随着 AI 技術的發展,預訓練大模型成爲世界各科技強國競争的焦點。預訓練大模型率先在自然語言處理領域取得突破性的進展,并迅速拓展到涉及圖像、視頻、圖形、語言等跨媒體推理的各類任務和大量的商業應用之中,展現了巨大的發展潛力。在過去的幾年,産業界基于昇思 MindSpore 先後發布了一系列有影響力的大模型,下圖爲這些大模型的訓練時間軸。
△圖 4 昇思 MindSpore 大模型曆程
上圖模型結構涉及 Transformer Encoder、Transformer Decoder、MOE、乃至 Clip 與 Diffusion,均基于昇思 MindSpore AI 框架訓練。
昇思 MindSpore 具備豐富的并行能力,能輕松完成 4096 卡集群、萬億參數規模的訓練任務,因此支撐了國内多個領域首發大模型的訓練,這些大模型涉及知識問答、知識檢索、知識推理、閱讀理解、文本 / 視覺 / 語音多模态、生物制藥、遙感、代碼生成等。
大模型的底座——昇思 MindSpore 的分布式并行能力
在梳理完 ChatGPT 的技術方案和昇思 MindSpore 的大模型曆程之後,我們再深入展開昇思 MindSpore AI 框架支撐一衆大模型的核心——分布式并行能力。
分布式訓練
昇思 MindSpore 支持當前主流的分布式訓練範式并開發了一套自動混合并行解決方案,提供以下關鍵技術:
1)數據切片預處理:對訓練數據進行任意維度切片後再導入到設備進行訓練;
2)算子級并行:對正向網絡中的每個算子都獨立建模,每個算子可以擁有不同的切分策略;
3)優化器并行:将數據并行的參數副本切分到多個設備上,以節省内存占用;
4)Pipeline 并行:将神經網絡中的計算圖切分成多個階段 ( Stage ) ,再把階段映射到不同的設備上,使得不同設備去計算神經網絡的不同部分;
5)MOE 并行:爲每個專家分配專門的計算任務,不同的專家可以托管在不同的設備上;
6)多副本并行:在一個叠代步驟中,将一個訓練 batch 拆分成多個 micro-batch,将模型并行通信與計算進行并發;
7)異構并行:将算子分配到異構硬件上執行,充分利用硬件資源,提升整體訓練吞吐量;
8)正向重計算:在正向計算時,不保存占用大量内存的中間輸出結果,而是保存占用少量内存的輸入;而在反向計算時,根據輸入重新計算正向輸出,從而大大削減正向計算累積的内存峰值;
9)全局内存複用:對計算圖進行靜态編譯尋優得到最優内存複用策略;
相較于業界的深度學習框架或分布式并行框架,昇思 MindSpore 在分布式關鍵技術上,支持能力範圍廣、自動化程度高、易用性好,具備如下優勢:
1)支持的模型類型更豐富(Transformer、超分圖像、推薦等),通用性更強,而像業界 Megatron 框架則是面向 Transformer 定制的框架;
2)相同算力和網絡下,豐富的并行策略可實現更大的計算通信比,性能更優(相同硬件平台 ( V100、A100 ) ,性能超越 Megatron 15%);
3)并行策略豐富,無需手動切分,大模型開發和調優效率優于業界;
分布式推理
相較于訓練,推理對計算性能的要求更高。如何在集群上實現高效快速的大模型推理,是目前各種框架研究的一個重點和難點。爲了解決上述問題,昇思 MindSpore 提出了分布式推理 + 增量推理的解決方案,使用數據并行、模型并行、流水并行等多維度混合并在大集群上面進行推理。此外,由于 Transformer Decoder 類自回歸語言模型,在傳統的推理模式下存在很多重複計算,昇思 MindSpore 提供的增量推理能力能夠省掉這些重複計算,增強推理效率。
△圖 5 增量推理流程圖
如上圖所示,第一階段将使用完整輸入推理,保存當前字(詞)對應的向量。在第二階段,輸入僅爲上一步推理得到的字(詞),然後将本步推理得到的向量與保存下來的前序向量拼接,作爲本步推理的完整向量,得到本步的輸出字(詞)。重複以上兩個階段。
極簡易用的大模型訓練——大模型套件
在現有的大模型開發過程中,用戶經常會發現 SOTA 基礎模型代碼非模塊化從而影響進一步的創新開發。不僅如此,用戶在模型實現中,經常找不到對應的 SOTA 模型以及相應的下遊任務,從而加長了開發周期,影響論文或項目的進度。爲了解決這些痛點,基于昇思 MindSpore 的大模型套件—— MindSpore Transformers 應聲而出。
MindSpore Transformers 是基于昇思 MindSpore 的深度學習大模型開發套件,其目标是構建一個大模型訓練、微調、評估、推理、部署的全流程開發套件。套件覆蓋了 CV、NLP 等 AIGC 的熱門領域,提供模型生命周期中的全流程快速開發能力,支持開箱即用,并具有四個特點:
MindSpore Transformers 中提供了非常豐富的預置模型,包含了當下典型的預訓練大模型 ( Bert、T5、VIT 等 ) ,涵蓋當下 CV、NLP 等 AIGC 的熱門領域。同時,套件也包含了豐富的下遊微調任務,精度與 SOTA 基本持平。
MindSpore Transformers 中提供了統一的開發範式。套件開放了 Trainer、pipeline 等特性接口,實現模塊化、配置化的開發,大大提高典型模型 ( 尤其是基于 transformer 結構的網絡 ) 的開發效率。模型部署方面, 套件支持昇騰 AI 基礎軟硬件平台,提供了一鍵雲上部署接口。
MindSpore Transformers 提供了統一的對外接口。在現有版本中,套件和業界流行的 Huggingface 接口保持一緻,用戶可以一鍵切換,從而極大地降低代碼遷移的成本。
MindSpore Transformers 套件天然包含昇思 MindSpore AI 框架自身優勢,包含多維度并行 ( 模型并行、流水線并行、優化器并行、多副本并行等 ) 、圖算融合等能力,可以在模型訓練時有效地提升内存使用效率和速度,幫助用戶快速訓練百億、千億甚至是萬億級别的模型。
△圖 6 MindSpore Transformers 架構圖
通過以上技術拆解和案例可以看出,昇思 MindSpore 發展至今,已經具備了支持大模型開發所需的各項核心技術,同時提供了一整套高效、易用的大模型使能套件,形成了端到端的使能大模型開發能力。昇思 MindSpore AI 框架爲助力大模型創新、繁榮 AI 産業生态鋪就了一條信心之路。
△圖 7 昇思 MindSpore 原生支持大模型的能力優勢
歡迎使用昇思 MindSporeAI 框架:
https://mindspore.cn/
https://gitee.com/mindspore/mindformers
引用:
[ 1 ] Zeng W, Ren X, Su T, et al. Large-scale Autoregressive Pretrained Chinese Language Models with Auto-parallel Computation [ J ] . arXiv preprint arXiv:2104.12369
[ 2 ] https://yaofu.notion.site/GPT-3-5-360081d91ec245f29029d37b54573756
[ 3 ] https://huggingface.co/blog/rlhf
[ 4 ] https://aijishu.com/a/1060000000222564
[ 5 ] https://gitee.com/mindspore/mindformers/wikis/%E7%89%B9%E6%80%A7%E8%AE%BE%E8%AE%A1%E6%96%87%E6%A1%A3
* 本文系量子位獲授權刊載,觀點僅爲作者所有。
— 完 —
量子位 QbitAI
վ ' ᴗ ' ի 追蹤 AI 技術和産品新動态
一鍵三連「分享」、「點贊」和「在看」
科技前沿進展日日相見 ~