java做網(wǎng)站開(kāi)發(fā)書(shū)seo綜合查詢 站長(zhǎng)工具
當(dāng)前,ChatGLM-6B 在自然語(yǔ)言處理領(lǐng)域日益流行。其卓越的技術(shù)特點(diǎn)和強(qiáng)大的語(yǔ)言建模能力使其成為對(duì)話語(yǔ)言模型中的佼佼者。讓我們深入了解 ChatGLM-6B 的技術(shù)特點(diǎn),探索它在對(duì)話模型中的創(chuàng)新之處。
GLM: 自回歸空白填充的多任務(wù)預(yù)訓(xùn)練語(yǔ)言模型
- ChatGLM-6B 技術(shù)特點(diǎn)詳解
- GLM
- GLM(General Language Model)發(fā)展背景:
- GLM特點(diǎn):
- GLM的改進(jìn):
- GLM預(yù)訓(xùn)練框架
- 預(yù)訓(xùn)練目標(biāo)
- 自回歸空白填充
- 多任務(wù)預(yù)訓(xùn)練
- 模型架構(gòu)
- 2D 位置編碼
- 微調(diào) GLM
- 對(duì)比
- 與 BERT 的比較
- 與 XLNet 的比較
- 與 T5 的比較
- 與 UniLM 的比較
ChatGLM-6B 技術(shù)特點(diǎn)詳解
ChatGLM-6B 是一個(gè)開(kāi)源的、支持中英雙語(yǔ)的對(duì)話語(yǔ)言模型,基于 General Language Model (GLM) 架構(gòu),具有 62 億參數(shù),基于原文提煉出一些特點(diǎn)
- Tokenization(標(biāo)記化)
論文采用了基于 icetk 包的文本標(biāo)記器,詞匯量達(dá)到 150,000,其中包括 20,000 個(gè)圖像標(biāo)記和 130,000 個(gè)文本標(biāo)記。標(biāo)記的范圍從 No.20000 到 No.145653,其中包括常見(jiàn)標(biāo)點(diǎn)、數(shù)字和無(wú)擴(kuò)展定義的空格。 - 層規(guī)范化
層規(guī)范化在語(yǔ)言建模問(wèn)題中的重要性得到了深入討論。論文采用了 DeepNorm 作為 Post-LN 方法,取代了傳統(tǒng)的 Pre-LN 方法。該決策是為了應(yīng)對(duì)模型規(guī)模擴(kuò)大至 100B 甚至遇到多模態(tài)數(shù)據(jù)時(shí) Pre-LN 的訓(xùn)練困難的問(wèn)題。 - 管道并行分析
管道并行性的優(yōu)化對(duì)于訓(xùn)練效率至關(guān)重要。論文引入了 Gpipe 和 PipeDream-Flush 策略。在實(shí)際 GLM-130B 的預(yù)訓(xùn)練中,通過(guò)調(diào)整微批次的數(shù)量,成功減少了 GPU 內(nèi)存泡沫的占用。具體而言,當(dāng)微批次數(shù)(m)大于等于 4 倍管道數(shù)(p)時(shí),總 GPU 內(nèi)存泡沫的占比可以被降低到可接受的水平。 - 權(quán)重量化
為了在推理過(guò)程中節(jié)省 GPU 內(nèi)存,論文采用了權(quán)重量化技術(shù)。Absmax 量化方法在性能和計(jì)算效率上的平衡得到了充分的考慮。以下是量化結(jié)果的比較:
Model | Original | Absmax INT8 | Absmax INT4 | Zeropoint INT4
-----------|----------|-------------|-------------|----------------
BLOOM-176B | 64.37% | 65.03% | 34.83% | 48.26%
GLM-130B | 80.21% | 80.21% | 79.47% | 80.63%
這表明 GLM-130B 在 INT4 精度下能夠保持較高性能,同時(shí)有效地減少 GPU 內(nèi)存占用。考慮到ChatGLM-6B是基于 General Language Model (GLM) 架構(gòu)實(shí)現(xiàn)的,下文將詳細(xì)對(duì)GLM架構(gòu)展開(kāi)介紹。
GLM
這個(gè)圖展示了GLM(General Language Model)的基本原理。在這個(gè)模型中,我們首先將文本中的一些部分(綠色部分)標(biāo)記為空白,也就是我們遮擋了其中的一些文本片段。接下來(lái),我們通過(guò)自回歸的方式逐步生成這些被遮擋的文本片段。也就是說(shuō),我們從左到右逐個(gè)預(yù)測(cè)每個(gè)被遮擋的位置上應(yīng)該是什么詞語(yǔ),然后將這些預(yù)測(cè)組合起來(lái)形成完整的文本。
這個(gè)過(guò)程類似于我們填寫(xiě)一篇文章的空白部分,通過(guò)上下文逐步補(bǔ)充缺失的信息。
GLM(General Language Model)發(fā)展背景:
當(dāng)前存在多種預(yù)訓(xùn)練模型架構(gòu),如自編碼模型(BERT)、自回歸模型(GPT)和編碼-解碼模型(T5)。然而,這些框架在自然語(yǔ)言理解(NLU)、無(wú)條件生成和條件生成等任務(wù)中均無(wú)法在所有方面表現(xiàn)最佳。
GLM特點(diǎn):
GLM是一種基于自回歸空白填充的通用語(yǔ)言模型。它通過(guò)在輸入文本中隨機(jī)空白化連續(xù)跨度的令牌,并訓(xùn)練模型順序重構(gòu)這些跨度來(lái)進(jìn)行預(yù)訓(xùn)練。GLM改進(jìn)了空白填充預(yù)訓(xùn)練,引入了2D位置編碼和允許以任意順序預(yù)測(cè)跨度的機(jī)制。GLM能夠處理不同類型任務(wù)的預(yù)訓(xùn)練,通過(guò)變化空白的數(shù)量和長(zhǎng)度,實(shí)現(xiàn)了對(duì)條件和無(wú)條件生成任務(wù)的預(yù)訓(xùn)練。
GLM的改進(jìn):
GLM在實(shí)現(xiàn)自回歸空白填充時(shí)引入了兩個(gè)關(guān)鍵改進(jìn):1)跨度洗牌,即對(duì)空白的連續(xù)跨度進(jìn)行隨機(jī)排序;2)2D位置編碼,為每個(gè)位置引入二維位置編碼。這些改進(jìn)使得GLM在相同參數(shù)和計(jì)算成本下顯著優(yōu)于BERT,并在多任務(wù)學(xué)習(xí)中表現(xiàn)卓越,尤其在NLU和生成任務(wù)中。
自回歸模型(例如GPT):
- 原理: 自回歸模型是一種通過(guò)學(xué)習(xí)從左到右的語(yǔ)言模型來(lái)預(yù)訓(xùn)練的框架。它的核心思想是根據(jù)上下文左側(cè)的單詞來(lái)預(yù)測(cè)下一個(gè)單詞,實(shí)現(xiàn)對(duì)整個(gè)文本的逐詞建模。
- 特點(diǎn):
-
- 優(yōu)勢(shì)在于適用于長(zhǎng)文本生成,并在參數(shù)規(guī)模較大時(shí)表現(xiàn)出良好的性能。
-
- 不足之處在于其單向的注意力機(jī)制,不能完全捕捉自然語(yǔ)言理解任務(wù)中上下文詞匯之間的依賴關(guān)系。
自編碼模型(例如BERT):
- 原理: 自編碼模型通過(guò)學(xué)習(xí)一個(gè)對(duì)輸入進(jìn)行自編碼的目標(biāo),例如通過(guò)將輸入文本中的某些單詞隨機(jī)遮蔽,然后嘗試預(yù)測(cè)這些被遮蔽的單詞,從而達(dá)到學(xué)習(xí)雙向上下文表示的目的。
- 特點(diǎn):
-
- 通過(guò)雙向上下文編碼,適用于自然語(yǔ)言理解任務(wù),如文本分類、命名實(shí)體識(shí)別等。
-
- 不同于自回歸模型,可以同時(shí)考慮上下文中的所有詞,更好地捕捉依賴關(guān)系。
編碼-解碼模型(例如T5):
- 原理: 編碼-解碼模型采用編碼器-解碼器結(jié)構(gòu),其中編碼器通過(guò)雙向注意力機(jī)制對(duì)輸入進(jìn)行編碼,解碼器通過(guò)自回歸方式生成輸出。
- 特點(diǎn):
-
- 適用于條件生成任務(wù),如機(jī)器翻譯、文本摘要等。
-
- 結(jié)合了自編碼和自回歸的優(yōu)勢(shì),但通常需要更多的參數(shù)。
三大類預(yù)訓(xùn)練框架對(duì)比:
特點(diǎn) | 自回歸模型(GPT) | 自編碼模型(BERT) | 編碼-解碼模型(T5) |
---|---|---|---|
訓(xùn)練方向 | 左到右 | 雙向 | 雙向 |
任務(wù)適用性 | 長(zhǎng)文本生成 | 自然語(yǔ)言理解 | 條件生成任務(wù) |
上下文捕捉 | 單向上下文 | 雙向上下文 | 雙向上下文 |
應(yīng)用領(lǐng)域 | 生成任務(wù) | 自然語(yǔ)言理解任務(wù) | 條件生成任務(wù) |
訓(xùn)練效率 | 參數(shù)較大時(shí)效果較好 | 效果較好且能同時(shí)處理所有詞 | 參數(shù)相對(duì)較大 |
這些預(yù)訓(xùn)練框架在不同的任務(wù)和應(yīng)用場(chǎng)景中有各自的優(yōu)勢(shì)和不足,選擇合適的框架取決于具體任務(wù)的性質(zhì)和需求。
GLM預(yù)訓(xùn)練框架
我們提出了一個(gè)通用的預(yù)訓(xùn)練框架GLM,基于一種新穎的自回歸空白填充目標(biāo)。GLM將NLU任務(wù)形式化為包含任務(wù)描述的填空問(wèn)題,這些問(wèn)題可以通過(guò)自回歸生成來(lái)回答。
預(yù)訓(xùn)練目標(biāo)
自回歸空白填充
GLM通過(guò)優(yōu)化自回歸空白填充目標(biāo)進(jìn)行訓(xùn)練。在給定輸入文本 x = [ x 1 , ? ? ? , x n ] x = [x_1, · · · , x_n] x=[x1?,???,xn?]的情況下,抽樣多個(gè)文本片段 [ s 1 , ? ? ? , s m ] [s_1, · · · , s_m] [s1?,???,sm?],其中每個(gè)片段 s i s_i si?對(duì)應(yīng)于輸入文本 x x x中的一系列連續(xù)令牌 [ s i , 1 , . . . , s i , l i ] [s_{i,1}, ... , s_{i,l_i}] [si,1?,...,si,li??]。
每個(gè)片段用單個(gè) [ M A S K ] [MASK] [MASK]令牌替換,形成一個(gè)損壞的文本 x c o r r u p t x_{corrupt} xcorrupt?。模型根據(jù)損壞的文本以自回歸方式預(yù)測(cè)片段中缺失的令牌,具體而言,模型在預(yù)測(cè)一個(gè)片段的缺失令牌時(shí),可以訪問(wèn)損壞的文本以及先前預(yù)測(cè)的片段。為了全面捕捉不同片段之間的相互依賴關(guān)系,我們隨機(jī)排列了片段的順序。這種自回歸空白填充目標(biāo)通過(guò)引入二維位置編碼和允許以任意順序預(yù)測(cè)片段,改進(jìn)了填充預(yù)訓(xùn)練,并在 NLU 任務(wù)中相較于 BERT 和 T5 取得了性能提升。
具體而言,自回歸空白填充目標(biāo)的最大化似然函數(shù)為:
其中, Z m Z_m Zm?是長(zhǎng)度為 m m m的索引序列的所有可能排列的集合, s z < i s_{z<i} sz<i?為 [ s z 1 , ? ? ? , s z i ? 1 ] [s_{z_1}, · · · , s_{z_{i?1}}] [sz1??,???,szi?1??]。每個(gè)缺失令牌的生成概率在自回歸空白填充目標(biāo)下,被分解為:
為了實(shí)現(xiàn)自回歸生成,將輸入 x x x劃分為兩部分:Part A 是損壞的文本 x c o r r u p t x_{corrupt} xcorrupt??,Part B 包含被掩蔽的片段。Part A 中的令牌可以互相關(guān)注,但不能關(guān)注 B 中的任何令牌。Part B 中的令牌可以關(guān)注 Part A 以及 B 中的先行令牌,但不能關(guān)注 B 中的任何后續(xù)令牌。為了實(shí)現(xiàn)自回歸生成,每個(gè)片段都用特殊令牌 [START] 和 [END] 進(jìn)行填充,作為輸入和輸出。模型的實(shí)現(xiàn)如下圖所示:
這張圖片展示了GLM的預(yù)訓(xùn)練流程。原始文本被抽樣為多個(gè)片段,其中的一些被[MASK]替換,然后進(jìn)行自回歸生成。每個(gè)片段都以[S]開(kāi)始,[E]結(jié)束。2D位置編碼用于表示片段的內(nèi)部和相互之間的位置關(guān)系。
我們通過(guò)從泊松分布中抽樣長(zhǎng)度為 l i l_i li?的片段,反復(fù)抽樣新片段,直到至少 15% 的原始令牌被掩蔽,來(lái)確定片段的數(shù)量和長(zhǎng)度。實(shí)驗(yàn)證明,15% 的比例對(duì)于在下游 NLU 任務(wù)中取得良好性能至關(guān)重要。
多任務(wù)預(yù)訓(xùn)練
在上述自回歸空白填充目標(biāo)的基礎(chǔ)上,GLM 引入了多任務(wù)預(yù)訓(xùn)練。我們考慮了兩個(gè)附加目標(biāo):
- 文檔級(jí)別目標(biāo): 通過(guò)抽樣一個(gè)長(zhǎng)度在原始長(zhǎng)度的50%–100%之間的單個(gè)片段,鼓勵(lì)模型進(jìn)行長(zhǎng)文本生成
- 句子級(jí)別目標(biāo): 限制必須為完整句子的掩蔽片段,以涵蓋原始令牌的15%。這個(gè)目標(biāo)旨在處理通常需要生成完整句子或段落的 seq2seq 任務(wù)。
這兩個(gè)新目標(biāo)都采用與原始目標(biāo)相同的形式,但有不同數(shù)量和長(zhǎng)度的片段。
模型架構(gòu)
GLM 使用單個(gè) Transformer 模型,對(duì)其進(jìn)行了幾處修改:
- 將層歸一化和殘差連接的順序重新排列,以避免大規(guī)模語(yǔ)言模型中的數(shù)值錯(cuò)誤。
- 使用單個(gè)線性層進(jìn)行輸出令牌預(yù)測(cè)。
- 將 ReLU 激活函數(shù)替換為 GeLU(Gaussian Error Linear Unit)。
2D 位置編碼
自回歸空白填充任務(wù)的一個(gè)挑戰(zhàn)是如何編碼位置信息。為了解決這個(gè)問(wèn)題,GLM 引入了二維位置編碼。具體而言,每個(gè)令牌都用兩個(gè)位置 id 進(jìn)行編碼。第一個(gè)位置 id 表示在損壞的文本 x c o r r u p t x_{corrupt} xcorrupt?中的位置,對(duì)于被替換的片段,它是相應(yīng) [ M A S K ] [MASK] [MASK] 令牌的位置。第二個(gè)位置 id 表示片段內(nèi)部的位置。對(duì)于 Part A 中的令牌,它們的第二個(gè)位置 id 為0;對(duì)于 Part B 中的令牌,它們的第二個(gè)位置 id 在1到片段長(zhǎng)度之間。這兩個(gè)位置 id 通過(guò)可學(xué)習(xí)的嵌入表投影為兩個(gè)向量,然后與輸入令牌嵌入相加。
這種編碼確保了在模型重建片段時(shí),模型不知道被替換片段的長(zhǎng)度,這與其他模型不同。例如,XLNet 在推理時(shí)需要知道或枚舉答案的長(zhǎng)度,而 SpanBERT 替換了多個(gè) [ M A S K ] [MASK] [MASK]令牌并保持長(zhǎng)度不變。
微調(diào) GLM
通常,對(duì)于下游 NLU 任務(wù),線性分類器將預(yù)訓(xùn)練模型生成的序列或令牌表示作為輸入,并預(yù)測(cè)正確的標(biāo)簽。我們將 NLU 分類任務(wù)重新構(gòu)造為空白填充任務(wù),通過(guò) PET(Pattern-Exploiting Training)的方式,將輸入文本 x x x轉(zhuǎn)換為包含單個(gè)掩蔽令牌的填充問(wèn)題 c ( x ) c(x) c(x)。這個(gè)填充模板以自然語(yǔ)言編寫(xiě),以表示任務(wù)的語(yǔ)義,例如,情感分類任務(wù)可以被構(gòu)造成“{SENTENCE}. It’s really [MASK]”。候選標(biāo)簽 y ∈ Y y∈Y y∈Y也被映射到填充的答案,稱為 v e r b a l i z e r v ( y ) verbalizer v(y) verbalizerv(y)。在情感分類中,標(biāo)簽“positive”和“negative”被映射為“good”和“bad”。給定 x x x的條件下預(yù)測(cè) y y y的概率為:
微調(diào) GLM 采用交叉熵?fù)p失,具體形式如下圖所示:
對(duì)比
在這一節(jié)中,我們討論 GLM 與其他預(yù)訓(xùn)練模型的差異,并關(guān)注它們?nèi)绾芜m應(yīng)下游空白填充任務(wù)。
與 BERT 的比較
與 BERT 不同,GLM 在 MLM 的獨(dú)立性假設(shè)下,無(wú)法捕捉掩蔽令牌之間的相互依賴關(guān)系。BERT 的另一個(gè)劣勢(shì)是,它不能很好地填充多個(gè)令牌的空白。為了推斷長(zhǎng)度為 l l l的答案的概率,BERT 需要執(zhí)行 l l l個(gè)連續(xù)的預(yù)測(cè)。如果長(zhǎng)度 l l l未知,可能需要枚舉所有可能的長(zhǎng)度,因?yàn)?BERT 需要根據(jù)長(zhǎng)度改變 [MASK] 令牌的數(shù)量。這是 GLM 改進(jìn)的一個(gè)方面。
與 XLNet 的比較
GLM 和 XLNet 都是通過(guò)自回歸目標(biāo)進(jìn)行預(yù)訓(xùn)練的,但它們之間存在兩個(gè)主要區(qū)別。首先,XLNet 在損壞之前使用原始位置編碼。在推斷時(shí),我們需要知道或枚舉答案的長(zhǎng)度,這與 BERT 有相同的問(wèn)題。其次,XLNet 使用雙流自注意機(jī)制,而不是右移,以避免 Transformer 內(nèi)的信息泄漏。這導(dǎo)致了預(yù)訓(xùn)練的時(shí)間成本加倍。
與 T5 的比較
T5 提出了一種類似的空白填充目標(biāo),以預(yù)訓(xùn)練編碼器-解碼器 Transformer。T5 為編碼器和解碼器使用獨(dú)立的位置編碼,并依賴于多個(gè) sentinel 令牌來(lái)區(qū)分被掩蔽的片段。在下游任務(wù)中,只使用其中一個(gè) sentinel 令牌,導(dǎo)致模型容量的浪費(fèi)和預(yù)訓(xùn)練與微調(diào)之間的不一致性。此外,T5 總是按固定的從左到右順序預(yù)測(cè)片段,而 GLM 在 NLU 和 seq2seq 任務(wù)上可以使用更少的參數(shù)和數(shù)據(jù)獲得更好的性能。
與 UniLM 的比較
結(jié)合了不同的預(yù)訓(xùn)練目標(biāo),通過(guò)在自動(dòng)編碼框架中更改注意力掩碼,實(shí)現(xiàn)了在雙向、單向和交叉注意力之間的切換。然而,UniLM總是用[MASK]令牌替換掉掩蔽的片段,這限制了其建模掩蔽片段及其上下文之間依賴關(guān)系的能力。與之不同,GLM以自回歸的方式輸入前一個(gè)令牌并生成下一個(gè)令牌,提高了模型對(duì)片段和上下文之間依賴關(guān)系的建模能力。
UniLMv2在生成任務(wù)中采用了部分自回歸建模,同時(shí)在NLU任務(wù)中使用自動(dòng)編碼目標(biāo)。GLM通過(guò)自回歸預(yù)訓(xùn)練來(lái)統(tǒng)一NLU和生成任務(wù),使其在兩者之間更加高效。