突破顯存墻,BMInf 已支持 GLM-130B

8 月 4 日,清華大學(xué)聯(lián)合智譜 AI?發(fā)布了千億雙語大模型?GLM-130B,其在 LAMBADA 數(shù)據(jù)集上性能超越了 GPT3、OPT、BLOOM 等千億大模型,在零樣本場景上性能超越了 ERNIE TITAN 3.0,受到國內(nèi)外廣泛關(guān)注。
千億大模型 GLM-130B 參數(shù)量達(dá)到?260GB,如不進(jìn)行相關(guān)優(yōu)化,其推理仍需運行在一臺擁有 8 卡 A100?的服務(wù)器上(總顯存 320GB),具有較小顯存顯卡的服務(wù)器(如 8 卡 32G V100,總顯存為 256GB)無法直接支持運行??偟膩砜?,主流顯卡設(shè)計顯存較小??成為了大模型應(yīng)用過程中最關(guān)鍵的問題。
針對這一問題,OpenBMB的?BMInf?提供了參數(shù)內(nèi)存/顯存換入換出的高效計算技術(shù),能夠突破顯存墻,支持將?GLM-130B?全參數(shù)運行在顯存較小的主流顯卡與服務(wù)器上。BMInf已在8卡32G V100服務(wù)器上驗證了對GLM-130B的支持,BMInf理論上也支持GLM-130B運行在8卡1080Ti等較低顯存GPU服務(wù)器。

GLM-130B 簡介
GLM-130B? 是一個開源開放的雙語(中文和英文)雙向稠密模型,擁有 1300 億參數(shù),模型架構(gòu)采用通用語言模型(General Language Model, GLM)。能夠支持在一臺?A100(40G * 8)上對千億規(guī)模參數(shù)的模型進(jìn)行推理。截至 2022 年 7 月 3 日,GLM-130B 已完成 ?4000 億個文本標(biāo)識符(中文和英文各 2000 億)的訓(xùn)練。


BMInf 適配
GLM-130B 模型參數(shù)量達(dá) 260G,想要對 GLM-130B 進(jìn)行推理,最低需要 260G 的 GPU 顯存。如果擁有一臺配置了 8 塊 A100 40G 顯卡的服務(wù)器(共計 320G 顯存),可以方便地進(jìn)行 GLM-130B 推理。
然而,這樣一臺 8 卡 A100 服務(wù)器終究是價格高昂(且近日顯卡廠商對 A100?這樣的高端顯卡增加了銷售限制)。為此,大模型?運行時的顯存需求與主流顯卡設(shè)計顯存較小?之間的矛盾成為了關(guān)鍵的挑戰(zhàn)與問題。
BMInf 便是為這樣的需求而生。通過?高效的顯存/內(nèi)存換入換出,用戶可以突破大模型運行時的顯存限制,從顯存較小的顯卡上進(jìn)行大模型推理。

BMInf 的技術(shù)原理比較簡單。相對于較小的顯存,內(nèi)存往往容量更大而且價格也更加便宜。對于大模型所基于的 Transformer 架構(gòu)來說,每個大模型是由多層核心計算單元 Transfomer Block 堆疊而成(對于 GLM-130B 來說是 70 層)。
在推理的計算過程中,我們可以把顯存能夠容納的部分層參數(shù)加載到顯卡進(jìn)行計算,得到結(jié)果后將這部分參數(shù)換出到內(nèi)存中,再將之后幾層的參數(shù)換入到顯存中進(jìn)行計算,如此一來,便可以不再局限于將大模型全部參數(shù)放入顯存。雖然會帶來一定的計算時間延長,但理論上 BMInf 能夠?qū)?GLM-130B 運行在各類顯存較小的顯卡上。
除參數(shù)內(nèi)存/顯存換入換出技術(shù)外,BMInf也支持對于INT8量化模型的推理,相較于FP16精度的原模型來說,INT8量化后的模型參數(shù)將會縮小為原來的1/2,模型推理速度會得到進(jìn)一步提升,顯存的需求也將進(jìn)一步減少。

使用方式
我們在 8 卡 V100 的服務(wù)器上進(jìn)行了測試并提供了使用配置文件,使用方式如下:
???01?首先需要通過命令?“pip install bminf”?在您的環(huán)境中安裝 BMInf。
???02?之后參考 GLM-130B 文檔,在運行 scripts 文件夾中具體的腳本前需要將文件中的:
替換為:
之后便可以運行腳本進(jìn)行相應(yīng)操作。
這里的默認(rèn)配置為 V100 服務(wù)器,您可以通過修改配置文件中的?--bminf-memory-limit 字段將其適配到您的服務(wù)器顯卡上,如顯存為 24G,可以將其設(shè)置為低于 24G 的數(shù)值。
我們在 CoLA 數(shù)據(jù)集上進(jìn)行了?性能測試,這里 Micro Batch Size 設(shè)置為 30,--bminf-memory-limit 設(shè)置為 25GB,性能如下表所示。

綜上所述,BMInf 已支持將 GLM-130B 運行在?8 卡 V100 服務(wù)器!未來我們也會測試 BMInf 與?GLM 130B?在其他服務(wù)器配置上的性能,歡迎感興趣的研究人員與開發(fā)者加入?OpenBMB 開源社群,一起體驗千億大模型的魅力,共同探討大模型的落地與普及之路。
??傳送門|GitHub?鏈接 ?
????BMInf:?https://github.com/OpenBMB/BMInf
????GLM-130B:?https://github.com/THUDM/GLM-130B

關(guān)注我們
微信搜索關(guān)注 “OpenBMB開源社區(qū)”
加入社群或獲取更多大模型干貨知識和前沿資訊!?

??傳送門|相關(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?
