論文閱讀_ChatGLM


name_en: GLM-130B: AN OPEN BILINGUAL PRE-TRAINED
name_ch: Glm-130B:開(kāi)放雙語(yǔ)預(yù)訓(xùn)練模型
paper_addr: https://arxiv.org/abs/2210.02414
doi: 10.48550/arXiv.2210.02414
date_read: 2023-03-23
date_publish: 2023-01-01
tags: ['深度學(xué)習(xí)','自然語(yǔ)言處理']
author: Aohan Zeng
code: https://github.com/THUDM/GLM-130B/
citation: 4


讀后感

2022年11月寺酪,斯坦福大學(xué)大模型中心對(duì)全球30個(gè)主流大模型進(jìn)行了全方位的評(píng)測(cè)2秉剑,GLM-130B 是亞洲唯一入選的大模型。 GLM-130B 在準(zhǔn)確性和惡意性指標(biāo)上與 GPT-3 175B (davinci) 接近或持平杭隙。
ChatGLM最大的優(yōu)點(diǎn)是開(kāi)源廊敌,并針對(duì)中文進(jìn)行了優(yōu)化铜跑,尤其是可以在自己的機(jī)器上搭建其簡(jiǎn)版的int4服務(wù),實(shí)測(cè)回答一般性問(wèn)題效果還不錯(cuò)骡澈,文后附環(huán)境搭建方法锅纺。

摘要

ChatGLM是使用中英雙語(yǔ)預(yù)訓(xùn)練的大語(yǔ)言模型,具有130B參數(shù)(1300億)肋殴,使用400B token訓(xùn)練囤锉。
在模型結(jié)構(gòu)上結(jié)合了GPT和BERT。在英文方面疼电,效果優(yōu)于GPT-3嚼锄;在中文方面,優(yōu)于260B參數(shù)的ERNIE TITAN 3.0蔽豺∏螅可在4×RTX 3090 (24G) 或 8×RTX 2080 Ti (11G) GPUs 環(huán)境下運(yùn)行。

介紹

論文提出:通用語(yǔ)言模型General Language Model (GLM) 修陡,主要使用的技術(shù)是:雙向注意力和自回歸空白填充目標(biāo)沧侥。嵌入梯度收縮策略可以顯著提升GLM - 130B的訓(xùn)練穩(wěn)定性。

方法

結(jié)構(gòu)

GLM架構(gòu)

與GPT魄鸦,PaLM等模型使用Transformer的解碼器方式不同宴杀,GLM-130B使用了一種雙向通用語(yǔ)言模型(GLM)作為其Backbone。模型結(jié)構(gòu)詳見(jiàn)論文:Glm: General language model pretraining with autoregressive blank infilling (2022).

GLM是一種基于Transformer的語(yǔ)言模型拾因,它以自回歸空白填充為訓(xùn)練目標(biāo)旺罢。簡(jiǎn)而言之,對(duì)于一個(gè)文本序列x=[x1, · · · ,xn]绢记,從其中采樣文本span{s1扁达,· · ·,sm}蠢熄,其中每個(gè)si表示連續(xù)令牌的跨度跪解,并用單個(gè)掩碼替換si,要求模型對(duì)它們進(jìn)行自回歸恢復(fù)签孔。與GPT類模型不同的是叉讥,它在不Mask的位置使用雙向注意力窘行,因此它混合了兩種Mask,以支持理解和生成:

[MASK]:句子中的短空白图仓,長(zhǎng)度加總到輸入的某一部分
[gMASK]:隨機(jī)長(zhǎng)度的長(zhǎng)空白罐盔,加在提供前綴上下文的句子末尾

理論上,雙向注意力的空白填充目標(biāo)比GPT風(fēng)格的模型能夠更有效地理解語(yǔ)境:當(dāng)使用 MASK 時(shí)透绩,GLM- 130B表現(xiàn)類似BERT和T5翘骂;當(dāng)使用 gMASK 時(shí)壁熄,GLM - 130B表現(xiàn)出與 PrefixLM 相似的性質(zhì)帚豪。

GLM - 130B在零樣本LAMBADA上取得了80.2 %的高準(zhǔn)確率,優(yōu)于圖2中的GPT - 3和PaLM 540B草丧。

歸一化方法

歸一化有助于提升模型訓(xùn)練的穩(wěn)定性狸臣,文中使用了2022年提出的DeepNorm方法(詳見(jiàn)論文 :Deepnet: Scaling transformers to 1,000 layers),其公式為:
DeepNorm(x) = LayerNorm(α · x + Network(x))
α = (2N )^{\frac{1}{2}}
其中N為層數(shù)昌执。此方法有效地提升了訓(xùn)練穩(wěn)定性烛亦。

位置編碼和前饋網(wǎng)絡(luò)

對(duì)于GLM - 130B中的位置編碼采用旋轉(zhuǎn)位置編碼(RoPE),并選擇GeLU激活函數(shù)以優(yōu)化FFN懂拾。

訓(xùn)練設(shè)置

GLM - 130B預(yù)訓(xùn)練目標(biāo)不僅包括自監(jiān)督的GLM自回歸空白填充煤禽,還包括對(duì)小部分token的多任務(wù)學(xué)習(xí),以提升其下游zero-shot任務(wù)的性能岖赋。

自監(jiān)督空白填充(95%)

同時(shí)使用了 MASK 和 gMASK檬果,每個(gè)序列使用其中一種。具體來(lái)說(shuō)唐断,MASK用于在30 %的訓(xùn)練序列中掩蓋連續(xù)的Token以進(jìn)行空白填充选脊。對(duì)于其他70%的序列,保留每個(gè)序列的前綴作為上下文脸甘,并使用gMASK來(lái)掩蓋其余序列訓(xùn)練恳啥。
預(yù)訓(xùn)練數(shù)據(jù)包括1.2 T英語(yǔ)、1.0 T的中文悟道語(yǔ)料庫(kù)丹诀,以及從網(wǎng)絡(luò)爬取的250G中文語(yǔ)料庫(kù)(包括在線論壇钝的、百科全書(shū)和QA),形成了平衡的英漢內(nèi)容構(gòu)成铆遭。

多任務(wù)指導(dǎo)預(yù)訓(xùn)練(MIP硝桩,5%)

預(yù)訓(xùn)練中加入包括語(yǔ)言理解、生成和信息提取在內(nèi)的多種指令提示數(shù)據(jù)集訓(xùn)練模型疚脐。

并行訓(xùn)練和模型配置

在96個(gè)DGX - A100 GPU ( 8 × 40G )服務(wù)器集群上進(jìn)行了60天的訓(xùn)練亿柑。將pipline模型并行與其他兩種策略結(jié)合形成了3D并行策略。

模型訓(xùn)練的穩(wěn)定性

需要在精度和穩(wěn)定間保持平衡棍弄,低精度的FP格式提高了計(jì)算效率望薄,但容易出現(xiàn)溢出錯(cuò)誤疟游,導(dǎo)致訓(xùn)練崩潰。

混合精度

FP16用于前向和后向痕支,F(xiàn)P32用于優(yōu)化器狀態(tài)和主權(quán)重颁虐,以減少GPU內(nèi)存使用,提高訓(xùn)練效率卧须。

嵌入層梯度收縮

實(shí)驗(yàn)表明另绩,梯度范數(shù)可以作為訓(xùn)練崩潰的信息指標(biāo)。具體來(lái)說(shuō)花嘶,訓(xùn)練崩潰通常滯后于梯度范數(shù)中的"尖峰"幾個(gè)訓(xùn)練步笋籽。發(fā)現(xiàn)嵌入層的梯度收縮可以克服損失尖峰,從而穩(wěn)定GLM - 130B的訓(xùn)練椭员。

在 Rtx 2080 TI 上使用模型推理

在保持FP16激活精度的同時(shí)车海,重點(diǎn)關(guān)注模型權(quán)重的量化。量化后的模型在運(yùn)行時(shí)動(dòng)態(tài)轉(zhuǎn)換為FP16精度隘击,引入了較小的計(jì)算開(kāi)銷侍芝,大大降低了存儲(chǔ)模型權(quán)重的GPU內(nèi)存使用量。文中成功地實(shí)現(xiàn)了GLM - 130B的INT4權(quán)重量化埋同,目前模型已發(fā)布州叠,可下載使用。

實(shí)驗(yàn)

與英文模型比較:

與中文模型比較:

實(shí)戰(zhàn)——環(huán)境搭建

ChatGLM-6B 是一個(gè)具有62億參數(shù)的中英雙語(yǔ)語(yǔ)言模型凶赁,由大模型量化后得到咧栗,代碼+模型一共只有幾個(gè)G大小。

下載代碼和模型

由于我家機(jī)器性能有限哟冬,就下載了int4模型楼熄,約占空間5G左右,運(yùn)行時(shí)占GPU內(nèi)存5G左右浩峡。

$ git clone https://github.com/THUDM/ChatGLM-6B
$ git clone https://huggingface.co/THUDM/chatglm-6b-int4/

在網(wǎng)站 https://huggingface.co/THUDM/chatglm-6b-int4/tree/main 中下載:
ice_text.model 和 pytorch_model.bin 兩個(gè)大文件可岂,替換git中的文件。

下載運(yùn)行環(huán)境鏡像

如果使用docker啟動(dòng)翰灾,推薦鏡像:

$ docker pull pytorch/pytorch:1.13.1-cuda11.6-cudnn8-runtime

啟動(dòng)鏡像

$ nvidia-docker run -e "LC_ALL=zh_CN.UTF-8" -e "LANGUAGE=zh_CN.UTF-8" -e "LANG=zh_CN.UTF-8" -p 7860:7860 --rm -v /exports:/workspace/exports -it pytorch/pytorch:1.13.1-cuda11.6-cudnn8-runtime bash

調(diào)整代碼

修改web_demo.py

  • 修改模型名為指定目錄:
tokenizer = AutoTokenizer.from_pretrained("../chatglm-6b-int4/", trust_remote_code=True)
model = AutoModel.from_pretrained("../chatglm-6b-int4/", trust_remote_code=True).half().cuda()
  • 設(shè)置server_name為0.0.0.0缕粹,以便服務(wù)在docker外部調(diào)用
demo.queue().launch(share=False, inbrowser=True, server_name="0.0.0.0")

運(yùn)行服務(wù)

在鏡像內(nèi)部運(yùn)行

$ cd ChatGLM-6B/
$ pip install -r requirements.txt
$ python web_demo.py

啟動(dòng)服務(wù)后,就可以在宿主機(jī)瀏覽器中通過(guò)端口7860訪問(wèn)纸淮,效果如下:

個(gè)人覺(jué)得速度還挺快的平斩,回答效果也還行。

相關(guān)鏈接

ChatGLM項(xiàng)目地址
ChatGLM模型介紹
模型下載

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末咽块,一起剝皮案震驚了整個(gè)濱河市绘面,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖揭璃,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件晚凿,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡瘦馍,警方通過(guò)查閱死者的電腦和手機(jī)歼秽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)情组,“玉大人燥筷,你說(shuō)我怎么就攤上這事≡撼纾” “怎么了肆氓?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)亚脆。 經(jīng)常有香客問(wèn)我做院,道長(zhǎng)盲泛,這世上最難降的妖魔是什么濒持? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮寺滚,結(jié)果婚禮上柑营,老公的妹妹穿的比我還像新娘。我一直安慰自己村视,他們只是感情好官套,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著蚁孔,像睡著了一般奶赔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上杠氢,一...
    開(kāi)封第一講書(shū)人閱讀 49,749評(píng)論 1 289
  • 那天站刑,我揣著相機(jī)與錄音,去河邊找鬼鼻百。 笑死绞旅,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的温艇。 我是一名探鬼主播因悲,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼勺爱!你這毒婦竟也來(lái)了晃琳?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎卫旱,沒(méi)想到半個(gè)月后视哑,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡誊涯,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年挡毅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片暴构。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡跪呈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出取逾,到底是詐尸還是另有隱情耗绿,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布砾隅,位于F島的核電站误阻,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏晴埂。R本人自食惡果不足惜究反,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望儒洛。 院中可真熱鬧精耐,春花似錦、人聲如沸琅锻。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)恼蓬。三九已至惊完,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間处硬,已是汗流浹背小槐。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留郁油,地道東北人本股。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像桐腌,于是被迫代替她去往敵國(guó)和親拄显。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348