CPM-Ant 再回顧:CPM-Live第一個(gè)里程碑

前幾期的專欄文章已經(jīng)詳盡介紹了OpenBMB的開(kāi)源社區(qū)和核心工具包,依托開(kāi)源社區(qū)和工具包,我們發(fā)起了大模型直播訓(xùn)練CPM-Live。
盡管首期CPM-Ant的報(bào)告早在九月就發(fā)布了,但B站尚未發(fā)布相關(guān)信息,因此我們決定和B站的朋友一起再回顧一次精彩的CPM- Ant!
CPM-Ant 作為國(guó)內(nèi)首個(gè)直播訓(xùn)練百億大模型,訓(xùn)練耗時(shí) 68 天,于 2022 年 8 月 5 日完成, 是CPM-Live 的第一個(gè)里程碑。
五大卓越特性
四大創(chuàng)新突破
訓(xùn)練過(guò)程 低成本且環(huán)境友好!
最重要的是——完全開(kāi)源!
CPM-Ant 在大模型訓(xùn)練、微調(diào)、壓縮、推理、應(yīng)用等環(huán)節(jié)均提供了一份可行的實(shí)踐方案,希望能為不同的關(guān)注者提供不同的幫助與參考。

模型概覽
CPM-Ant是一個(gè)開(kāi)源的中文預(yù)訓(xùn)練語(yǔ)言模型,擁有?10B?參數(shù)。它是?CPM-Live?直播訓(xùn)練過(guò)程中的第一個(gè)里程碑。訓(xùn)練過(guò)程是低成本和環(huán)境友好的?;谠隽课⒄{(diào)(delta tuning)方法,CPM-Ant?在?CUGE 基準(zhǔn)測(cè)試中取得了優(yōu)異的結(jié)果。除了完整的模型,我們還提供各種壓縮版本以適應(yīng)不同的硬件配置。CPM-Ant 相關(guān)代碼、日志文件和模型參數(shù)在一個(gè)開(kāi)放的許可協(xié)議下完全開(kāi)源。具體來(lái)說(shuō),CPM-Ant 具有如下特點(diǎn):
計(jì)算高效。BMTrain [1]?工具包讓我們能夠充分利用分布式計(jì)算資源的能力以高效訓(xùn)練大模型。CPM-Ant?的訓(xùn)練持續(xù)了?68?天,花費(fèi)了?43?萬(wàn)人民幣,是谷歌訓(xùn)練?T5-11B?模型約130?萬(wàn)美元費(fèi)用的?1/20。訓(xùn)練CPM-Ant的溫室氣體排放量約為?4872kg CO2e,而訓(xùn)練?T5-11B?的排放量為 46.7t CO2e [9],我們的方案約為其排放量的?1/10。
性能優(yōu)異。OpenDelta [3] 工具讓我們能夠非常方便地通過(guò)增量微調(diào)將 CPM-Ant?適配到下游任務(wù)。在我們的實(shí)驗(yàn)中,CPM-Ant僅僅?微調(diào)了?6.3M 參數(shù)?就在 3/6 個(gè) CUGE?任務(wù)上取得了最好的結(jié)果。這一結(jié)果超越了其他全參數(shù)微調(diào)的模型,如 CPM2?微調(diào)了?11B?參數(shù),CPM-Ant 的微調(diào)參數(shù)量為 CPM2 的?0.06%。
部署經(jīng)濟(jì)。BMCook [7] 和 BMInf [4] 工具包讓我們能夠在有限的計(jì)算資源下驅(qū)動(dòng)?CPM-Ant?;?BMInf,我們能夠替代計(jì)算集群?在單塊?GPU?上進(jìn)行大模型推理(即便是一塊GTX 1060 這樣的消費(fèi)級(jí)顯卡)。為了使 CPM-Ant 的部署更加經(jīng)濟(jì),我們使用 BMCook?進(jìn)一步將原始的?10B?模型壓縮為不同的版本。壓縮后的模型(7B,3B,1B,300M)能夠適應(yīng)不同低資源場(chǎng)景下的需求。
使用便捷。不管是原始 10B?模型還是相關(guān)的壓縮版本,通過(guò)幾行代碼就能夠輕松地加載與運(yùn)行。我們也會(huì)將 CPM-Ant 加入到?ModelCenter [8]中,對(duì)模型的進(jìn)一步開(kāi)發(fā)會(huì)變得更加容易。
開(kāi)放民主。CPM-Ant 的訓(xùn)練過(guò)程完全開(kāi)放。我們將會(huì)發(fā)布所有的代碼、日志文件和模型存檔并提供開(kāi)放獲取。CPM-Ant 也采用了允許商業(yè)化的開(kāi)放許可協(xié)議。

To 大模型提供者:一份完整的大模型訓(xùn)練實(shí)踐
對(duì)于有能力進(jìn)行大模型訓(xùn)練的廠商與研究機(jī)構(gòu),CPM-Ant?訓(xùn)練過(guò)程提供了一份完整的中文大模型訓(xùn)練實(shí)戰(zhàn)記錄。
訓(xùn)練開(kāi)始前,我們發(fā)布了 CPM-Live 系列模型的模型設(shè)計(jì)、訓(xùn)練方案、數(shù)據(jù)需求和實(shí)現(xiàn)代碼,如果您也希望能夠訓(xùn)練一個(gè)大模型,可以方便快速地基于 CPM-Live 的模型架構(gòu)設(shè)計(jì)實(shí)現(xiàn)您的方案并整理相關(guān)的業(yè)務(wù)數(shù)據(jù),完成模型預(yù)研和數(shù)據(jù)準(zhǔn)備工作。
訓(xùn)練過(guò)程中,我們?cè)诠俜骄W(wǎng)站記錄了全部訓(xùn)練動(dòng)態(tài),包括損失函數(shù)、學(xué)習(xí)率、已學(xué)習(xí)數(shù)據(jù)、吞吐量、梯度大小、花費(fèi)成本曲線,以及模型內(nèi)部參數(shù)均值和標(biāo)準(zhǔn)差實(shí)時(shí)展示,幫助使用者快速診斷模型訓(xùn)練過(guò)程是否出現(xiàn)問(wèn)題。

除實(shí)時(shí)訓(xùn)練動(dòng)態(tài)外,我們的研發(fā)同學(xué)每天也實(shí)時(shí)更新了訓(xùn)練記錄總結(jié),總結(jié)內(nèi)容包括損失值、梯度值、總體進(jìn)展,還記錄了遇到的一些問(wèn)題和訓(xùn)練過(guò)程中的 bug,方便您提前了解模型訓(xùn)練過(guò)程中的可能會(huì)遇到的各種“坑”。在模型訓(xùn)練“風(fēng)平浪靜”的日子,研發(fā)小哥也會(huì)拋出一些名言名句、介紹一些最新論文、甚至發(fā)起猜謎活動(dòng),細(xì)細(xì)讀之相信會(huì)別有收獲。

除此之外,我們還提供了成本經(jīng)濟(jì)的訓(xùn)練方案,使用 BMTrain [1]工具包,百億大模型 CPM-Ant?訓(xùn)練的算力花費(fèi)僅 43?萬(wàn)人民幣(當(dāng)前算力依照公有云價(jià)格計(jì)算,實(shí)際成本會(huì)更低),是 11B 大模型T5外界估算成本 130 萬(wàn)美元的約 1/20。對(duì)于實(shí)際有大模型訓(xùn)練需求的企業(yè),通過(guò) OpenBMB 相關(guān)訓(xùn)練加速技術(shù),訓(xùn)練成本已經(jīng)降低到可以接受的水平。

To 大模型研究者:一份屢創(chuàng)SOTA的高效微調(diào)方案
對(duì)于大模型研究者,我們提供了一份基于參數(shù)高效微調(diào)的大模型性能評(píng)測(cè)方案,方便快速進(jìn)行下游任務(wù)適配并評(píng)測(cè)模型性能。
具體而言,我們使用參數(shù)高效微調(diào),即增量微調(diào)(delta tuning)來(lái)評(píng)估 CPM-Ant?在六個(gè)下游任務(wù)上的性能。我們?cè)趯?shí)驗(yàn)中采用了 LoRA [2],它在每個(gè)注意層中插入了兩個(gè)可調(diào)整的低秩矩陣,并凍結(jié)了原始模型的所有參數(shù)。使用這種方法,我們?yōu)槊總€(gè)任務(wù)只微調(diào)了?6.3M?的參數(shù),僅占總參數(shù)的?0.067%。
在 OpenDelta [3]的幫助下,我們進(jìn)行了所有的實(shí)驗(yàn),而沒(méi)有修改原始模型的代碼。需要指出的是,在下游任務(wù)上評(píng)測(cè) CPM-Ant 模型時(shí),我們沒(méi)有使用任何數(shù)據(jù)增強(qiáng)的方法。實(shí)驗(yàn)結(jié)果如下表所示:

可以看到在僅微調(diào)極少參數(shù)的情況下,我們的模型在三個(gè)數(shù)據(jù)集上的性能已經(jīng)超過(guò)了 CPM-2?和源1.0。同時(shí)我們也發(fā)現(xiàn),有些任務(wù)(例如 LCSTS)在微調(diào)參數(shù)極少時(shí)可能會(huì)比較難以學(xué)習(xí)。
CPM-Live 的訓(xùn)練過(guò)程將會(huì)繼續(xù),我們會(huì)進(jìn)一步打磨 CPM-Live?在各個(gè)任務(wù)上的性能。我們也歡迎各位研究者使用 CPM-Ant?和 OpenDelta,進(jìn)一步探索 CPM-Ant 在其他任務(wù)上的能力。?

To 大模型使用者:一系列硬件友好的推理方式
對(duì)于大模型使用者,我們提供了一系列硬件友好的使用方式,能夠較為方便地在不同硬件環(huán)境下運(yùn)行不同的模型版本。
使用?BMInf [4] 工具包,使用者可以將?CPM-Ant?運(yùn)行在單卡 1060 這樣的低資源環(huán)境中。除此之外,我們還將 CPM-Ant 進(jìn)行了壓縮。這些壓縮的模型包括 CPM-Ant-7B/3B/1B/0.3B。而所有這些模型壓縮尺寸都可以對(duì)應(yīng)于現(xiàn)有的開(kāi)源預(yù)訓(xùn)練語(yǔ)言模型的經(jīng)典尺寸。
考慮到用戶可能會(huì)在我們發(fā)布的檢查點(diǎn)上進(jìn)行進(jìn)一步的開(kāi)發(fā),我們主要使用任務(wù)無(wú)關(guān)的結(jié)構(gòu)化剪枝來(lái)壓縮 CPM-Ant。剪枝過(guò)程也是漸進(jìn)的,即從 10B 到?7B,從?7B到?3B,從?3B到?1B,最后從?1B 到 0.3B。在具體的剪枝過(guò)程中,我們會(huì)訓(xùn)練一個(gè)動(dòng)態(tài)的可學(xué)習(xí)的掩碼矩陣,然后用這個(gè)掩碼矩陣來(lái)裁剪相應(yīng)的參數(shù)。最后,根據(jù)掩碼矩陣的閾值修剪參數(shù),該閾值是根據(jù)目標(biāo)稀疏度確定的。更多壓縮的細(xì)節(jié)可以參考我們的技術(shù)博客 [5]。下表展示了模型壓縮的結(jié)果。


To 大模型開(kāi)發(fā)者:一款出乎意料的大模型趣味應(yīng)用
對(duì)于大模型開(kāi)發(fā)者與愛(ài)好者,您可以基于?CPM-Ant?開(kāi)發(fā)任何文本趣味應(yīng)用。
為了進(jìn)一步驗(yàn)證模型的有效性并提供范例,我們?cè)?CPM-Ant?基礎(chǔ)上微調(diào)了一個(gè)標(biāo)題生成器以展示模型能力,該生成器能夠?qū)iT生成勁爆標(biāo)題。

感興趣的用戶也可以使用?CPM-Ant?構(gòu)建您自己的展示應(yīng)用。如果您有任何應(yīng)用想法、需要技術(shù)支持或者使用我們的 demo 遇到任何問(wèn)題,歡迎您隨時(shí)在我們的論壇 [6] 發(fā)起討論!

結(jié)語(yǔ)
作為首個(gè)直播訓(xùn)練中文大模型,CPM-Ant 在大模型訓(xùn)練、微調(diào)、壓縮、推理、應(yīng)用等環(huán)節(jié)均提供了一份可行的實(shí)踐方案,希望能為不同的關(guān)注者提供不同的幫助與參考。
CPM-Live?仍在持續(xù)學(xué)習(xí),簡(jiǎn)單劇透一下,新一期的 CPM-Bee 增加了多語(yǔ)言支持、結(jié)構(gòu)化輸入輸出等新特性,并且即將發(fā)布一個(gè)實(shí)用且易用的多功能文本工具,敬請(qǐng)大家期待。
?? 傳送門
?? 項(xiàng)目 github 地址:https://github.com/OpenBMB/CPM-Live
???demo 體驗(yàn)地址(僅限PC訪問(wèn)):https://live.openbmb.org/ant
?? 參考資料
1.?BMTrain: https://github.com/OpenBMB/BMTrain
2.?LoRA: Low-Rank Adaptation of Large Language Models. ICLR 2021.
3.?OpenDelta: https://github.com/thunlp/OpenDelta
4.?BMInf: https://github.com/OpenBMB/BMInf
5.?技術(shù)博客:https://www.openbmb.org/community/blogs/blogpage?id=98afef2ce45f4fe9a4bc15a66d7ccb92
6.?CPM-Live論壇:https://github.com/OpenBMB/CPM-Live/discussions/categories/application-ideas-%E5%BA%94%E7%94%A8%E6%83%B3%E6%B3%95
7.?BMCook: https://github.com/OpenBMB/BMCook
8.?Model Center: https://github.com/OpenBMB/ModelCenter
9.?Carbon emissions and large neural network training. https://arxiv.org/pdf/2104.10350.pdf

???關(guān)注我們
微信搜索關(guān)注 “OpenBMB開(kāi)源社區(qū)”
后臺(tái)回復(fù)“CPM-Live”?即可加入CPM-Live加油群
還可獲取更多大模型干貨知識(shí)和前沿資訊!

?? 傳送門|相關(guān)鏈接
?? ?官方網(wǎng)站:https://www.openbmb.org
?? ?GitHub:https://github.com/OpenBMB
?? ?交流QQ群:735930538
?? ?啟智社區(qū):https://git.openi.org.cn/OpenBMB
?? ?微博:http://weibo.cn/OpenBMB
?? ?知乎:https://www.zhihu.com/people/OpenBMB
?? ?Twitter:https://twitter.com/OpenBMB ?
