博客專欄

EEPW首頁 > 博客 > 開源方案復(fù)現(xiàn)ChatGPT流程!1.62GB顯存即可體驗(yàn),單機(jī)訓(xùn)練提速7.73倍

開源方案復(fù)現(xiàn)ChatGPT流程!1.62GB顯存即可體驗(yàn),單機(jī)訓(xùn)練提速7.73倍

發(fā)布人:計(jì)算機(jī)視覺工坊 時(shí)間:2023-02-21 來源:工程師 發(fā)布文章
火爆全網(wǎng)的 ChatGPT,仿佛開啟了第四次工業(yè)革命,讓微軟、谷歌等全球科技巨頭打得昏天黑地,引得各路玩家紛紛入局,搶占賽道。

然而由于 OpenAI 沒有開源 ChatGPT,如何有效復(fù)現(xiàn) ChatGPT 已成為擺在大家面前的頭號(hào)難題,急需可靠的開源共建方案。Colossal-AI 快速跟進(jìn),首個(gè)開源低成本復(fù)現(xiàn) ChatGPT 完整流程。作為當(dāng)下最火熱的開源 AI 大模型解決方案,Colossal-AI 已收獲開源社區(qū) GitHub Star 近萬顆,此次開源亮點(diǎn)包括:

  • 開源完整基于 PyTorch 的 ChatGPT 復(fù)現(xiàn)流程,涵蓋全部 3 個(gè)階段,可實(shí)現(xiàn)從預(yù)訓(xùn)練模型到 ChatGPT 的蛻變;
  • 體驗(yàn)最小 demo 訓(xùn)練流程最低僅需 1.62GB 顯存,任意單張消費(fèi)級(jí) GPU 即可滿足,單卡模型容量最多提升 10.3 倍
  • 相比原生 PyTorch,最高可提升單機(jī)訓(xùn)練速度 7.73 倍,單卡推理速度 1.42 倍,一行代碼即可使用;
  • 對(duì)于微調(diào)任務(wù),可最多提升單卡的微調(diào)模型容量 3.7 倍,同時(shí)保持高速運(yùn)行,僅需一行代碼;
  • 提供單卡、單機(jī)多卡、1750 億參數(shù)等多個(gè)版本,支持從 Hugging Face 導(dǎo)入 OPT,GPT-3,BLOOM 等多種預(yù)訓(xùn)練大模型;
  • 收斂驗(yàn)證正在進(jìn)行中,該項(xiàng)目也在吸引合作者共建生態(tài)

開源地址:https://github.com/hpcaitech/ColossalAIChatGPT——AIGC 引發(fā)的工業(yè)革命如果問新年伊始,最火爆的科技熱點(diǎn)是什么?非 ChatGPT 莫屬。它仿佛無所不能的六邊形戰(zhàn)士,可以聊天、寫代碼、修改 bug、做表格、發(fā)論文、寫作業(yè)、做翻譯、甚至代替 Google 搜索引擎等……自發(fā)布以來,ChatGPT 便已摧枯拉朽之勢(shì)席卷各個(gè)行業(yè),不僅 5 天時(shí)間便突破百萬用戶,月活用戶突破 1 億更是僅用時(shí) 2 個(gè)月,成為史上增速最快的消費(fèi)級(jí)應(yīng)用,遠(yuǎn)超如今其他知名應(yīng)用,如 Twitter 5 年、Meta(Facebook)4 年半,TikTok 9 個(gè)月等,而手機(jī)普及到 1 億用戶則用了 16 年。

圖片

1 億用戶月活用戶耗時(shí)比爾?蓋茨盛贊 “ChatGPT 的意義不亞于 PC 和互聯(lián)網(wǎng)誕生”,而微軟 CEO 薩蒂亞?納德拉(Satya Nadella)更是直言 “堪比工業(yè)革命,這輩子第一次見這么大的技術(shù)浪潮” 和 “AI 正在重塑互聯(lián)網(wǎng)”。作為向 OpenAI 投資上百億美元的大金主,微軟已火速將 ChatGPT 整合進(jìn)自家的搜索引擎必應(yīng) Bing 和 Edge 瀏覽器,還計(jì)劃加入 Teams 以及 Office 等辦公套件全家桶,股價(jià)一夜市值飆漲超 800 億美元。

圖片

微軟與谷歌發(fā)布會(huì)后股價(jià)對(duì)比而隔壁需要擔(dān)心被 ChatGPT 革命掉自家搜索引擎的谷歌,雖然拉響 “紅色警報(bào)”,緊急發(fā)布對(duì)標(biāo)競(jìng)品 Bard,卻因 Demo 首秀翻車,股價(jià)市值瞬間蒸發(fā) 1000 億美元。一夜之間,全球的科技巨頭們仿佛都回到了自己年輕時(shí)的樣子,紛紛宣布要打造自己的 ChatGPT。但 ChatGPT 發(fā)布已有數(shù)月,市面上不僅沒有預(yù)訓(xùn)練權(quán)重開源,連可靠的完整開源訓(xùn)練流程都仍是空白,更無法實(shí)現(xiàn)基于千億大模型的 ChatGPT 全流程高效搭建和應(yīng)用。臨時(shí)上線,號(hào)稱 “對(duì)標(biāo) ChatGPT” 的一眾新品們,因?yàn)殚]源也難辨真?zhèn)巍?/span>為什么 ChatGPT 有如此魔力?復(fù)現(xiàn)它又有哪些難點(diǎn)?ChatGPT 技術(shù)分析ChatGPT 的驚人效果,重要特征是在訓(xùn)練過程引入人類反饋強(qiáng)化學(xué)習(xí)(RLHF),使得模型表現(xiàn)更符合人類價(jià)值觀。ChatGPT 的訓(xùn)練流程主要分為三個(gè)階段:1. 從 Prompt 庫中采樣,收集其人工回答,利用這些數(shù)據(jù)來微調(diào)預(yù)訓(xùn)練大語言模型。2. 從 Prompt 庫中采樣,使用大語言模型生成多個(gè)回答,人工對(duì)這些回答進(jìn)行排序后,訓(xùn)練獎(jiǎng)勵(lì)模型(RM),來擬合人類的價(jià)值判斷。3. 基于階段 1 的監(jiān)督微調(diào)模型和階段 2 的獎(jiǎng)勵(lì)模型,利用強(qiáng)化學(xué)習(xí)算法對(duì)大語言模型進(jìn)一步訓(xùn)練。其中階段 3 是 RLHF 訓(xùn)練的核心部分,OpenAI 采用了強(qiáng)化學(xué)習(xí)中的近端策略優(yōu)化算法(PPO),借此引入獎(jiǎng)勵(lì)信號(hào),使得語言模型生成內(nèi)容更加符合人類評(píng)判標(biāo)準(zhǔn)。

圖片

RLHF 的三個(gè)階段 ChatGPT 模型的復(fù)雜性在于強(qiáng)化學(xué)習(xí)的引入會(huì)帶來更多模型的調(diào)用。例如,使用基于 Actor-Critic(AC)結(jié)構(gòu)的 PPO 算法,需要在訓(xùn)練時(shí)進(jìn)行 Actor、Critic 兩個(gè)模型的前向推理和反向傳播,以及監(jiān)督微調(diào)模型、獎(jiǎng)勵(lì)模型的多次前向推理。在 ChatGPT 基礎(chǔ)的 InstructGPT 的論文中,Actor 和監(jiān)督微調(diào)模型都使用了 1750 億參數(shù)的 GPT-3 系列模型,Critic 和獎(jiǎng)勵(lì)模型則使用了 60 億參數(shù)的 GPT-3 系列模型。對(duì)于如此多的模型參數(shù),想要啟動(dòng)原始 ChatGPT 訓(xùn)練流程,需要數(shù)千 GB 的顯存開銷,顯然遠(yuǎn)超單張 GPU 的容納能力,常見的數(shù)據(jù)并行技術(shù)也無能為力。但即使引入張量并行、流水并行對(duì)參數(shù)進(jìn)行劃分,也仍需至少 64 張 80GB 的 A100 作為硬件基礎(chǔ)。并且,其中的流水并行由于 bubble 和調(diào)度復(fù)雜,效率受限,不適合 AIGC 的生成式任務(wù)。階段 3 涉及 4 個(gè)模型的復(fù)雜強(qiáng)化學(xué)習(xí)訓(xùn)練流程,進(jìn)一步給 ChatGPT 的代碼復(fù)現(xiàn)帶來了困難和挑戰(zhàn)。使用 Colossal-AI 低成本復(fù)現(xiàn) ChatGPTColossal-AI 以開源方式復(fù)現(xiàn)了 ChatGPT 訓(xùn)練的基本流程,包括階段 1 預(yù)訓(xùn)練,階段 2 的獎(jiǎng)勵(lì)模型的訓(xùn)練,以及最為復(fù)雜的階段 3 的強(qiáng)化學(xué)習(xí)訓(xùn)練等。同時(shí),Colossal-AI 通過 ZeRO,Gemini,  Chunk-based 內(nèi)存管理等技術(shù),極大地降低 ChatGPT 訓(xùn)練的顯存開銷,僅需一半硬件資源即可啟動(dòng) 1750 億參數(shù)模型訓(xùn)練(64 卡 ->32 卡),顯著降低應(yīng)用成本。若使用上述相同硬件資源,Colossal-AI 則能以更短時(shí)間進(jìn)行訓(xùn)練,節(jié)省訓(xùn)練成本,加速產(chǎn)品迭代。為了讓更多開發(fā)者體驗(yàn)復(fù)現(xiàn) ChatGPT 模型,除 1750 億參數(shù)版本外,Colossal-AI 還提供高效的單卡、單機(jī) 4/8 卡的類 ChatGPT 版本,以降低硬件限制。

圖片

在單機(jī)多卡服務(wù)器上,即便使用最高端的 A100 80GB 顯卡,由于 ChatGPT 的復(fù)雜性和內(nèi)存碎片,PyTorch 最大僅能啟動(dòng)基于 GPT-L(774M)這樣的小模型的 ChatGPT。用 PyTorch 原生的 DistributedDataParallel (DDP) 進(jìn)行多卡并行擴(kuò)展至 4 卡或 8 卡,性能提升有限。Colossal-AI 不僅在單卡速度上訓(xùn)練和推理優(yōu)勢(shì)明顯,隨著并行規(guī)模擴(kuò)大還可進(jìn)一步提升,最高可提升單機(jī)訓(xùn)練速度 7.73 倍,單卡推理速度 1.42 倍,還可繼續(xù)擴(kuò)展至大規(guī)模并行,顯著降低 ChatGPT 復(fù)現(xiàn)成本。

圖片

為了盡可能降低訓(xùn)練成本和上手門檻,Colossal-AI 還提供了在單張 GPU 上即可嘗試的 ChatGPT 訓(xùn)練流程。相比于 PyTorch 在約 10 萬元的 A100 80GB 上,最大僅能啟動(dòng) 7.8 億參數(shù)模型,Colossal-AI 將單卡容量提升 10.3 倍至 80 億參數(shù)。對(duì)于基于 1.2 億參數(shù)小模型的 ChatGPT 訓(xùn)練,最低僅需 1.62GB 顯存,任意單張消費(fèi)級(jí) GPU 即可滿足。

圖片

此外,Colossal-AI 也致力于降低基于預(yù)訓(xùn)練大模型的微調(diào)任務(wù)成本。以 ChatGPT 可選的開源基礎(chǔ)模型 OPT 為例,相比 PyTorch,Colossal-AI 可將提升單卡微調(diào)模型容量 3.7 倍(原始計(jì)算量顯著增大),同時(shí)保持高速運(yùn)行。一行代碼快速上手Colossal-AI 為 Hugging Face 社區(qū)的 GPT,OPT 和 BLOOM 等主流預(yù)訓(xùn)練模型,提供了開箱即用的 ChatGPT 復(fù)現(xiàn)代碼。以 GPT 為例,僅需一行代碼,指定使用 Colossal-AI 作為系統(tǒng)策略即可快速使用。
















Pythonfrom chatgpt.nn import GPTActor, GPTCritic, RewardModelfrom chatgpt.trainer import PPOTrainerfrom chatgpt.trainer.strategies import ColossalAIStrategy
strategy = ColossalAIStrategy (stage=3, placement_policy='cuda')
with strategy.model_init_context ():    actor = GPTActor ().cuda ()    critic = GPTCritic ().cuda ()    initial_model = deepcopy (actor).cuda ()    reward_model = RewardModel (deepcopy (critic.model)).cuda ()
trainer = PPOTrainer (strategy, actor, critic, reward_model, initial_model, ...)trainer.fit (prompts)
使用下列命令,即可快速啟動(dòng)單卡、單機(jī)多卡、1750 億版本訓(xùn)練,并測(cè)試各種性能指標(biāo)(包括最大顯存占用、吞吐率和 TFLOPS 等):









Python# 使用單機(jī)單卡訓(xùn)練 GPT2-S,使用最小的 batch size,Colossal-AI Gemini CPU 策略torchrun --standalone --nproc_pero_node 1 benchmark_gpt_dummy.py --model s --strategy colossalai_gemini_cpu --experience_batch_size 1 --train_batch_size 1# 使用單機(jī) 4 卡訓(xùn)練 GPT2-XL,使用 Colossal-AI Zero2 策略torchrun --standalone --nproc_per_node 4 benchmark_gpt_dummy.py --model xl --strategy colossalai_zero2# 使用 4 機(jī) 32 卡訓(xùn)練 GPT-3,使用 Colossal-AI Gemini CPU 策略torchrun --nnodes 4 --nproc_per_node 8 \ --rdzv_id=$JOB_ID --rdzv_backend=c10d --rdzv_endpoint=$HOST_NODE_ADDR \ benchmark_gpt_dummy.py --model 175b --strategy colossalai_gemini_cpu --experience_batch_size 1 --train_batch_size 1
背后優(yōu)化核心系統(tǒng) Colossal-AI復(fù)現(xiàn) ChatGPT 的背后,依賴面向大模型時(shí)代的通用深度學(xué)習(xí)系統(tǒng) Colossal-AI,可基于 PyTorch 高效快速部署 AI 大模型訓(xùn)練和推理,降低 AI 大模型應(yīng)用成本。自開源以來,Colossal-AI 已經(jīng)多次在 GitHub 熱榜位列世界第一,獲得 GitHub Star 超八千顆,并成功入選 SC、AAAI、PPoPP、CVPR 等國(guó)際 AI 與 HPC 頂級(jí)會(huì)議的官方教程。除上述優(yōu)化外,Colossal-AI 還針對(duì) AI 大模型趨勢(shì),提供最多樣和高效的大規(guī)模多維并行分布式解決方案,此前已在 Stable Diffusion、OPT、AlphaFold 等前沿模型上展現(xiàn)卓越優(yōu)勢(shì)。

圖片

Colossal-AI 與當(dāng)今主要開源項(xiàng)目同期開源數(shù)據(jù)對(duì)比Colossal-AI 由加州伯克利大學(xué)杰出教授 James Demmel 和新加坡國(guó)立大學(xué)校長(zhǎng)青年教授尤洋領(lǐng)導(dǎo)。相關(guān)解決方案已成功在自動(dòng)駕駛、云計(jì)算、零售、醫(yī)****、芯片等行業(yè)知名廠商落地應(yīng)用,廣受好評(píng)。Colossal-AI 已成功幫助某世界 500 強(qiáng)企業(yè),開發(fā)具備在線搜索引擎能力增強(qiáng)的類 ChatGPT 聊天機(jī)器人模型。低成本微調(diào)的 LoRAColossal-AI 支持使用低秩矩陣微調(diào)(LoRA)方法進(jìn)行高效微調(diào)。LoRA 方法認(rèn)為大語言模型是過參數(shù)化的,其在微調(diào)中的參數(shù)改變量是·一個(gè)低秩的矩陣,可以將其分解為兩個(gè)更小的的矩陣的乘積,即圖片。在微調(diào)時(shí),固定大模型參數(shù),只調(diào)整低秩矩陣參數(shù),從而顯著減小訓(xùn)練參數(shù)量。在微調(diào)之后,進(jìn)行推理部署之前,只需要將參數(shù)加回原有矩陣即可,即圖片,不增加模型的推理延遲。

圖片

LoRA 示意圖,僅需訓(xùn)練 A、B減少內(nèi)存冗余的 ZeRO + GeminiColossal-AI 支持使用無冗余優(yōu)化器 (ZeRO) 來優(yōu)化內(nèi)存使用,這種方法可以有效減少內(nèi)存冗余,并且相比傳統(tǒng)的數(shù)據(jù)并行策略,不會(huì)犧牲計(jì)算粒度和通信效率,同時(shí)可以大幅提高內(nèi)存使用效率。為了進(jìn)一步提升 ZeRO 的性能,Colossal-AI 引入了自動(dòng) Chunk 機(jī)制。通過將運(yùn)算順序上連續(xù)的一組參數(shù)存入同一個(gè) Chunk 中(Chunk 是一段連續(xù)的內(nèi)存空間),可以確保每個(gè) Chunk 的大小相同,從而提高內(nèi)存使用效率。使用 Chunk 方式組織內(nèi)存可以保證 PCI-e 和 GPU-GPU 之間的網(wǎng)絡(luò)帶寬得到有效利用,減小通信次數(shù),同時(shí)避免潛在的內(nèi)存碎片。

圖片

Chunk 機(jī)制此外,Colossal-AI 的異構(gòu)內(nèi)存空間管理器 Gemini 支持將優(yōu)化器狀態(tài)從 GPU 卸載到 CPU ,以節(jié)省 GPU 內(nèi)存占用??梢酝瑫r(shí)利用 GPU 內(nèi)存、CPU 內(nèi)存(由 CPU DRAM 或 NVMe SSD 內(nèi)存組成)來突破單 GPU 內(nèi)存墻的限制,進(jìn)一步擴(kuò)展了可訓(xùn)練模型規(guī)模。

圖片

通過 ZeRO + Gemini 提升硬件的模型容量開放協(xié)作盡管此次開源包含了復(fù)現(xiàn) ChatGPT 的完整算法流程和必要軟件系統(tǒng),但對(duì)于像 ChatGPT 這樣的超大 AI 大模型,想要實(shí)際落地應(yīng)用,還需要數(shù)據(jù)、算力至少 2 方面的努力。畢竟訓(xùn)練一個(gè) 1750 億參數(shù)的 GPT-3 就需要數(shù)百萬美元算力。因此,長(zhǎng)期以來預(yù)訓(xùn)練大模型都由少數(shù)大型私營(yíng)科技公司壟斷。好在開源社區(qū)已成功進(jìn)行了新的嘗試。例如,完全開放代碼、數(shù)據(jù)集、權(quán)重的 1760 億參數(shù)的 BLOOM 模型,共有來自全球 60 個(gè)國(guó)家、超過 250 個(gè)機(jī)構(gòu),以及超過 1000 名研究人員參與其中,其中包括以個(gè)人名義參加的 Meta、谷歌等大廠員工。而前段時(shí)間大火的開源圖文生成模型 Stable Diffusion,也是由 Stability AI、EleutherAI 和 LAION 等組織共同完成的。借鑒上述成功模式,該項(xiàng)目也在吸引更多的合作者:無論是個(gè)人開發(fā)者,還是算力、數(shù)據(jù)、模型等可能合作方,都有機(jī)會(huì)參與其中,大顯身手,以復(fù)現(xiàn) ChatGPT 為起點(diǎn),擁抱大模型時(shí)代!可通過以下方式聯(lián)系或參與:1. 在 GitHub 發(fā)布 issue 或提交 PR2. 加入 Colossal-AI 用戶微信或 Slack 群交流3. 點(diǎn)擊閱讀原文填寫合作提案4. 發(fā)送合作提案到郵箱 contact@hpcaitech.com開源地址https://github.com/hpcaitech/ColossalAI參考鏈接https://www.hpc-ai.tech/blog/colossal-ai-chatgpt


*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



關(guān)鍵詞: AI

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉