什么?單塊GPU也能訓(xùn)練大模型了?
還是20系就能拿下的那種???
沒開玩笑,事實已經(jīng)擺在眼前:
RTX 2060 6GB普通游戲本能訓(xùn)練15億參數(shù)模型;
RTX 3090 24GB主機直接單挑180億參數(shù)大模型;
Tesla V100 32GB連240億參數(shù)都能拿下。
相比于PyTorch和業(yè)界主流的DeepSpeed方法,提升參數(shù)容量能達到10多倍。
而且這種方法完全開源,只需要幾行代碼就能搞定,修改量也非常少。
這波操作真是直接腰斬大模型訓(xùn)練門檻啊,老黃豈不是要血虧。
那么,搞出如此大名堂的是何方大佬呢?
它就是國產(chǎn)開源項目Colossal-AI。
自開源以來,曾多次霸榜GitHub熱門第一。
△開源地址:https://github.com/hpcaitech/ColossalAI
主要做的事情就是加速各種大模型訓(xùn)練,GPT-2、GPT-3、ViT、BERT等模型都能搞定。
比如能半小時左右預(yù)訓(xùn)練一遍ViT-Base/32,2天訓(xùn)完15億參數(shù)GPT模型、5天訓(xùn)完83億參數(shù)GPT模型。
同時還能省GPU。
比如訓(xùn)練GPT-3時使用的GPU資源,可以只是英偉達Megatron-LM的一半。
那么這一回,它又是如何讓單塊GPU訓(xùn)練百億參數(shù)大模型的呢?
我們深扒了一下原理~
為什么單張消費級顯卡很難訓(xùn)練AI大模型?
顯存有限,是最大的困難。
當(dāng)今大模型風(fēng)頭正盛、效果又好,誰不想上手感受一把?
但動不動就“CUDA out of memory”,著實讓人遭不住。
目前,業(yè)界主流方法是微軟DeepSpeed提出的ZeRO(Zero Reduency Optimizer)。
它的主要原理是將模型切分,把模型內(nèi)存平均分配到單個GPU上。
數(shù)據(jù)并行度越高,GPU上的內(nèi)存消耗越低。
這種方法在CPU和GPU內(nèi)存之間僅使用靜態(tài)劃分模型數(shù)據(jù),而且內(nèi)存布局針對不同的訓(xùn)練配置也是恒定的。
由此會導(dǎo)致兩方面問題。
第一,當(dāng)GPU或CPU內(nèi)存不足以滿足相應(yīng)模型數(shù)據(jù)要求時,即使還有其他設(shè)備上有內(nèi)存可用,系統(tǒng)還是會崩潰。
第二,細粒度的張量在不同內(nèi)存空間傳輸時,通信效率會很低;當(dāng)可以將模型數(shù)據(jù)提前放置到目標(biāo)計算設(shè)備上時,CPU-GPU的通信量又是不必要的。
目前已經(jīng)出現(xiàn)了不少DeepSpeed的魔改版本,提出使用電腦硬盤來動態(tài)存儲模型,但是硬盤的讀寫速度明顯低于內(nèi)存和顯存,訓(xùn)練速度依舊會被拖慢。
針對這些問題,Colossal-AI采用的解決思路是高效利用GPU+CPU的異構(gòu)內(nèi)存。
具體來看,是利用深度學(xué)習(xí)網(wǎng)絡(luò)訓(xùn)練過程中不斷迭代的特性,按照迭代次數(shù)將整個訓(xùn)練過程分為預(yù)熱和正式兩個階段。
預(yù)熱階段,監(jiān)測采集到非模型數(shù)據(jù)內(nèi)存信息;
正式階段,根據(jù)采集到的信息,預(yù)留出下一個算子在計算設(shè)備上所需的峰值內(nèi)存,移動出一些GPU模型張量到CPU內(nèi)存。
大概邏輯如下所示:
這里稍微展開說明下,模型數(shù)據(jù)由參數(shù)、梯度和優(yōu)化器狀態(tài)組成,它們的足跡和模型結(jié)構(gòu)定義有關(guān)。
非模型數(shù)據(jù)由operator生成的中間張量組成,會根據(jù)訓(xùn)練任務(wù)的配置(如批次大?。﹦討B(tài)變化。
它倆常干的事呢,就是搶GPU顯存。
所以,就需要在GPU顯存不夠時CPU能來幫忙,與此同時還要避免其他情況下內(nèi)存浪費。
Colossal-AI高效利用GPU+CPU的異構(gòu)內(nèi)存,就是這樣的邏輯。
而以上過程中,獲取非模型數(shù)據(jù)的內(nèi)存使用量其實非常難。
因為非模型數(shù)據(jù)的生存周期并不歸用戶管理,現(xiàn)有的深度學(xué)習(xí)框架沒有暴露非模型數(shù)據(jù)的追蹤接口給用戶。其次,CUDA context等非框架開銷也需要統(tǒng)計。
在這里Colossal-AI的解決思路是,在預(yù)熱階段用采樣的方式,獲得非模型數(shù)據(jù)對CPU和GPU的內(nèi)存的使用情況。
簡單來說,這是道加減法運算:
非數(shù)據(jù)模型使用 =兩個統(tǒng)計時刻之間系統(tǒng)最大內(nèi)存使用 — 模型數(shù)據(jù)內(nèi)存使用
已知,模型數(shù)據(jù)內(nèi)存使用可以通過查詢管理器得知。
具體來看就是下面醬嬸的:
所有模型數(shù)據(jù)張量交給內(nèi)存管理器管理,每個張量標(biāo)記一個狀態(tài)信息,包括HOLD、COMPUTE、FREE等。
然后,根據(jù)動態(tài)查詢到的內(nèi)存使用情況,不斷動態(tài)轉(zhuǎn)換張量狀態(tài)、調(diào)整張量位置,更高效利用GPU顯存和CPU內(nèi)存。
在硬件非常有限的情況下,最大化模型容量和平衡訓(xùn)練速度。這對于AI普及化、低成本微調(diào)大模型下游任務(wù)等,都具有深遠意義。
而且最最最關(guān)鍵的是——加內(nèi)存條可比買高端顯卡劃 算 多 了。
前不久,Colossal-AI還成功復(fù)現(xiàn)了谷歌的最新研究成果PaLM (Pathways Language Model),表現(xiàn)同樣非常奈斯,而微軟DeepSpeed目前還不支持PaLM模型。
前面也提到,Colossal-AI能挑戰(zhàn)的任務(wù)非常多,比如加速訓(xùn)練、節(jié)省GPU資源。
那么它是如何做到的呢?
簡單來說,Colossal-AI就是一個整合了多種并行方法的系統(tǒng),提供的功能包括多維并行、大規(guī)模優(yōu)化器、自適應(yīng)任務(wù)調(diào)度、消除冗余內(nèi)存等。
目前,基于Colossal-AI的加速方案FastFold,能夠?qū)⒌鞍踪|(zhì)結(jié)構(gòu)預(yù)測模型AlphaFold的訓(xùn)練時間,從原本的11天,減少到只需67小時。
而且總成本更低,在長序列推理任務(wù)中,也能實現(xiàn)9~11.6倍的速度提升。
這一方案成功超越谷歌和哥倫比亞大學(xué)的方法。
此外,Colossal-AI還能只用一半GPU數(shù)量訓(xùn)練GPT-3。
相比英偉達方案,Colossal-AI僅需一半的計算資源,即可啟動訓(xùn)練;若使用相同計算資源,則能提速11%,可降低GPT-3訓(xùn)練成本超百萬美元。
與此同時,Colossal-AI也非常注重開源社區(qū)建設(shè),提供中文教程、開放用戶社群論壇,根據(jù)大家的需求反饋不斷更新迭代。
比如之前有讀者留言說,Colossal-AI要是能在普通消費級顯卡上跑就好了。
這不,幾個月后,已經(jīng)安排好了~
看到這里,是不是覺得Colossal-AI確實值得標(biāo)星關(guān)注一發(fā)?
實際上,這一國產(chǎn)項目背后的研發(fā)團隊來頭不小。
領(lǐng)銜者,正是LAMB優(yōu)化器的提出者尤洋。
他曾以第一名的成績保送清華計算機系碩士研究生,后赴加州大學(xué)伯克利分校攻讀CS博士學(xué)位。
拿過IPDPS/ICPP最佳論文、ACM/IEEE George Michael HPC Fellowship、福布斯30歲以下精英(亞洲 2021)、IEEE-CS超算杰出新人獎、UC伯克利EECS Lotfi A. Zadeh優(yōu)秀畢業(yè)生獎。
在谷歌實習(xí)期間,憑借LAMB方法,尤洋曾打破BERT預(yù)訓(xùn)練世界紀(jì)錄。
據(jù)英偉達官方GitHub顯示,LAMB比Adam優(yōu)化器快出整整72倍。微軟的DeepSpeed也采用了LAMB方法。
2021年,尤洋回國創(chuàng)辦潞晨科技——一家主營業(yè)務(wù)為分布式軟件系統(tǒng)、大規(guī)模人工智能平臺以及企業(yè)級云計算解決方案的AI初創(chuàng)公司。
團隊的核心成員均來自美國加州大學(xué)伯克利分校、哈佛大學(xué)、斯坦福大學(xué)、芝加哥大學(xué)、清華大學(xué)、北京大學(xué)、新加坡國立大學(xué)、新加坡南洋理工大學(xué)等國內(nèi)外知名高校;擁有Google Brain、IBM、Intel、 Microsoft、NVIDIA等知名廠商工作經(jīng)歷。
公司成立即獲得創(chuàng)新工場、真格基金等多家頂尖VC機構(gòu)種子輪投資。
潞晨CSO Prof. James Demmel為加州大學(xué)伯克利分校杰出教授、ACM/IEEE Fellow,同時還是美國科學(xué)院、工程院、藝術(shù)與科學(xué)院三院院士。
傳送門:https://github.com/hpcaitech/ColossalAI
參考鏈接:https://medium.com/@hpcaitech/train-18-billion-parameter-gpt-models-with-a-single-gpu-on-your-personal-computer-8793d08332dc
— 完—
關(guān)鍵詞: 加州大學(xué)伯克利分校 使用情況 預(yù)熱階段