国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

這篇具有很好參考價(jià)值的文章主要介紹了LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

參考:

  • 《總結(jié)從T5、GPT-3、Chinchilla、PaLM、LLaMA、Alpaca等近30個(gè)最新模型》
  • LLaMA、Palm、GLM、BLOOM、GPT模型結(jié)構(gòu)對(duì)比

LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)
基礎(chǔ)模型:
LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)
下表是在上述基礎(chǔ)模型上進(jìn)行指令微調(diào)的大模型:
LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)
LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)
在datalearner.com上,可以查看所有已發(fā)布的AI大模型:

LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

一、 GPT系列

模型 發(fā)布日期
GPT 2018-11-14
GPT-2 2019-11-27
GPT-3 2020-6-11
InstructGPT 2022-3-4
ChatGPT 2022-11-30
GPT-4 2023-3-14
ChatGPT Plugin 2023-5-12

1.1 GPTs(OpenAI,2018——2020)

  • 《【LLM系列之GPT】》、視頻《GPT,GPT-2,GPT-3 論文精讀》
  • 《多圖詳解attention和mask。從循環(huán)神經(jīng)網(wǎng)絡(luò)、transformer到GPT2》、《datawhale課程《transformers入門》筆記3:圖解GPT-2》

??GPT是自回歸模型(auto-regression),使用 Transformer 的 Decoder 模塊構(gòu)建。原始的Transformer Decoder 比Encoder 多了一個(gè)encoder-decoder-attention層(第二個(gè)自注意力層,k和v來自encoder層最后的輸出memory),使得它可以關(guān)注來自 Encoder 的信息。在GPT中,使用的decoder去掉了這一層。

自回歸:生每個(gè) token 之后,將這個(gè) token 添加到輸入的序列中,形成一個(gè)新序列。然后這個(gè)新序列成為模型在下一個(gè)時(shí)間步的輸入。

LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)
??Mask 操作是在 Self-Attention 進(jìn)行 Softmax 之前進(jìn)行的,具體做法是將要 Mask 的位置用一個(gè)無窮小的數(shù)替換 -inf,然后再 Softmax,如下圖所示。
LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)
LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)
下圖是 GPT 整體模型圖,其中包含了 12 個(gè) Decoder:
LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)
GPT提出來“生成式預(yù)訓(xùn)練(無監(jiān)督)+判別式任務(wù)精調(diào)(有監(jiān)督)”的范式來處理NLP任務(wù)。

  • 生成式預(yù)訓(xùn)練:在大規(guī)模無監(jiān)督語料上進(jìn)行預(yù)訓(xùn)練一個(gè)高容量的語言模型,學(xué)習(xí)豐富的上下文信息,掌握文本的通用語義。
  • 判別式任務(wù)精調(diào):在通用語義基礎(chǔ)上根據(jù)下游任務(wù)進(jìn)行領(lǐng)域適配。具體的在預(yù)訓(xùn)練好的模型上增加一個(gè)與任務(wù)相關(guān)的神經(jīng)網(wǎng)絡(luò)層,比如一個(gè)全連接層,預(yù)測(cè)最終的標(biāo)簽。并在該任務(wù)的監(jiān)督數(shù)據(jù)上進(jìn)行微調(diào)訓(xùn)練(微調(diào)的一種理解:學(xué)習(xí)率較小,訓(xùn)練epoch數(shù)量較少,對(duì)模型整體參數(shù)進(jìn)行輕微調(diào)整)

GPT-2(2019-2)GPT-3(2020-6)的區(qū)別:

  • GPT-3使用了更深的網(wǎng)絡(luò)層數(shù)和更寬的Transformer網(wǎng)絡(luò)結(jié)構(gòu),模型更大,參數(shù)更多,表達(dá)能力和語言理解能力更強(qiáng);
  • GPT-3在預(yù)訓(xùn)練階段使用了更大規(guī)模的數(shù)據(jù)集,并采用了更多樣化的預(yù)訓(xùn)練任務(wù)
  • GPT-3的微調(diào)階段采用了zero-shot學(xué)習(xí)和few-shot的方法,使得GPT-3具備更強(qiáng)的泛化能力和遷移學(xué)習(xí)能力。

1.2 InstructGPT(2022-3)

《李沐論文精度系列之九:InstructGPT》、bilibili視頻《InstructGPT 論文精讀》

1.2.1 算法

??語言模型擴(kuò)大并不能代表它們會(huì)更好地按照用戶的意圖進(jìn)行工作,大語言模型很可能會(huì)生成一些不真實(shí)的、有害的或者是沒有幫助的答案。換句話說,這些模型和用戶的意圖并不一致(not aligned with their users)。由此OpenAI提出了“align”的概念,即希望模型的輸出與人類意圖“對(duì)齊”,符合人類真實(shí)偏好。

InstructGPT提出了語言模型的三個(gè)目標(biāo):

  • helpful——幫助用戶解決問題
  • honest——不能偽造信息或誤導(dǎo)用戶
  • harmless——不會(huì)令人反感,也不會(huì)對(duì)他人或社會(huì)有害

??InstructGPT使用來自人類反饋的強(qiáng)化學(xué)習(xí)(利用人類的偏好作為獎(jiǎng)勵(lì)信號(hào),讓模型仿照人來生成答案),對(duì)GPT-3進(jìn)行微調(diào),實(shí)現(xiàn)以上目標(biāo)。具體實(shí)現(xiàn)步驟如下:
LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

  1. 收集示范數(shù)據(jù),進(jìn)行有監(jiān)督微調(diào)SFT。
    • 標(biāo)注數(shù)據(jù):根據(jù)prompts(提示,這里就是寫的各種各樣的問題),人類會(huì)撰寫一系列demonstrations(演示)作為模型的期望輸出(主要是英文);
    • 模型微調(diào):將prompts和人類標(biāo)注的答案拼在一起,作為人工標(biāo)注的數(shù)據(jù)集,然后使用這部分?jǐn)?shù)據(jù)集對(duì)預(yù)訓(xùn)練的GPT-3進(jìn)行監(jiān)督微調(diào),得到第一個(gè)模型SFT(supervised fine-tuning,有監(jiān)督微調(diào))
    • 因?yàn)閱栴}和答案是拼在一起的,所以在 GPT 眼中都是一樣的,都是給定一段話然后預(yù)測(cè)下一個(gè)詞,所以在微調(diào)上跟之前的在別的地方做微調(diào)或者是做預(yù)訓(xùn)練沒有任何區(qū)別。
  2. 收集比較數(shù)據(jù),訓(xùn)練獎(jiǎng)勵(lì)模型RM。
    • 生成式標(biāo)注是很貴的一件事,所以第二步是進(jìn)行排序式/判別式標(biāo)注。用上一步得到的SFT模型生成各種問題的答案,標(biāo)注者(labelers)會(huì)對(duì)這些輸出進(jìn)行比較和排序(由好到壞,比如下圖D>C>A=B)。
    • 基于這個(gè)數(shù)據(jù)集,用強(qiáng)化學(xué)習(xí)訓(xùn)練一個(gè)RM(reward model)。訓(xùn)練好了之后這個(gè)RM模型就可以對(duì)生成的答案進(jìn)行打分,且打出的分?jǐn)?shù)能夠滿足人工排序的關(guān)系。
  3. 使用強(qiáng)化學(xué)習(xí)的機(jī)制,優(yōu)化SFT模型,得到最終的RL模型(InstructGPT)。
    SFT模型的輸出輸入RM進(jìn)行打分,通過強(qiáng)化學(xué)習(xí)來優(yōu)化SFT模型的參數(shù),詳見本文4.3節(jié)。

??步驟2和步驟3可以連續(xù)迭代。第二步可以使得在同樣的標(biāo)注成本下得到更多的數(shù)據(jù),模型的性能會(huì)更好一些,最終得到的模型就是InstructGPT。

1.2.2 損失函數(shù)

??語言模型通過預(yù)測(cè)下一個(gè)詞的方式進(jìn)行訓(xùn)練,其目標(biāo)函數(shù)是最大化給定語言序列的條件概率,而不是“有幫助且安全地遵循用戶的指示”,所以當(dāng)前的語言模型訓(xùn)練的目標(biāo)函數(shù)有問題。這部分在第三步RL模型(InstructGPT)中體現(xiàn)。簡單來說就是新的損失函數(shù)包括以下幾個(gè)部分:
LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

  • 在標(biāo)注數(shù)據(jù)集上訓(xùn)練,期望RL模型的輸出在RM模型里打分盡可能的高
  • β l o g ( π ? R L ( y ∣ x ) / π S F T ( y ∣ x ) ) \beta log(\pi_{\phi }^{RL}(y|x)/\pi^{SFT} (y|x) ) βlog(π?RL?(yx)/πSFT(yx)):正則項(xiàng)。
    隨著模型的更新,RL產(chǎn)生的輸出 y y y和原始的SFT模型輸出的 y y y會(huì)逐漸不一樣,所以作者在loss里加入了一個(gè)KL散度(評(píng)估兩個(gè)概率分布的差異),希望RLSFT模型的基礎(chǔ)上優(yōu)化一些就行,但是不要偏太遠(yuǎn),即相當(dāng)于加入了一個(gè)正則項(xiàng)。
  • γ E x ~ D p r e t r a i n [ l o g ( π ? R L ( x ) ] \gamma E_{x}\sim D_{pretrain}[log(\pi_{\phi }^{RL}(x)] γEx?Dpretrain?[log(π?RL?(x)]:GPT-3模型原來的的目標(biāo)函數(shù)
    • 如果只使用上述兩項(xiàng)進(jìn)行訓(xùn)練,會(huì)導(dǎo)致該模型僅僅對(duì)人類的排序結(jié)果較好,而在通用NLP任務(wù)上,性能可能會(huì)大幅下降。文章通過在loss中加入了GPT-3預(yù)訓(xùn)練模型的目標(biāo)函數(shù)來規(guī)避這一問題。

1.3 ChatGPT(2022.11.30)

??ChatGPTInstructGPT在模型結(jié)構(gòu),訓(xùn)練方式上都完全一致,即都使用了指示學(xué)習(xí)(Instruction Learning)和人工反饋的強(qiáng)化學(xué)習(xí)(RLHF,Reinforcement Learning from Human Feedback)來指導(dǎo)模型的訓(xùn)練。區(qū)別是InstructGPT是在GPT3上微調(diào),ChatGPT是在GPT3.5上微調(diào)的。

1.4 ChatGPT plugin

  • 《Introducing OpenAI》、 《Introducing ChatGPT》、 《ChatGPT plugins》
  • 知乎貼《chatgpt插件(ChatGPT plugins)功能詳解》

??為了能夠更加靈活的擴(kuò)展 ChatGPT 的現(xiàn)有功能,OpenAI 正式上線了以安全為核心的 ChatGPT plugin,在保障數(shù)據(jù)安全性的前提下,讓 ChatGPT 功能再度提升一整個(gè)數(shù)量級(jí)!plugin(插件)可以允許 ChatGPT 執(zhí)行以下操作:

  • 檢索實(shí)時(shí)信息: 例如,體育比分、股票價(jià)格、最新消息等。
  • 檢索知識(shí)庫信息: 例如,公司文件、個(gè)人筆記等。
  • 代表用戶執(zhí)行操作;例如,訂機(jī)票、訂餐等。

??ChatGPT plugin,其實(shí)就是類似Toolformer技術(shù)的應(yīng)用,使得模型可以連接成百上千個(gè)API,這樣大語言模型只是一個(gè)交互的工具,真正完成任務(wù)的還是之前的各種工具。這樣不僅準(zhǔn)確度可以提升,而且3月24ChatGPT plugin開通聯(lián)網(wǎng)后,還可以更新自己的知識(shí)庫,開啟了無限可能。

??比如用計(jì)算器進(jìn)行計(jì)算肯定是可以算對(duì)的,而不需要像之前一樣進(jìn)行推理了。

1.5 GPT-4(2023.3.14)

《李沐論文精度系列之十:GPT-4》

??GPT-4 是 OpenAI 繼 ChatGPT 之后發(fā)布的一個(gè)大規(guī)模的多模態(tài)模型,之前的 GPT 系列模型都是只支持純文本輸入輸出的語言模型,而 GPT-4 可以接受圖像和文本作為輸入,并產(chǎn)生文本輸出。
??GPT-4 仍然是基于 Transformer 的自回歸結(jié)構(gòu)的預(yù)訓(xùn)練模型。OpenAI 的博客中表示在隨意的對(duì)話中,GPT-3.5 和 GPT-4 之間的區(qū)別可能很微妙,當(dāng)任務(wù)的復(fù)雜性達(dá)到足夠的閾值時(shí),差異就會(huì)出現(xiàn),即 GPT-4 比 GPT-3.5 更可靠、更有創(chuàng)意,并且能夠處理更細(xì)微的指令。
??雖然在許多現(xiàn)實(shí)場景中的能力不如人類,但 GPT-4 在各種專業(yè)和學(xué)術(shù)基準(zhǔn)測(cè)試中表現(xiàn)出人類水平的表現(xiàn),包括通過模擬律師考試,得分在應(yīng)試者的前 10% 左右。和 ChatGPT RLHF 的方法類似,alignment(對(duì)齊)訓(xùn)練過程可以提高模型事實(shí)性和對(duì)期望行為遵循度的表現(xiàn),具有強(qiáng)大的意圖理解能力,并且對(duì) GPT-4 的安全性問題做了很大的優(yōu)化和提升。
??GPT-4 的基礎(chǔ)模型其實(shí)于 2022 年 8 月就已完成訓(xùn)練。OpenAI 對(duì)于基礎(chǔ)理解和推理能力越來越強(qiáng)的 LLM 采取了更為謹(jǐn)慎的態(tài)度,花 6 個(gè)月時(shí)間重點(diǎn)針對(duì) Alignment、安全性和事實(shí)性等問題進(jìn)行大量測(cè)試和補(bǔ)丁。2023 年 3 月 14 日,OpenAI 發(fā)布 GPT-4 及相關(guān)文章。文章中幾乎沒有披露任何技術(shù)細(xì)節(jié)。同時(shí)當(dāng)前公開的 GPT-4 API 是限制了 few-shot 能力的版本,并沒有將完整能力的基礎(chǔ)模型開放給公眾(這個(gè)版本會(huì)維護(hù)到6月14號(hào))。

二、 LaMDA系列

2.1 LaMDA(Google 2021.5)

  • 論文《LaMDA: Language Models for Dialog Applications》
  • 官網(wǎng)《LaMDA: our breakthrough conversation technology》
  • 博客:《1370億參數(shù)、接近人類水平,谷歌對(duì)話AI模型LaMDA放出論文》、《LaMDA:用于對(duì)話應(yīng)用程序的語言模型》
2.1.1 簡介

??LaMDA 是谷歌在2021年開發(fā)者大會(huì)上公布的,專用于對(duì)話的大語言模型。模型基于Transformer架構(gòu),并在具有1.56T單詞的公開對(duì)話數(shù)據(jù)和其他網(wǎng)頁文檔上預(yù)訓(xùn)練,最終尺寸從2B到137B。

??論文中提出三個(gè)指導(dǎo)模型更好訓(xùn)練的指標(biāo),并概括了如何在這三個(gè)方面取得進(jìn)展:

  • 質(zhì)量:
    • 合理性/Sensibleness:生成在對(duì)話上下文中有意義的響應(yīng)
    • 特異性/Specificity:通過判斷系統(tǒng)的響應(yīng)是否特定于前面的對(duì)話上下文來衡量的,而不是適用于大多數(shù)上下文的通用回應(yīng);
    • 趣味性/Interestingness,SSI):衡量模型是否產(chǎn)生了富有洞察力、出乎意料或機(jī)智的回應(yīng),因此更有可能創(chuàng)造更好的對(duì)話。
  • 安全性:
  • 根基性,Groundedness :生成的響應(yīng)中包含的聲明能夠被參考和與已知來源進(jìn)行核實(shí)的程度。當(dāng)前這一代語言模型通常會(huì)生成看似合理但實(shí)際上與已知外部事實(shí)相矛盾的陳述。
2.1.2 LaMDA 預(yù)訓(xùn)練與微調(diào)

在定義了對(duì)話模型訓(xùn)練的指導(dǎo)指標(biāo)之后,LaMDA 講過預(yù)訓(xùn)練與微調(diào)兩個(gè)階段的訓(xùn)練。

  • 預(yù)訓(xùn)練:從公共對(duì)話數(shù)據(jù)和其他公共網(wǎng)頁文檔中收集并創(chuàng)建了一個(gè)具有 1.56T 單詞的數(shù)據(jù)集,是用于訓(xùn)練以往對(duì)話模型的單詞量的近 40 倍
  • 微調(diào)階段做兩個(gè)工作:
    • LaMDA 生成器:執(zhí)行混合生成任務(wù),以生成對(duì)給定上下文的自然語言響應(yīng)(模式是預(yù)測(cè)兩個(gè)角色來回對(duì)話的對(duì)話數(shù)據(jù)集中下一個(gè)token)
    • LaMDA 分類器:預(yù)測(cè)LaMDA 生成器生成的響應(yīng)的安全與質(zhì)量(SSI)分?jǐn)?shù),安全分?jǐn)?shù)低的候選響應(yīng)首先被過濾掉,剩下的候選響應(yīng)根據(jù) SSI 分?jǐn)?shù)重新排名,并選擇分?jǐn)?shù)最高的作為最終響應(yīng)。

LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

谷歌使用 LaMDA 分類器進(jìn)一步過濾掉用于生成任務(wù)的訓(xùn)練數(shù)據(jù),以增加高質(zhì)量候選響應(yīng)的密度
2.1.3 事實(shí)根基(真實(shí)性、可靠性)

??人們能夠使用工具并參考已建立的知識(shí)庫來檢測(cè)事實(shí),但是很多語言模型僅利用內(nèi)部模型參數(shù)來獲取知識(shí)。谷歌通過與人的對(duì)話數(shù)據(jù)集進(jìn)行微調(diào),讓LaMDA模型能夠更好地利用外部知識(shí)來提供更可靠的回應(yīng)。
??具體來說,為了提高LaMDA模型原始回應(yīng)的可靠性,谷歌采集了人與LaMDA之間的對(duì)話數(shù)據(jù)集。這些對(duì)話數(shù)據(jù)集在適當(dāng)?shù)那闆r下使用了搜索查詢和搜索結(jié)果進(jìn)行注釋。谷歌通過對(duì)這個(gè)數(shù)據(jù)集進(jìn)行微調(diào),讓LaMDA模型的生成器和分類器能夠?qū)W習(xí)在與用戶交互時(shí)如何調(diào)用外部信息檢索系統(tǒng),以增強(qiáng)回應(yīng)的可靠性。雖然這項(xiàng)工作仍處于早期階段,但谷歌已經(jīng)看到了一些有希望的結(jié)果。

2.1.4 實(shí)驗(yàn)&結(jié)論

??谷歌對(duì)預(yù)訓(xùn)練模型(PT)、微調(diào)模型(LaMDA)、人類評(píng)估者在多輪雙作者對(duì)話上的響應(yīng)進(jìn)行評(píng)估,指標(biāo)是質(zhì)量、安全性和根基性,結(jié)果如下:
LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

  • 質(zhì)量:LaMDA 在每個(gè)維度和所有模型大小情況下都顯著優(yōu)于預(yù)訓(xùn)練模型,合理性、特異性和趣味性等質(zhì)量度量通常會(huì)隨模型參數(shù)量提升;
  • 安全性:可以通過微調(diào)提升,但是無法僅從模型縮放中得到收益;
  • 根基性:隨著模型大小的增加,根基性也提升,這或許是因?yàn)楦蟮哪P途邆涓蟮挠涀〔怀R娭R(shí)的能力

??微調(diào)使模型可以訪問外部知識(shí)源并有效地將記住知識(shí)的負(fù)載轉(zhuǎn)移到外部知識(shí)源。微調(diào)還可以縮小與人類水平的質(zhì)量差距,盡管該模型在安全性和根基性方面的性能依然低于人類。

2.2 Bard(Google 2023.3.21)

Bard體驗(yàn)版

??Bard 是谷歌基于 LaMDA 研制的對(duì)標(biāo) ChatGPT 的對(duì)話語言模型,目前應(yīng)該只支持英文對(duì)話,限美國和英國用戶預(yù)約訪問。

2.3 LLaMA2

  • 完整版 LLaMA2 大模型全流程方案,開源了:
    Colossal-AI是全球規(guī)模最大、最活躍的大模型開發(fā)工具與社區(qū),提供開箱即用的 8 到 512 卡 LLaMA2 訓(xùn)練、微調(diào)、推理方案,對(duì) 700 億參數(shù)訓(xùn)練加速 195%,并提供一站式云平臺(tái)解決方案,極大降低大模型開發(fā)和落地應(yīng)用成本。

三、GLM

3.1 GLM生態(tài)

  • GLM:一種基于Transformer架構(gòu)進(jìn)行改進(jìn)的通用預(yù)訓(xùn)練框架,GLM將不同任務(wù)的預(yù)訓(xùn)練目標(biāo)統(tǒng)一為自回歸填空任務(wù)(Autoregressive Blank Infilling),使得模型在自然語言理解和文本生成方面性能都有所改善。
    LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

  • GLM-130B:于2022年8月由清華智譜AI開源放出。該大語言模型基于之前提出的GLM(General Language Model),在Norm處理、激活函數(shù)、Mask機(jī)制等方面進(jìn)行了調(diào)整,目的是訓(xùn)練出開源開放的高精度千億中英雙語稠密模型,能夠讓更多研發(fā)者用上千億模型。

  • ChatGLM: 基于GLM-130B,引入面向?qū)υ挼挠脩舴答?,進(jìn)行指令微調(diào)后得到的對(duì)話機(jī)器人。ChatGLM解決了大基座模型在復(fù)雜問題、動(dòng)態(tài)知識(shí)、人類對(duì)齊場景的不足。ChatGLM于2023年3月開啟申請(qǐng)內(nèi)測(cè),目前暫停了公開申請(qǐng)。

  • ChatGLM-6B:于2023年3月開源。在進(jìn)行ChatGLM千億模型內(nèi)測(cè)的同時(shí),清華團(tuán)隊(duì)也開放出了同樣技術(shù)小參數(shù)量的版本,方便研發(fā)者們進(jìn)行學(xué)習(xí)和開發(fā)(非商用)。

LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

3.2 GLM(清華等,2022.3.17)

  • 論文《GLM: General Language Model Pretraining with Autoregressive Blank Infilling》、github地址
  • 參考:《ChatGLM基座:GLM(General Language Model)》、知乎《GLM: General Language Model Pretraining with Autoregressive Blank Infilling》
3.2.1 背景

??NLP任務(wù)分為NLU(文本分類、分詞、句法分析、信息抽取等)、有條件生成任務(wù)(seq-seq,如翻譯任務(wù)、QA)、無條件生成任務(wù)(用預(yù)訓(xùn)練模型直接生成內(nèi)容)三大類?;A(chǔ)的預(yù)訓(xùn)練模型也分為三種:

預(yù)訓(xùn)練模式 代表模型 說明
自編碼 BERT 雙向的transformer作為編碼器,在語言理解相關(guān)的文本表示效果很好。缺點(diǎn)是不能直接用于文本生成。
自回歸 GPT 從左往右學(xué)習(xí)的模型,在長文本的生成能力很強(qiáng)。缺點(diǎn)是單向的注意力機(jī)制在NLU任務(wù)中,不能完全捕捉token的內(nèi)在聯(lián)系。
編碼解碼 T5 編碼器使用雙向注意力,解碼器使用單向注意力,并且有交叉注意力連接兩者。在有條件生成任務(wù)中表現(xiàn)良好(文本摘要,回答生成)。

所以用一張表格簡單總結(jié)就是:
LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

注:?表示擅長,x表示無法直接應(yīng)用,— 表示可以做

??目前這些訓(xùn)練前框架都不足以在所有NLP中具有競爭力任務(wù)。以往的工作(T5)試圖通過多任務(wù)學(xué)習(xí)統(tǒng)一不同的框架。然而,由于自編碼和自回歸的目標(biāo)性質(zhì)不同,簡單的統(tǒng)一不能完全繼承這兩個(gè)框架的優(yōu)點(diǎn)。

3.2.2 主要貢獻(xiàn)
  • 提出了一種基于自回歸空白填充的通用語言模型(GLM)來應(yīng)對(duì)上述三種任務(wù)。
  • GLM通過添加2D位置編碼并允許任意順序預(yù)測(cè)跨度來改進(jìn)空白填充預(yù)訓(xùn)練,從而在NLU任務(wù)上比BERT和T5獲得了性能提升。
  • 通過變化空白數(shù)量和長度,可以針對(duì)不同類型的任務(wù)對(duì)GLM進(jìn)行預(yù)訓(xùn)練。
  • 在跨NLU、有條件和無條件生成的廣泛任務(wù)范圍內(nèi),GLM在相同的模型大小和數(shù)據(jù)情況下優(yōu)于BERT、T5和GPT,并且使用BERTLarge的1.25×參數(shù)的單個(gè)預(yù)訓(xùn)練模型實(shí)現(xiàn)了最佳性能,展示了其對(duì)不同下游任務(wù)的通用性。
3.2.3 預(yù)訓(xùn)練

LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

GLM 將 NLU 任務(wù)制定為包含任務(wù)描述的完形填空問題,并通過自回歸生成來回答
3.2.3.1 模型輸入

??GLM通過優(yōu)化自回歸空白填充目標(biāo)進(jìn)行訓(xùn)練。給定輸入文本x =[x 1 ,··· ,x n ],對(duì)多個(gè)文本跨度spans {s 1 ,··· ,s m } 進(jìn)行采樣,然后將這些span進(jìn)行mask(用[mask]標(biāo)記替換),形成損壞的文本xcorrupt。span的長度服從泊松分布(λ=3),與BART一樣,重復(fù)采樣,直到15%的token被mask(根據(jù)經(jīng)驗(yàn),15% 的比率對(duì)于下游 NLU 任務(wù)的良好性能至關(guān)重要)。

下面舉例說明。對(duì)于input=[x1,x2,x3,x4,x5,x6],假設(shè)mask 掉 [x3] 和 [x5,x6]。然后輸入x包括兩部分:

  • part A:損壞的文本xcorrupt,例子中是[x1,x2,mask,x4,mask]
  • part B :mask掉的span部分,例子中是 [x5,x6],[x3]。為了完全捕捉不同跨度之間的相互依賴關(guān)系,會(huì)隨機(jī)排列跨度的順序,類似于置換語言模型XLNet。
3.2.3.2 預(yù)訓(xùn)練目標(biāo)&Mask矩陣

??預(yù)訓(xùn)練的目標(biāo)是:通過自回歸方式從損壞的文本xcorrupt中預(yù)測(cè)跨度span中被mask的部分,即從part A預(yù)測(cè)part B。下圖顯示了mask矩陣,可以看出:

  • Part A部分采用雙向注意力,可以關(guān)注它們自己(藍(lán)框)前后的信息,但不能關(guān)注 B;
  • Part B采用單向注意力,可以關(guān)注 A 部分及 B 部分中的前文。

??為了啟用自回歸生成,每個(gè)span都自動(dòng)填充了特殊標(biāo)記 [S] 和 [E] ,表示預(yù)測(cè)從start到end跨度的部分。通過這種方式,GLM在統(tǒng)一模型中自動(dòng)學(xué)習(xí)雙向編碼器(Part A)和單向解碼器(Part B)。
LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

[M] := [MASK], [S] := [START], [E] := [END]
3.2.3.3 二維位置編碼

LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

??如上圖所示,Part A與PartB拼接成一個(gè)sequence,每個(gè)token都用兩個(gè)位置編碼 ids( two positional ids):

  • positional id1:表示損壞的文本xcorrupt中的位置,PartB以span被mask的位置表示
  • positional id2:表示跨度內(nèi)的位置,所以Part A統(tǒng)一以0表示。PartB中的token,以從開始到此位置的span長度表示。

最終兩個(gè)位置編碼都會(huì)加入到輸入token 的embedding向量中。

3.2.3.4 多任務(wù)預(yù)訓(xùn)練

??前面的介紹中,span都比較短,適用于NLU任務(wù)。然而,我們希望模型能同時(shí)處理NLU任務(wù)和文本生成任務(wù)是,所以我們?cè)O(shè)置了第二個(gè)預(yù)訓(xùn)練任務(wù)——長文本生成,分兩個(gè)級(jí)別:

  • 文檔級(jí)別(gMASK)。我們隨機(jī)抽樣一個(gè)跨度,其長度從原始長度的50%到100%的均勻分布中抽樣。該目標(biāo)旨在進(jìn)行長文本生成。
  • 句子級(jí)別(sMASK)。我們限制掩蔽跨度必須是完整的句子。我們隨機(jī)抽樣多個(gè)跨度(句子)以覆蓋15%的原始令牌。此目標(biāo)旨在進(jìn)行序列到序列任務(wù),其預(yù)測(cè)通常為完整的句子或段落。

??這兩個(gè)級(jí)別的生成任務(wù)和NLU任務(wù)相同,唯一的區(qū)別在于跨度數(shù)量和跨度長度。在實(shí)際使用中,可以根據(jù)不同的任務(wù)需要,設(shè)置不同mask方式的比例。例如,如果希望模型有更強(qiáng)的生成能力,可以把文檔級(jí)別的gMASK的比例設(shè)置地比較高。在GLM-130B中,采用了70%文檔級(jí)別的gMASK和30%單詞級(jí)別的MASK。

3.2.4 模型結(jié)構(gòu)
  • Pre-LN:On layer normalization in the transformer architecture
  • Sandwich-LN: Cogview: Mastering text-to-image generation via transformers

??GLM 使用單個(gè)Transformer ,并對(duì)架構(gòu)進(jìn)行了多項(xiàng)修改:

  1. 采用Sandwich-LN。LayerNorm會(huì)影響訓(xùn)練的穩(wěn)定性,目前認(rèn)為認(rèn)為穩(wěn)定性上: Sandwich-LN > Pre-LN > Post-LN(原始的BERT)
  2. 使用單個(gè)線性層來進(jìn)行輸出Token預(yù)測(cè)
  3. ReLU激活函數(shù)替換為GELU

LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

3.2.5 下游任務(wù)微調(diào)

LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)
??對(duì)于下游NLU任務(wù),我們通常會(huì)在模型之上添加線性分類器,以前層的輸出作為輸入來預(yù)測(cè)正確的標(biāo)簽,但這會(huì)導(dǎo)致預(yù)訓(xùn)練和微調(diào)之間的不一致。
??GLM微調(diào)時(shí),分類任務(wù)轉(zhuǎn)換為完形填空,類似PET。如上圖示例,原本的“positive”和“negative”二分類任務(wù),轉(zhuǎn)換為預(yù)測(cè)[mask]的任務(wù)(映射到單詞“good”和“bad”)。

??其實(shí)這部分就是Prompt Tuning,有三種主要算法:PET、P-Tuning和EFL。有興趣的可以參考《PaddleNLP系列課程一:Taskflow、小樣本學(xué)習(xí)、FasterTransformer》第二章。

3.2.6 實(shí)驗(yàn)結(jié)果
  1. SuperGLUE:NLU任務(wù)上,GLM在大多數(shù)具有基礎(chǔ)架構(gòu)或大型架構(gòu)的任務(wù)上始終優(yōu)于BERT。平均而言,GLMBase 得分比BERT Base 高 4.6%,GLMLarge 得分比BERT Large 高 5.0%。
    LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)
  2. Sequence-to-Sequence:GLM RoBERTa可以實(shí)現(xiàn)匹配Seq2Seq BART模型的性能,并且優(yōu)于T5和UniLMv2

LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)
3. 有條件生成和無條件生成
LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)
其它結(jié)果請(qǐng)看論文。

3.2.7 結(jié)論

??GLM是一種用于自然語言理解和生成的通用預(yù)訓(xùn)練框架。論文展示了NLU任務(wù)可以被形式化為條件生成任務(wù),因此可以由自回歸模型解決。GLM將不同任務(wù)的預(yù)訓(xùn)練目標(biāo)統(tǒng)一為自回歸空白填充,具有混合的注意力掩碼和新穎的二維位置編碼。我們的實(shí)驗(yàn)證明GLM在NLU任務(wù)中優(yōu)于先前的方法,并且可以有效地共享參數(shù)以用于不同的任務(wù)。

3.3 GLM-130B

  • 論文《GLM-130B: AN OPEN BILINGUAL PRE-TRAINED MODEL》、github項(xiàng)目、官方博客
  • 官方視頻《從GLM-130B到ChatGLM:大模型預(yù)訓(xùn)練與微調(diào)》、視頻筆記、《論文閱讀-GLM-130B:一種開放的雙語預(yù)訓(xùn)練模型》
3.3.1 背景&模型優(yōu)勢(shì)

??GPT-3是一款強(qiáng)大的語言模型,但由于未公開,存在技術(shù)瓶頸。目前的語言模型規(guī)模龐大,訓(xùn)練需要數(shù)百張A100以上的顯卡,非常困難。GLM-130B是2022年8月由清華AI向研究界和工業(yè)界開放的擁有1300億參數(shù)的中英雙語稠密模型。本文介紹了GLM-130B的訓(xùn)練過程,包括設(shè)計(jì)選擇、高效穩(wěn)定的訓(xùn)練策略和工程努力。
??在廣泛的英語測(cè)試中,GLM-130B的性能明顯優(yōu)于GPT-175B,但在OPT-175B和BLOOM-176B上并未觀察到性能優(yōu)勢(shì)。在相關(guān)測(cè)試中,GLM-130B也始終明顯優(yōu)于最大的中文模型ERNIE TITAN 3.0 260B。最后,利用GLM-130B獨(dú)特的縮放特性,實(shí)現(xiàn)了INT4量化使其成為100B縮放模型中的先驅(qū),可進(jìn)行快速推理(小型多任務(wù)模型成為一種趨勢(shì))。

  • 可復(fù)現(xiàn)性: 所有結(jié)果(超過 30 個(gè)任務(wù))均可通過我們的開源代碼和模型參數(shù)復(fù)現(xiàn)。
  • 跨平臺(tái): 支持在國產(chǎn)的海光 DCU、華為昇騰 910 和申威處理器及美國的英偉達(dá)芯片上進(jìn)行訓(xùn)練與推理。

??2022年11月,在斯坦福大學(xué)大模型中心對(duì)全球30個(gè)主流大模型的評(píng)測(cè)報(bào)告中,GLM-130B 在準(zhǔn)確性和惡意性指標(biāo)上與 GPT-3 175B (davinci) 接近或持平,魯棒性和校準(zhǔn)誤差在所有千億規(guī)模的基座大模型(作為公平對(duì)比,只對(duì)比無指令提示微調(diào)模型)中表現(xiàn)不錯(cuò)(下圖)。

LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca) LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

3.3.2 Deep Layer Norm

DeepNorm:Deepnet: Scaling transformers to 1,000 layers

??訓(xùn)練不穩(wěn)定性是訓(xùn)練LLMs的一個(gè)主要挑戰(zhàn),適當(dāng)選擇LNs有助于穩(wěn)定LLM的訓(xùn)練。作者發(fā)現(xiàn)GLM的訓(xùn)非常不穩(wěn)定,于是使用了Deep Layer Norm機(jī)制,公式為:
LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)
??此外,所有偏置項(xiàng)都被初始化為零。下圖顯示Deep Layer Norm顯著有利于GLM-130B的訓(xùn)練穩(wěn)定性,比Sandwich-LN更穩(wěn)定。

LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

GLM-130B訓(xùn)練不同層次規(guī)范的試驗(yàn)。事實(shí)證明,DeepNorm是最穩(wěn)定的一種,因?yàn)樗哂休^小的梯度范數(shù),并且在早期訓(xùn)練中不會(huì)出現(xiàn)尖峰
3.3.3 位置編碼

??位置編碼分為絕對(duì)位置編碼和相對(duì)位置編碼。一些較新的在大模型中應(yīng)用較多的位置編碼有ALiBi和RoPE,GLM-130B采用的是后者。GLM-130B團(tuán)隊(duì)的觀點(diǎn)是雖然RoPE外推性能有限,但是并不應(yīng)該把長文本的處理問題完全依賴于位置編碼的外推,而是需要什么樣的長度就在什么樣的context length上做訓(xùn)練。
LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

3.3.4 大模型訓(xùn)練系列技術(shù)(混合精度訓(xùn)練、激活函數(shù)重演、數(shù)據(jù)并行、流水線氣泡)

這部分內(nèi)容請(qǐng)參考官方視頻《從GLM-130B到ChatGLM:大模型預(yù)訓(xùn)練與微調(diào)》、視頻筆記。

3.4 ChatGLM(2023.3.22)

官網(wǎng)(內(nèi)測(cè)申請(qǐng))、《ChatGLM 的 Prompt 工程實(shí)踐》及視頻ppt文件,提取碼: mwmr

??由于GLM-130B的動(dòng)態(tài)知識(shí)欠缺、知識(shí)陳舊、缺乏可解釋性,同時(shí)缺少高效“Prompt工程”,在對(duì)話場景中使用時(shí)很難盡人意。所以清華大學(xué)參考了 ChatGPT 的設(shè)計(jì)思路,在 GLM-130B 中注入了代碼預(yù)訓(xùn)練,通過有監(jiān)督微調(diào)(Supervised Fine-Tuning)、反饋?zhàn)灾‵eedback Bootstrap)、人類反饋強(qiáng)化學(xué)習(xí)(Reinforcement Learning from Human Feedback) 等技術(shù)實(shí)現(xiàn)人類意圖對(duì)齊。

??ChatGLM千億參數(shù)版本由于還處于內(nèi)測(cè),沒有太多的公開信息,報(bào)告中給出了目前的一些成績對(duì)比:

  • MMLU評(píng)測(cè)基準(zhǔn)上,較GLM-130B有了有更大提升,超過GPT3 davinci版本30%,達(dá)到了ChatGPT(GPT-3.5-turbo)的81%
  • 在非數(shù)學(xué)知識(shí)場景達(dá)到了ChatGPT(GPT-3.5-turbo)的95%
  • 在非數(shù)學(xué)推理場景達(dá)到了ChatGPT(GPT-3.5-turbo)的96%
  • 在高考、SAT、LSAT等考試的綜合成績上,達(dá)到了ChatGPT(GPT-3.5-turbo)的90%。

3.5 ChatGLM-6B

  • 項(xiàng)目地址、官方博客
  • 微調(diào)心得:
    • ChatGLM-6B 在 ModelWhale 平臺(tái)的部署與微調(diào)教程(直接運(yùn)行)
    • ChatGLM-6B保姆教程、微調(diào)實(shí)戰(zhàn)、 ChatGLM-6B指令微調(diào)
3.5.1 簡介

??由于ChatGLM千億參數(shù)版本暫未公開,為了與社區(qū)一起更好地推動(dòng)大模型技術(shù)的發(fā)展,清華團(tuán)隊(duì)開源了62億參數(shù)版本的ChatGLM-6B。結(jié)合模型量化技術(shù),用戶可以在消費(fèi)級(jí)的顯卡上進(jìn)行本地部署。

該版本具有以下特點(diǎn):

  • 充分的中英雙語預(yù)訓(xùn)練: ChatGLM-6B 在 1:1 比例的中英語料上訓(xùn)練了 1T 的 token 量,兼具雙語能力。
  • 優(yōu)化的模型架構(gòu)和大?。?吸取 GLM-130B 訓(xùn)練經(jīng)驗(yàn),修正了二維 RoPE 位置編碼實(shí)現(xiàn),使用傳統(tǒng)FFN結(jié)構(gòu)。6B(62億)的參數(shù)大小,也使得研究者和個(gè)人開發(fā)者自己微調(diào)和部署 ChatGLM-6B 成為可能。
  • 較低的部署門檻: FP16 半精度下,ChatGLM-6B 需要至少 13GB 的顯存進(jìn)行推理,結(jié)合模型量化技術(shù),這一需求可以進(jìn)一步降低到 10GB(INT8) 和 6GB(INT4), 使得 ChatGLM-6B 可以部署在消費(fèi)級(jí)顯卡上。
  • 更長的序列長度: 相比 GLM-10B(序列長度1024),ChatGLM-6B 序列長度達(dá) 2048,支持更長對(duì)話和應(yīng)用。
  • 人類意圖對(duì)齊訓(xùn)練: 使用了監(jiān)督微調(diào)(Supervised Fine-Tuning)、反饋?zhàn)灾‵eedback Bootstrap)、人類反饋強(qiáng)化學(xué)習(xí)(Reinforcement Learning from Human Feedback) 等方式,使模型初具理解人類指令意圖的能力。輸出格式為 markdown,方便展示。
3.5.2 局限性
  • 模型容量較?。?6B 的小容量,決定了其相對(duì)較弱的模型記憶和語言能力。在面對(duì)許多事實(shí)性知識(shí)任務(wù)時(shí),ChatGLM-6B 可能會(huì)生成不正確的信息;她也不擅長邏輯類問題(如數(shù)學(xué)、編程)的解答。
  • 偏見:ChatGLM-6B 只是一個(gè)初步與人類意圖對(duì)齊的語言模型,可能會(huì)生成有害、有偏見的內(nèi)容。
  • 多輪對(duì)話能力較弱:ChatGLM-6B 的上下文理解能力還不夠充分,在面對(duì)長答案生成,以及多輪對(duì)話的場景時(shí),可能會(huì)出現(xiàn)上下文丟失和理解錯(cuò)誤的情況。
  • 英文能力不足:訓(xùn)練時(shí)使用的指示大部分都是中文的,只有一小部分指示是英文的。因此在使用英文指示時(shí),回復(fù)的質(zhì)量可能不如中文指示的回復(fù),甚至與中文指示下的回復(fù)矛盾。
  • 易被誤導(dǎo):ChatGLM-6B 的“自我認(rèn)知”可能存在問題,很容易被誤導(dǎo)并產(chǎn)生錯(cuò)誤的言論。例如當(dāng)前版本模型在被誤導(dǎo)的情況下,會(huì)在自我認(rèn)知上發(fā)生偏差。即使該模型經(jīng)過了1萬億標(biāo)識(shí)符(token)左右的雙語預(yù)訓(xùn)練,并且進(jìn)行了指令微調(diào)和人類反饋強(qiáng)化學(xué)習(xí)(RLHF),但是因?yàn)槟P腿萘枯^小,所以在某些指示下可能會(huì)產(chǎn)生有誤導(dǎo)性的內(nèi)容。
3.5.3 環(huán)境配置

如何評(píng)價(jià)智譜 AI 發(fā)布的 ChatGLM,以及開源支持單卡推理的 ChatGLM-6B 模型?

LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)
??ChatGLM-6B所有模型文件,總共13G左右,顯存不夠時(shí)可以使用量化模型的方式加載,4-bit量化后可以加載到顯存,占用5.2G顯存左右,但是量化加載需要13G的內(nèi)存,就是無論無何這13G的模型文件要么直接加載到顯存,要么加載到內(nèi)存量化后再加載到顯存

下面官方直接提供了量化后的模型文件,也就避免了上述處理13G模型文件的操作。

  • 4-bit量化后的模型文件下載:GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/THUDM/chatglm-6b-int4
  • 進(jìn)一步提對(duì)Embedding量化后的模型,模型參數(shù)僅占用4.3 GB顯存:GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/THUDM/chatglm-6b-int4-qe
3.5.4 相關(guān)開源項(xiàng)目
  • Chinese-LangChain:中文langchain項(xiàng)目,基于ChatGLM-6b+langchain實(shí)現(xiàn)本地化知識(shí)庫檢索與智能答案生成,增加web search功能、知識(shí)庫選擇功能和支持知識(shí)增量更新
  • langchain-ChatGLM:基于 langchain 的 ChatGLM 應(yīng)用,實(shí)現(xiàn)基于可擴(kuò)展知識(shí)庫的問答
  • ChatGLM-6B-Engineering:基于 ChatGLM-6B 后期調(diào)教,網(wǎng)絡(luò)爬蟲及 Stable Diffusion 實(shí)現(xiàn)的網(wǎng)絡(luò)搜索及圖片生成
  • ChatGLM-OpenAI-API:將 ChatGLM-6B 封裝為 OpenAI API 風(fēng)格,并通過 ngrok/cloudflare 對(duì)外提供服務(wù),從而將 ChatGLM 快速集成到 OpenAI 的各種生態(tài)中。

對(duì) ChatGLM-6B 進(jìn)行微調(diào)的開源項(xiàng)目:

  • InstructGLM:基于ChatGLM-6B進(jìn)行指令學(xué)習(xí),匯總開源中英文指令數(shù)據(jù),基于Lora進(jìn)行指令數(shù)據(jù)微調(diào),開放了Alpaca、Belle微調(diào)后的Lora權(quán)重,修復(fù)web_demo重復(fù)問題

  • ChatGLM-Finetuning:一種平價(jià)的chatgpt實(shí)現(xiàn)方案,基于清華的ChatGLM-6B+ LoRA 進(jìn)行finetune。

  • ChatGLM-Efficient-Tuning:基于ChatGLM-6B模型進(jìn)行定制化微調(diào),匯總10余種指令數(shù)據(jù)集和3種微調(diào)方案,實(shí)現(xiàn)了4/8比特量化和模型權(quán)重融合,提供微調(diào)模型快速部署方法。

  • ChatGLM-Tuning:基于 LoRA 對(duì) ChatGLM-6B 進(jìn)行微調(diào)。

3.6 ChatGLM2-6B部署與微調(diào)

詳見我的另一篇博客《ChatGLM2-6B部署與微調(diào)》

3.7 ChatGLM3-6B(2023.10.27)

??2023年的10月27日,智譜AI聯(lián)合清華大學(xué)再次發(fā)布第三代基礎(chǔ)大語言模型ChatGLM3系列。本次發(fā)布的第三代模型共包含3個(gè):基礎(chǔ)大語言模型ChatGLM3-6B-Base、對(duì)話調(diào)優(yōu)大語言模型ChatGLM3-6B和長文本對(duì)話大語言模型ChatGLM3-6B-32K。

??ChatGLM3的性能比第二大有大幅的提高。在各項(xiàng)評(píng)測(cè)中的得分均有大幅提升。官方甚至宣稱:ChatGLM3-6B-Base 具有在 10B 以下的基礎(chǔ)模型中最強(qiáng)的性能。

模型版本 評(píng)測(cè)任務(wù) 評(píng)測(cè)方向 得分 相比第二代提升
ChatGLM2-6B-Base MMLU 自然語言理解等 47.9 -
ChatGLM2-6B-Base GSM8K 數(shù)學(xué)能力 32.4 -
ChatGLM2-6B-Base C-Eval 中文能力 51.7 -
ChatGLM3-6B-Base MMLU 自然語言理解等 61.4 36%
ChatGLM3-6B-Base GSM8K 數(shù)學(xué)能力 72.3 179%
ChatGLM3-6B-Base C-Eval 中文能力 69 33.5%

更多介紹詳見《ChatGLM3:6B版本的ChatGLM3能力大幅增強(qiáng),依然免費(fèi)商用授權(quán)!》

四、 PaLM(Google Research 2022.4 )

  • 《LLM系列之PaLM》
  • 論文《PaLM: Scaling Language Modeling with Pathways》
  • github1(PaLM-pytorch)、github2、Hugging Face

4.1 簡介

PaLM(Pathways Language Model )是谷歌2022年提出的 540B 參數(shù)規(guī)模的大語言模型,論文主要貢獻(xiàn)有:

  • PaLM 使用 谷歌提出的Pathways系統(tǒng) 在 6144 TPU v4 芯片上進(jìn)行訓(xùn)練(Pathways 是一種新的 ML 系統(tǒng),可以跨多個(gè) TPU Pod 進(jìn)行高效訓(xùn)練,詳情可參考李沐的Pathways論文精讀)
  • 它通過在數(shù)百種語言理解和生成基準(zhǔn)上實(shí)現(xiàn)小樣本學(xué)習(xí)sota結(jié)果,證明了scaling的良好效果。

4.2 模型結(jié)構(gòu)

PaLM 使用Transformer decoder架構(gòu),但是做了一些修改:

  • 采用SwiGLU激活函數(shù),提供更好的性能和梯度流動(dòng),提高模型效果
  • 提出Parallel Layers,并行處理多個(gè)輸入,訓(xùn)練速度提高約 15%
  • Multi-Query Attention共享key/query的映射,自回歸時(shí)解碼更快
  • 位置嵌入使用RoPE embeddings,在長文本上性能更好
  • 采用Shared Input-Output Embeddings,輸入、輸出embedding矩陣是共享
  • 不使用偏置項(xiàng):在dense kernel或layer norm中都沒有使用偏差,這種操作提高了大模型的訓(xùn)練穩(wěn)定性
4.2.1 SwiGLU層
  • 論文《GLU Variants Improve Transformer》
  • 知乎貼《GLU代替Transformer中的FFN(Feed-Forward Networks)》

??在論文《GLU Variants Improve Transformer》中提到,使用SwiGLU替換transformer中FFN的第一層,得到的FFNSwiGLU,已被證明可以顯著提高模型效果,下面進(jìn)行簡單的介紹。

4.2.1.1 FFN

??一個(gè)Transformer Bolck中主要包含三部分:MultiheadAttention(多頭注意力)、FFN(前饋神經(jīng)網(wǎng)絡(luò))和Add&Norm(殘差連接和LayerNorm),其中FFN是由兩個(gè)線性變換層和激活函數(shù)組成。
LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

Transformer Block

所以Transformer中的FFN層可表示為:
F F N ( x , W 1 , W 2 , b 1 , b 2 ) = W 2 ( r e l u ( x W 1 + b 1 ) ) + b 2 = m a x ( 0 , x W 1 + b 1 ) W 2 + b 2 FFN(x, W_1, W_2, b_1, b_2) = W_{2}(relu(xW_{1}+b_{1}))+b_{2}=max(0, xW_1 + b_1)W_2 + b_2 FFN(x,W1?,W2?,b1?,b2?)=W2?(relu(xW1?+b1?))+b2?=max(0,xW1?+b1?)W2?+b2?
  • relu的優(yōu)點(diǎn):神經(jīng)元只需要進(jìn)行加、乘和比較這些簡單的計(jì)算操作,而且有很好的稀疏性,大約有50%的神經(jīng)元會(huì)處于激活狀態(tài)
  • relu的缺點(diǎn):輸出是非零中心化的,會(huì)給后面的計(jì)算引入偏置轉(zhuǎn)移的問題,影響梯度下降的效率。
    神經(jīng)元在訓(xùn)練時(shí)容易死亡,不恰當(dāng)?shù)母聲?huì)導(dǎo)致參數(shù)梯度一直為0,永遠(yuǎn)無法被激活。

在T5模型中去除了FFN的偏置項(xiàng),所以T5中的FFN表示為:
F F N R e L U ( x , W 1 , W 2 ) = m a x ( 0 , x W 1 ) W 2 FFN_{ReLU}(x, W_1, W_2) =max(0, xW_1 )W_2 FFNReLU?(x,W1?,W2?)=max(0,xW1?)W2?

4.2.1.2 swish激活函數(shù)及FFN變體

??后面的一些工作也使用了其它的激活函數(shù)替換ReLU,例如Hendrycks等人就使用了GELU來進(jìn)行替換,Ramachandran等人使用了Swish來進(jìn)行替換 :

FFN GELU ( x , W 1 , W 2 ) = GELU ( x W 1 ) W 2 FFN Swish ( x , W 1 , W 2 ) = Swish 1 ( x W 1 ) W 2 \begin{align*} \text{FFN}_{\text{GELU}}(x, W_1, W_2) &= \text{GELU}(xW_1)W_2 \\ \text{FFN}_{\text{Swish}}(x, W_1, W_2) &= \text{Swish}_1(xW_1)W_2 \\ \end{align*} FFNGELU?(x,W1?,W2?)FFNSwish?(x,W1?,W2?)?=GELU(xW1?)W2?=Swish1?(xW1?)W2??

其中,GELU(高斯誤差線性單元)公式為:(erf 表示誤差函數(shù))
GELU ( x ) = 1 2 ( 1 + erf ( x 2 ) ) ? x \text{GELU}(x) = \frac{1}{2} \left(1 + \text{erf}\left(\frac{x}{\sqrt{2}}\right)\right) \cdot x GELU(x)=21?(1+erf(2 ?x?))?x
Swish:
Swish ( x ) = x ? sigmoid ( β ? x ) \text{Swish}(x) = x \cdot \text{sigmoid}(\beta \cdot x) Swish(x)=x?sigmoid(β?x)

Swish具有以下特性:

  • 平滑性:Swish函數(shù)在整個(gè)實(shí)數(shù)域上是連續(xù)且可微的,沒有突變點(diǎn)或不連續(xù)的部分,這有助于提高梯度的穩(wěn)定性和訓(xùn)練的效果。(比ReLU更平滑)

  • 漸進(jìn)飽和性:Swish函數(shù)在輸入為正或負(fù)的大值時(shí),會(huì)趨向于飽和,即輸出值接近于輸入值。這有助于抑制大幅度的激活響應(yīng),減輕梯度爆炸的問題。

  • 自適應(yīng)性:Swish函數(shù)具有自適應(yīng)的特性,它的形狀和曲線根據(jù)輸入值的變化而變化。在較大的負(fù)值范圍內(nèi),Swish函數(shù)趨向于線性變換;在較大的正值范圍內(nèi),Swish函數(shù)趨向于飽和(Sigmoid函數(shù)的特性),保持輸入的大部分信息。Swish函數(shù)結(jié)合了ReLU的線性增長特性,和Sigmoid函數(shù)的平滑特性,使得處理復(fù)雜的非線性關(guān)系時(shí)更具表達(dá)能力。

  • 較低的計(jì)算復(fù)雜度:相比于其他激活函數(shù)(如ReLU),Swish函數(shù)的計(jì)算復(fù)雜度較低,可以更高效地進(jìn)行前向傳播和反向傳播。

4.2.1.3 GLU一般形式及變體

??GLU,門控線性單元(Gated Linear Units),是一種神經(jīng)網(wǎng)絡(luò)層,其核心思想是通過門控機(jī)制來控制激活函數(shù)的輸出,由線性變換和門控機(jī)制組成:

  • 輸入 x x x通過線性變換得到兩個(gè)輸出向量,分別稱為"門"向量(下式中的 x W + b xW + b xW+b)和"中間"向量(下式中的 x V + c xV + c xV+c
  • 門向量通過一個(gè)激活函數(shù)(通常是sigmoid函數(shù))進(jìn)行門控,產(chǎn)生一個(gè)介于0和1之間的值,表示在給定位置上的輸入是否應(yīng)該被過濾或保留
  • 中間向量與門向量進(jìn)行Hadamard乘積,從而對(duì)輸入進(jìn)行控制和加權(quán)。

GLU的一般形式可表示為:
G L U ( x , W , V , b , c ) = σ ( x W + b ) ? ( x V + c ) GLU(x, W, V, b, c) = σ(xW + b) ? (xV + c) GLU(x,W,V,b,c)=σ(xW+b)?(xV+c)

如果將激活函數(shù)省略,就可以得到一個(gè)雙線性變換函數(shù)(Bilinear),可表示為:
B i l i n e a r ( x , W , V , b , c ) = ( x W + b ) ? ( x V + c ) Bilinear(x, W, V, b, c) = (xW + b) ? (xV + c) Bilinear(x,W,V,b,c)=(xW+b)?(xV+c)
GLU變體

ReGLU ( x , W , V , b , c ) = max ? ( 0 , x W + b ) ⊙ ( x V + c ) GEGLU ( x , W , V , b , c ) = GELU ( x W + b ) ⊙ ( x V + c ) SwiGLU ( x , W , V , b , c , β ) = Swish β ( x W + b ) ⊙ ( x V + c ) \begin{align*} \text{ReGLU}(x, W, V, b, c) &= \max(0, xW + b) \odot (xV + c) \\ \text{GEGLU}(x, W, V, b, c) &= \text{GELU}(xW + b) \odot (xV + c) \\ \text{SwiGLU}(x, W, V, b, c, \beta) &= \text{Swish}_{\beta}(xW + b) \odot (xV + c) \end{align*} ReGLU(x,W,V,b,c)GEGLU(x,W,V,b,c)SwiGLU(x,W,V,b,c,β)?=max(0,xW+b)(xV+c)=GELU(xW+b)(xV+c)=Swishβ?(xW+b)(xV+c)?

??從GLU的變體中我們不難發(fā)現(xiàn)ReGLU的表達(dá)式與FFN的表達(dá)式是相似的,所以考慮將FFN的第一次線性和激活函數(shù)替換為GLU,所以有:
FFNGLU ( x , W , V , W 2 ) = ( σ ( x W ) ⊙ x V ) W 2 FFNBilinear ( x , W , V , W 2 ) = ( x W ⊙ x V ) W 2 FFNReGLU ( x , W , V , W 2 ) = ( max ? ( 0 , x W ) ⊙ x V ) W 2 FFNGEGLU ( x , W , V , W 2 ) = ( GELU ( x W ) ⊙ x V ) W 2 FFNSwiGLU ( x , W , V , W 2 ) = ( Swish 1 ( x W ) ⊙ x V ) W 2 \begin{align*} \text{FFNGLU}(x, W, V, W2) &= (\sigma(xW) \odot xV)W_2 \\ \text{FFNBilinear}(x, W, V, W2) &= (xW \odot xV)W_2 \\ \text{FFNReGLU}(x, W, V, W2) &= (\max(0, xW) \odot xV)W_2 \\ \text{FFNGEGLU}(x, W, V, W2) &= (\text{GELU}(xW) \odot xV)W_2 \\ \text{FFNSwiGLU}(x, W, V, W2) &= (\text{Swish}1(xW) \odot xV)W_2 \\ \end{align*} FFNGLU(x,W,V,W2)FFNBilinear(x,W,V,W2)FFNReGLU(x,W,V,W2)FFNGEGLU(x,W,V,W2)FFNSwiGLU(x,W,V,W2)?=(σ(xW)xV)W2?=(xWxV)W2?=(max(0,xW)xV)W2?=(GELU(xW)xV)W2?=(Swish1(xW)xV)W2??

??不難看出,替換操作是FFN原先第一層的 x W 1 xW_1 xW1?替換為GLU的 ( x W ) ⊙ x V (xW) \odot xV (xW)xV,所以對(duì)比于原始的FFN來說,多了一項(xiàng)線性變換 x V xV xV。作者為了保持參數(shù)數(shù)量和計(jì)算量不變,將hidden unit減少2/3,即 W , V W,V W,V的第二維和 W 2 W_2 W2?的第一維減少2/3。

4.2.1.4 實(shí)驗(yàn)結(jié)果

??使用T5模型作為baseline,設(shè)置編碼器和解碼器各由12層組成,維度768,注意力層采用
h e a d = 12 , d k = d v = 64 head=12,d_k = d_v = 64 head=12,dk?=dv?=64 ,F(xiàn)FN層及其變體采用3072個(gè)神經(jīng)元,而GLU及其變體則采用2048個(gè)神經(jīng)元,實(shí)驗(yàn)結(jié)果如下所示:
LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)
在GLUE語言理解基準(zhǔn)數(shù)據(jù)集的任務(wù)上進(jìn)行對(duì)比:
LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

4.2.2 Parallel Layers

??在傳統(tǒng)的語言模型中,模型的每一層負(fù)責(zé)特定的任務(wù),每一層都必須等待前一層完成后才能開始處理。Parallel Layers是PaLM的一個(gè)關(guān)鍵創(chuàng)新,通過并行層,可以同時(shí)處理多個(gè)任務(wù),顯著提高模型的速度和準(zhǔn)確性(并行層可以同時(shí)從多個(gè)示例中進(jìn)行學(xué)習(xí))。
??標(biāo)準(zhǔn)的transformer block中,輸出公式可以寫成:
y = x + M L P ( L a y e r N o r m ( x + A t t e n t i o n ( L a y e r N o r m ( x ) ) ) y = x + MLP(LayerNorm(x + Attention(LayerNorm(x))) y=x+MLP(LayerNorm(x+Attention(LayerNorm(x)))
在Parallel Layers中,可以寫成:(代碼可參考LLM系列之PaLM)
y = x + M L P ( L a y e r N o r m ( x ) ) + A t t e n t i o n ( L a y e r N o r m ( x ) ) y = x + MLP(LayerNorm(x)) + Attention(LayerNorm(x)) y=x+MLP(LayerNorm(x))+Attention(LayerNorm(x))

??并行公式使大規(guī)模訓(xùn)練速度提高了大約 15%。消融實(shí)驗(yàn)顯示在 8B 參數(shù)量下模型效果下降很小,但在 62B 參數(shù)量下沒有模型效果下降的現(xiàn)象。

4.2.3 共享鍵/值的映射

??標(biāo)準(zhǔn)的transformer block中,假設(shè)有k個(gè)注意力頭,則計(jì)算過程為:

  • 使用矩陣 W W W將Q、K、V映射到k個(gè)不同的語義空間中,形狀為[k, h];
  • 進(jìn)行Attention計(jì)算,得到k個(gè)head矩陣。
  • 將這k個(gè)矩陣串聯(lián)拼接起來,乘以矩陣 W o W^o Wo(保持維度一致)得到多頭注意力結(jié)果。

故多頭注意力模型公式可以寫成:

M u l t i ? H e a d ( Q , K , V ) = c o n c a t ( h e a d 1 . . . . h e a d c ) W O = [ c o n c a t ( h 1 , 1 . . . h n , 1 ) W O . . . c o n c a t ( h 1 , m . . . h n , m W O ] Multi-Head(Q ,K , V )=concat(head_1....head_c)W^{O}=\begin{bmatrix} concat(h_{1,1}...h_{n,1})W^{O}\\ ...\\ concat(h_{1,m}...h_{n,m}W^{O}\end{bmatrix} Multi?HeadQ,K,V)=concat(head1?....headc?)WO= ?concat(h1,1?...hn,1?)WO...concat(h1,m?...hn,m?WO? ?

LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)
??而在PaLM中,每個(gè)head的key/value權(quán)值共享,即key和value被映射為[1,h],但query仍然被映射為shape[k,h]。論文發(fā)現(xiàn)這種操作對(duì)模型質(zhì)量和訓(xùn)練速度沒有影響,但在自回歸解碼時(shí)間上有效節(jié)省了成本。(標(biāo)準(zhǔn)的多頭注意力在自回歸解碼過程中,鍵(key)和值(value)張量在不同樣本之間不共享,并且每次只解碼一個(gè)單詞,所以在加速器硬件上的效率較低)

4.2.4 RoPE embeddings

??RoPE 嵌入在長文本上具有更好的性能 ,具體原理可看蘇神文章《Transformer升級(jí)之路:2、博采眾長的旋轉(zhuǎn)式位置編碼》

4.2.5 Shared Input-Output Embeddings

??在自然語言處理任務(wù)中,輸入序列和輸出序列都需要經(jīng)過嵌入層來獲取對(duì)應(yīng)的嵌入向量。而在PaLM中,輸入序列和輸出序列共享相同的嵌入層參數(shù)矩陣,即輸入序列中的單詞通過嵌入層獲得其嵌入向量,同時(shí)輸出序列中的單詞也通過相同的嵌入層獲得對(duì)應(yīng)的嵌入向量。

??這樣做的目的是為了讓輸入和輸出之間共享語義信息,表示更加一致和相互關(guān)聯(lián),使得模型能夠更好地理解輸入和輸出之間的語義關(guān)系,并更準(zhǔn)確地進(jìn)行預(yù)測(cè)和生成。

??需要注意的是,共享嵌入層并不意味著輸入和輸出之間的嵌入是完全相同的,而是共享參數(shù)矩陣,通過參數(shù)的共享來實(shí)現(xiàn)輸入和輸出之間的信息傳遞和一致性。

4.3 模型尺度和訓(xùn)練數(shù)據(jù)

考慮了三種不同的模型尺度:540B、62B 和 8B 參數(shù):
LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

PaLM 預(yù)訓(xùn)練數(shù)據(jù)集:

  • 包含 7800 億個(gè)標(biāo)記的高質(zhì)量語料庫,代表了廣泛的自然語言用例。該數(shù)據(jù)集是經(jīng)過過濾的網(wǎng)頁、書籍、維基百科、新聞文章、源代碼和社交媒體對(duì)話的混合體。該數(shù)據(jù)集基于用于訓(xùn)練 LaMDA(Thoppilan 等人,2022 年)和 GLaM(Du 等人,2021 年)的數(shù)據(jù)集。
  • 所有三個(gè)模型都只在一個(gè)時(shí)期的數(shù)據(jù)上進(jìn)行訓(xùn)練(所有模型的數(shù)據(jù)清洗方式都相同)。
  • 除了自然語言數(shù)據(jù),預(yù)訓(xùn)練數(shù)據(jù)集還包含 196GB 代碼,從 GitHub 上的開源存儲(chǔ)庫獲取,包括 Java、HTML、Javascript、Python、PHP、C#、XML、C++ 和 C。

LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

4.4 訓(xùn)練硬件資源

LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)
??總體來說,該程序包含:

  • 組件 A:用于 pod 內(nèi)前向+反向計(jì)算(包括 pod 內(nèi)梯度減少)
  • 組件 B:用于跨 pod 梯度傳輸?shù)膫鬏斪訄D,以及用于優(yōu)化器更新的(包括本地和遠(yuǎn)程梯度的求和)

??Pathways 程序在每個(gè) pod 上執(zhí)行組件 A,然后將輸出梯度傳輸?shù)搅硪粋€(gè) pod,最后在每個(gè) pod 上執(zhí)行組件 B。因此,它掩蓋了延遲,還分?jǐn)偭斯芾頂?shù)據(jù)傳輸?shù)某杀?,PaLM 代表了 LLM 訓(xùn)練效率向前邁出的重要一步。(PaLM的硬件FLOPs利用率為57.8%,模型FLOPs利用率見下表)
LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

??FLOPS表示每秒鐘可以執(zhí)行的浮點(diǎn)運(yùn)算次數(shù),Model FLOPS utilization(模型FLOPS利用率)是指在機(jī)器學(xué)習(xí)模型中使用的浮點(diǎn)運(yùn)算數(shù)(FLOPS)的有效利用程度,表示實(shí)際執(zhí)行的浮點(diǎn)運(yùn)算與模型的理論計(jì)算能力之間的關(guān)系。一個(gè)高的Model FLOPS utilization意味著模型能夠有效地利用計(jì)算資源,并將其轉(zhuǎn)化為有意義的計(jì)算任務(wù)。這意味著模型的計(jì)算效率較高,能夠更快地完成訓(xùn)練或推斷任務(wù)。

4.5 實(shí)驗(yàn)

??PaLM 540B 在所有基準(zhǔn)測(cè)試中都優(yōu)于類似尺寸的模型(Megatron-Turing NLG 530B)。這表明預(yù)訓(xùn)練數(shù)據(jù)集、訓(xùn)練策略和訓(xùn)練期間觀察到的標(biāo)記數(shù)量在實(shí)現(xiàn)這些結(jié)果方面也起著重要作用。

LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)
LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

??PaLM-Coder 540B 的性能進(jìn)一步提高,在 HumanEval 上達(dá)到 88.4% pass@100,在 MBPP 上達(dá)到 80.8% pass@80。
LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)
其它實(shí)驗(yàn)效果詳見論文。

4.6 PaLM2(Google Research 2022.3 )

詳見《Introducing PaLM 2》

五、 BLOOM(Google AI,2022.7)

  • 論文《BLOOM: A 176B-Parameter Open-Access Multilingual Language Model》
  • 《BLOOM: 多語言大模型》

5.1 背景

??大型語言模型(LLMs)已被證明能夠根據(jù)少數(shù)示例或指令微調(diào)就可以執(zhí)行新任務(wù)(zero-shot),但大多數(shù)LLMs是由資源充裕的組織開發(fā)的,且沒有公開發(fā)布。因此,大多數(shù)的研究社區(qū)都被排除在LLMs的開發(fā)之外,也導(dǎo)致了一些結(jié)果,例如大多數(shù)LLMs主要是在英文文本上訓(xùn)練的。

??為了推廣這一技術(shù),我們發(fā)布了BLOOM模型。BLOOM是一個(gè)在包含46種自然語言和13種編程語言的數(shù)百個(gè)數(shù)據(jù)源上訓(xùn)練的1760億參數(shù)的多語言模型,由數(shù)百名研究人員合作開發(fā)和發(fā)布的。BLOOM使用了Transformer-decoder結(jié)構(gòu),在各種基準(zhǔn)測(cè)試中取得了競爭性的性能。

??為構(gòu)建BLOOM,我們對(duì)其各個(gè)組成部分進(jìn)行了徹底的設(shè)計(jì)過程,包括訓(xùn)練數(shù)據(jù)集(第3.1節(jié))、模型架構(gòu)和訓(xùn)練目標(biāo)(第3.2節(jié))以及分布式學(xué)習(xí)的工程策略(第3.4節(jié))。我們還對(duì)模型的能力進(jìn)行了分析(第4節(jié))。我們的總體目標(biāo)不僅是公開發(fā)布一個(gè)具有與最近開發(fā)的系統(tǒng)相當(dāng)性能的大規(guī)模多語言語言模型,還要記錄開發(fā)過程中采取的協(xié)調(diào)步驟(第2.2節(jié))。本文的目的是提供對(duì)這些設(shè)計(jì)步驟的高級(jí)概述,并引用我們?cè)陂_發(fā)BLOOM過程中產(chǎn)生的各個(gè)報(bào)告。

??BLOOM:BigScience Large Open-science Open-access Multilingual Language Model,大型開放多語言模型。
??BigScience:是一個(gè)開放的研究合作組織,其目標(biāo)是公開發(fā)布LLM。
LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

5.2 訓(xùn)練數(shù)據(jù)

5.2.1 多語言語料庫 ROOTS

??BLOOM是在ROOTS語料庫上進(jìn)行訓(xùn)練的。該語料庫是由498個(gè)Hugging Face數(shù)據(jù)集組成的綜合集合,涵蓋了1.61TB的文本,覆蓋了46種自然語言和13種編程語言,其分布可見下圖:
LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

左側(cè):46種自然語言的語系樹狀圖,其中表面積與字節(jié)數(shù)成比例。印歐語系和漢藏語系占主導(dǎo)(1321.89 GB)。橙色的薄表面代表18GB的印度尼西亞語數(shù)據(jù),綠色的矩形代表0.4GB的尼日爾-剛果語系子集。右側(cè):按大小分布的13種編程語言的華夫餅圖,其中一個(gè)方塊表示約200MB的數(shù)據(jù)量
5.2.2 xP3和指令數(shù)據(jù)集xP3mt

??在公共提示池(P3)的子集上訓(xùn)練的T0證明了,在多任務(wù)提示數(shù)據(jù)集的混合上微調(diào)的語言模型具有強(qiáng)大的零樣本任務(wù)泛化能力。在預(yù)訓(xùn)練BLOOM之后,我們采用了同樣的大規(guī)模多任務(wù)微調(diào)方法,為BLOOM賦予了多語言零樣本任務(wù)泛化能力。我們將結(jié)果模型稱為BLOOMZ。下面是模型用到的幾個(gè)數(shù)據(jù)集:

  • P3:各種現(xiàn)有的和開源的英文自然語言數(shù)據(jù)集的提示集合,涵蓋了各種自然語言任務(wù),包括情感分析、問答和自然語言推理,并排除了有害內(nèi)容或非自然語言,如編程語言。

  • xP3:為了訓(xùn)練BLOOMZ,我們擴(kuò)展了P3,得到了xP3,一個(gè)包含83個(gè)數(shù)據(jù)集的提示集合,涵蓋46種語言和16個(gè)任務(wù)。xP3中的任務(wù)既可以是跨語言的(例如翻譯),也可以是單語言的(例如摘要、問答)。我們使用PromptSource來收集這些提示,并為提示添加了額外的元數(shù)據(jù)

  • xP3mt:為了研究多語言提示的重要性,我們還將xP3中的英語提示機(jī)器翻譯為各自的數(shù)據(jù)集語言,從而生成了一個(gè)稱為xP3mt的提示集合。

LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

圖4:提示數(shù)據(jù)集 xP3的語言分布與 ROOTS緊密相關(guān)。

5.3 模型結(jié)構(gòu)

??我們?cè)u(píng)估了各種模型結(jié)構(gòu),發(fā)現(xiàn)因果解碼器模型表現(xiàn)最佳。我們進(jìn)行了一系列實(shí)驗(yàn),評(píng)估了位置編碼和激活函數(shù)等對(duì)因果解碼器模型的影響,最終我們?cè)?code>BLOOM中采用了兩種改進(jìn):

  • ALiBi位置嵌入:與將位置信息添加到嵌入層不同,ALiBi直接根據(jù)鍵和查詢的距離減弱注意力得分。盡管ALiBi最初是基于對(duì)更長序列的外推能力的動(dòng)機(jī),但我們發(fā)現(xiàn)它在原始序列長度上也導(dǎo)致了更平滑的訓(xùn)練和更好的下游性能,優(yōu)于原始transformer的和rotary embeddings這兩種。

  • Embedding Layer Norm:嵌入層歸一化。在嵌入層后添加了額外的層歸一化層,顯著提高了訓(xùn)練的穩(wěn)定性。

??請(qǐng)注意,初步的104B實(shí)驗(yàn)是在float16精度下進(jìn)行的,而最終的訓(xùn)練是在bfloat16精度下進(jìn)行的。自那時(shí)以來,float16被認(rèn)為是導(dǎo)致訓(xùn)練LLM時(shí)觀察到的許多不穩(wěn)定性的原因之一(Zhang等人,2022;Zeng等人,2022)。bfloat16可能減輕了對(duì)嵌入層歸一化的需求。

LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

5.3 工程實(shí)現(xiàn)

BLOOM使用Megatron-DeepSpeed進(jìn)行訓(xùn)練的,這是一個(gè)用于大規(guī)模分布式訓(xùn)練的框架。它由兩個(gè)部分組成:

  • Megatron-LM:提供了Transformer的實(shí)現(xiàn),張量并行性和數(shù)據(jù)加載原語
  • DeepSpeed提供了ZeRO優(yōu)化器,模型流水線和通用的分布式訓(xùn)練組件。

??這個(gè)框架使我們能夠以高效的方式進(jìn)行3D并行訓(xùn)練(三種互補(bǔ)的分布式訓(xùn)練方法的融合)。下面將介紹這些方法:

  • DP:Data parallelism,數(shù)據(jù)并行。將模型復(fù)制多次,每個(gè)副本放置在不同的設(shè)備上,并提供數(shù)據(jù)的切片進(jìn)行并行處理。在每個(gè)訓(xùn)練步驟結(jié)束時(shí),所有模型副本都會(huì)進(jìn)行同步。

  • TP:Tensor parallelism,張量并行。將模型的各個(gè)層在多個(gè)設(shè)備上進(jìn)行分區(qū)。這樣,不再將整個(gè)激活或梯度張量放置在單個(gè)GPU上,而是將該張量的分片放置在不同的GPU上。這種技術(shù)有時(shí)被稱為水平并行或?qū)觾?nèi)模型并行。

  • PP:Pipeline parallelism,流水線并行。將模型的層分割到多個(gè)GPU上,這樣模型的每個(gè)GPU上只放置部分層,這有時(shí)被稱為垂直并行。 使用bfloat16 混合精度,使用融合的 CUDA 內(nèi)核

??最后,ZeRO(零冗余優(yōu)化器)允許不同的進(jìn)程僅保存數(shù)據(jù)的一部分(參數(shù)、梯度和優(yōu)化器狀態(tài))。
LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

圖6:DP+PP+TP的組合導(dǎo)致3D并行化。

??該模型是在Jean Zay上進(jìn)行訓(xùn)練的,Jean Zay是由法國國家計(jì)算中心(CNRS)的IDRIS運(yùn)營的,由法國政府資助的超級(jí)計(jì)算機(jī)。
??訓(xùn)練BLOOM大約耗時(shí)3.5個(gè)月,共計(jì)消耗了1,082,990個(gè)計(jì)算小時(shí)。訓(xùn)練過程在48個(gè)節(jié)點(diǎn)上進(jìn)行,每個(gè)節(jié)點(diǎn)配備8個(gè)NVIDIA A100 80GB的GPU(總共384個(gè)GPU
??由于在訓(xùn)練過程中可能出現(xiàn)硬件故障,我們還保留了4個(gè)備用節(jié)點(diǎn)。每個(gè)節(jié)點(diǎn)配備2個(gè)AMD EPYC 7543 32核的CPU和512 GB的內(nèi)存,存儲(chǔ)由使用SpectrumScale(GPFS)并行文件系統(tǒng)的全閃存和硬盤驅(qū)動(dòng)器混合處理,該文件系統(tǒng)在超級(jí)計(jì)算機(jī)的所有節(jié)點(diǎn)和用戶之間共享。
??每個(gè)節(jié)點(diǎn)有4個(gè)NVLink GPU到GPU的互連通道用于節(jié)點(diǎn)內(nèi)通信,每個(gè)節(jié)點(diǎn)有4個(gè)Omni-Path 100 Gbps的鏈路,按照增強(qiáng)的8D超立方體全局拓?fù)浣Y(jié)構(gòu)排列,用于節(jié)點(diǎn)間通信

5.4 實(shí)驗(yàn)&評(píng)測(cè)

  1. SuperGLUE

LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

圖7:各種LLM在 SuperGLUE基準(zhǔn)上zero-shot and one-shot prompt-based 效果
  1. HELM基準(zhǔn)
    LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)
圖10:各種語言模型在5次提示的HELM基準(zhǔn)測(cè)試上的結(jié)果

5.5 總結(jié)

BLOOM主要提升LLM的多語言能力,采用因果解碼器的結(jié)構(gòu),但是做了AIBI位置編碼和層歸一化兩方面的改進(jìn)。文在還有很詳細(xì)的數(shù)據(jù)集采集即過濾、訓(xùn)練調(diào)試等細(xì)節(jié),感興趣的可以看看。

六、 FLAN(Google 2022.10)

  • 《Flan-T5: One Model for ALL Tasks》、《LLM系列之FLAN-T5/PaLM》
  • 論文《Scaling Instruction-Finetuned Language Models》、FLAN-T5(Hugging Face)

??FLAN 指的是(Instruction finetuning ),即"基于指令的微調(diào)"。通過在超大規(guī)模的任務(wù)上進(jìn)行微調(diào),可以大大提高語言模型的泛化性能,做到單個(gè)模型就可以在1800多個(gè)NLP任務(wù)上都能有很好的表現(xiàn)。這意味著模型一旦訓(xùn)練完畢,可以直接在幾乎全部的NLP任務(wù)上直接使用,實(shí)現(xiàn)One model for ALL tasks。隨后谷歌公開發(fā)布了大幅優(yōu)于基線 T5 模型的 Flan-T5模型。

基礎(chǔ)模型可以進(jìn)行任意的替換(需要有Decoder部分,所以不包括BERT這類純Encoder語言模型)

6.1 摘要

??通過使用一系列以指令形式表達(dá)的數(shù)據(jù)集來對(duì)語言模型進(jìn)行微調(diào),已經(jīng)被證明可以提高模型的性能并提高其對(duì)未見任務(wù)的泛化能力。在本論文中,我們探討了指令微調(diào)的幾個(gè)關(guān)鍵方面:(1)擴(kuò)展任務(wù)數(shù)量,(2)擴(kuò)大模型規(guī)模,(3)鏈?zhǔn)剿季S數(shù)據(jù)的微調(diào)(CoT,chain-of-thought data)。我們的實(shí)驗(yàn)表明,指令微調(diào)在任務(wù)數(shù)量和模型規(guī)模方面都具有良好的擴(kuò)展性。其次,經(jīng)過CoT的指令微調(diào)會(huì)極大提高在CoT任務(wù)上的性能。
??我們發(fā)現(xiàn),使用上述方法進(jìn)行指令微調(diào)顯著改善了各種模型類別(PaLM、T5、U-PaLM)、啟動(dòng)設(shè)置(零樣本、少樣本、連續(xù)思考)和評(píng)估基準(zhǔn)(MMLU、BBH、TyDiQA、MGSM、開放式生成)的性能。
??例如,經(jīng)過1.8K個(gè)任務(wù)的指令微調(diào)后,Flan-PaLM 540B在性能上大幅超過了PALM 540B(平均提高了9.4%),并在一些基準(zhǔn)測(cè)試中取得了SOTA性能,如在五樣本MMLU上達(dá)到了75.2%。我們還公開發(fā)布了Flan-T5的checkpoints,即使與規(guī)模更大的模型(如PaLM 62B)相比,它們?cè)谏贅颖厩闆r下也具有強(qiáng)大的性能??傮w而言,指令微調(diào)是改善預(yù)訓(xùn)練語言模型性能和可用性的通用方法。

LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

圖1:我們對(duì)1.8K個(gè)以指令形式表達(dá)的任務(wù)進(jìn)行了各種語言模型的微調(diào),并在未見任務(wù)上對(duì)其進(jìn)行評(píng)估。我們同時(shí)進(jìn)行了帶有示例和不帶示例(即零樣本和少樣本)以及帶有鏈?zhǔn)剿季S和不帶鏈?zhǔn)剿季S的微調(diào),從而在多個(gè)評(píng)估場景中實(shí)現(xiàn)了泛化。

6.2 介紹

6.2.1 Task mixtures

??混合任務(wù)包括總共 1836 種指令任務(wù),包括 473個(gè) 數(shù)據(jù)集,146 個(gè)任務(wù)類別,包括Muffin3、T0-SF、NIV2和CoT以及一些對(duì)話、程序合成和鏈?zhǔn)剿季S推理任務(wù)。所有數(shù)據(jù)源都是公開的,詳情可見附錄F。

??CoT微調(diào)混合:涉及CoT注釋,我們使用它來探索在CoT注釋上微調(diào)是否能夠提高對(duì)未見推理任務(wù)的性能。我們從先前的工作中選擇了九個(gè)數(shù)據(jù)集,人工評(píng)估者為這些數(shù)據(jù)集手動(dòng)編寫了CoT注釋作為訓(xùn)練語料庫。這九個(gè)數(shù)據(jù)集包括算術(shù)推理(Cobbe等,2021年)、多跳推理(Geva等,2021年)和自然語言推理(Camburu等,2020年)等任務(wù)。我們?yōu)槊總€(gè)任務(wù)手動(dòng)編寫了十個(gè)指令模板。數(shù)據(jù)卡片詳見附錄F。

LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

圖2:我們的微調(diào)數(shù)據(jù)包括473個(gè)數(shù)據(jù)集、146個(gè)任務(wù)類別和1836個(gè)總?cè)蝿?wù)。本文附錄F中提供了用于本文的任務(wù)的詳細(xì)信息。
6.2.2 模板和格式

??因?yàn)樾枰脝蝹€(gè)語言模型來完成超過1800+種不同的任務(wù),所以需要將任務(wù)都轉(zhuǎn)換成相同的“輸入格式”喂給模型訓(xùn)練,同時(shí)這些任務(wù)的輸出也需要是統(tǒng)一的“輸出格式”。根據(jù) “是否需要進(jìn)行推理 (CoT)” 以及 “是否需要提供示例(Few-shot)” 可將輸入輸出劃分成四種類型:
LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

圖3:本研究中的微調(diào)數(shù)據(jù)格式組合。分為是否帶示例和是否使用CoT數(shù)據(jù)集。
chain-of-thought few-shot 輸入 輸出
? ? 指令 + 問題 答案
? ? 指令 + CoT引導(dǎo)(by reasoning step by step) + 問題 理由 + 答案
? ? 指令 + 示例問題 + 示例問題回答 + 指令 + 問題 答案
? ? 指令 + CoT引導(dǎo) + 示例問題 + 示例問題理由 + 示例問題回答 + 指令 + CoT引導(dǎo) + 問題 理由 + 答案
6.2.3 微調(diào)過程

??文本中,我們實(shí)驗(yàn)了T5(80M到11B)、PaLM(8B到540B)和U-PaLM(540B)等各種規(guī)模的模型,訓(xùn)練過程都是相同的。
??我們采用恒定的學(xué)習(xí)率以及Adafactor優(yōu)化器進(jìn)行訓(xùn)練;同時(shí)會(huì)將多個(gè)訓(xùn)練樣本“打包”成單個(gè)序列,這些訓(xùn)練樣本直接會(huì)通過一個(gè)特殊的“解釋。token”進(jìn)行分割,每個(gè)模型的微調(diào)步驟數(shù)、學(xué)習(xí)率、批次大小和丟棄率詳見附錄E。
??對(duì)于每個(gè)模型,我們選擇一個(gè)檢查點(diǎn)用于所有評(píng)估。我們通過定期評(píng)估保留任務(wù)的性能(每2k到10k步驟,具體取決于模型大小)來確定最佳步驟,并在所有消融運(yùn)行中使用相同數(shù)量的檢查點(diǎn)步驟。

LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

表2:微調(diào)過程所需的計(jì)算量非常小。例如指令微調(diào) Flan-PaLM 540B時(shí),只使用了預(yù)訓(xùn)練計(jì)算量的 0.2%

6.3 實(shí)驗(yàn)結(jié)果

  1. 增加微調(diào)數(shù)據(jù)中的任務(wù)數(shù)量可以提升Flan-PaLM在大多數(shù)評(píng)估基準(zhǔn)上的性能

??如下表所示,評(píng)估基準(zhǔn)包括MMLU(57個(gè)任務(wù))、BBH(23個(gè)任務(wù))、TyDiQA(8種語言)和MGSM(10種語言)。所有四個(gè)評(píng)估基準(zhǔn)的評(píng)估指標(biāo)都是few-shot提示準(zhǔn)確率(完全匹配),我們對(duì)所有任務(wù)進(jìn)行了平均值計(jì)算(不考慮權(quán)重)。
LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

表3:評(píng)估結(jié)果是MMLU-direct、MMLU-CoT、BBH-direct、BBH-CoT、TyDiQA和MGSM這6個(gè)的歸一化平均值。。

T5模型應(yīng)用Flan效果如下:
LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

  1. 模型越大效果越好、任務(wù)越多效果越好。
    LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)
  2. 、CoT數(shù)據(jù)可顯著提高模型的推理能力(包括零樣本)

LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

Figure 6: PaLMFlan-PaLM在23個(gè)具有挑戰(zhàn)性的BIG-Bench任務(wù)(BBH)上的zero-shot表現(xiàn)。Flan-PaLM通過“Let’s think step-by-step”激活了鏈?zhǔn)剿季S(CoT)生成。

可以看到:

  • 只有加入Flan訓(xùn)練之后的PaLM模型,CoT文本的加入才會(huì)帶來效果提升;
  • Flan本身也能夠給模型帶來足夠的效果提升

6.4 總結(jié)

??這篇工作提出了Flan的微調(diào)框架,核心有四點(diǎn):統(tǒng)一的輸入輸出格式(4種類型),引入chain-of-thought,大幅提高任務(wù)數(shù)量,大幅提高模型體積;實(shí)現(xiàn)了用一個(gè)模型來解決超過1800種幾乎全部的NLP任務(wù),通過較低的成本,極大發(fā)掘了現(xiàn)有語言模型的泛化性能,讓大家看到了通用模型的希望,即One Model for ALL Tasks。

七、 LLaMA系列(Meta AI)

7.1 LLaMA(Meta AI 2023.2.24)

  • 論文:LLaMA: Open and Efficient Foundation Language Models、Model Card(GitHub)
  • 官網(wǎng)博客《Introducing LLaMA: A foundational, 65-billion-parameter large language model》
  • LLM系列之LLaMA、使用 LoRA 技術(shù)對(duì) LLaMA 65B 大模型進(jìn)行微調(diào)及推理
7.1.1 背景

??Hoffmann等人的最新研究表明,在給定的計(jì)算預(yù)算下,最佳性能并不是由最大的模型實(shí)現(xiàn)的,而是由在更多數(shù)據(jù)上訓(xùn)練的較小模型實(shí)現(xiàn)的。但是在大模型時(shí)代,推理成本至關(guān)重要。在這種情況下,對(duì)于給定的性能水平,首選的模型不是訓(xùn)練速度最快的模型,而是推理速度最快的模型。盡管訓(xùn)練一個(gè)大模型以達(dá)到一定性能水平可能更便宜,但訓(xùn)練時(shí)間更長的較小模型最終在推理方面更經(jīng)濟(jì)。

??本研究的重點(diǎn)是訓(xùn)練一系列語言模型,在各種推理預(yù)算下實(shí)現(xiàn)最佳性能。通過在更多的token上進(jìn)行訓(xùn)練,得到的模型稱為LLaMA,參數(shù)范圍從7B到65B,與現(xiàn)在最好的LLM相當(dāng)。

  • LLaMA-13B 僅以 1/10 規(guī)模的參數(shù)在多數(shù)的 benchmarks 上性能優(yōu)于 GPT-3(175B)
  • LLaMA-65B 與業(yè)內(nèi)最好的模型 Chinchilla-70BPaLM-540B 實(shí)力相當(dāng)。
  • 僅使用公開數(shù)據(jù)集即可部分復(fù)現(xiàn)最先進(jìn)的性能(86%左右的效果)
7.1.2. 預(yù)訓(xùn)練數(shù)據(jù)

??我們的訓(xùn)練數(shù)據(jù)集是多個(gè)來源的混合,涵蓋了不同的領(lǐng)域,但僅限于使用公開可用且與開源兼容的數(shù)據(jù)。

LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

表1:預(yù)訓(xùn)練數(shù)據(jù)( 1.4T tokens)。表中列出了每個(gè)子集的采樣比例、epoch數(shù)量和磁盤大小。在預(yù)訓(xùn)練1T個(gè)token時(shí),采樣比例相同
7.1.3 模型結(jié)構(gòu)

整體結(jié)構(gòu)仍然是Transformer decoder,但是做了三點(diǎn)改進(jìn):

  • RMSNorm Pre-normalizatio(GPT3):為了提高訓(xùn)練的穩(wěn)定性,我們對(duì)每個(gè)Transformer子層的輸入進(jìn)行歸一化,而不是對(duì)輸出進(jìn)行歸一化,并使用了RMSNorm歸一化函數(shù);
  • SwiGLU(PaLM):將ReLU非線性激活函數(shù)替換為SwiGLU激活函數(shù),詳情參考本文4.2.1節(jié);
  • Rotary Embeddings (GPTNeo):去除了絕對(duì)位置嵌入,并在網(wǎng)絡(luò)的每一層中添加了旋轉(zhuǎn)位置嵌入RoPE

相關(guān)代碼(llama/model.py):

class TransformerBlock(nn.Module):
    def __init__(self, layer_id: int, args: ModelArgs):
        super().__init__()
        self.n_heads = args.n_heads
        self.dim = args.dim
        self.head_dim = args.dim // args.n_heads
        self.attention = Attention(args)
        self.feed_forward = FeedForward(
            dim=args.dim, hidden_dim=4 * args.dim, multiple_of=args.multiple_of
        )
        self.layer_id = layer_id
        self.attention_norm = RMSNorm(args.dim, eps=args.norm_eps)
        self.ffn_norm = RMSNorm(args.dim, eps=args.norm_eps)

    def forward(self, x: torch.Tensor, start_pos: int, freqs_cis: torch.Tensor, mask: Optional[torch.Tensor]):
    	# 作者對(duì)每個(gè)Transformer子層的輸入進(jìn)行歸一化,而不是對(duì)輸出進(jìn)行歸一化
        h = x + self.attention.forward(self.attention_norm(x), start_pos, freqs_cis, mask)
        out = h + self.feed_forward.forward(self.ffn_norm(h))
        return out
class Transformer(nn.Module):
    def __init__(self, params: ModelArgs):
        super().__init__()
        self.params = params
        self.vocab_size = params.vocab_size
        self.n_layers = params.n_layers

        self.tok_embeddings = ParallelEmbedding(
            params.vocab_size, params.dim, init_method=lambda x: x
        )

        self.layers = torch.nn.ModuleList()
        for layer_id in range(params.n_layers):
            self.layers.append(TransformerBlock(layer_id, params))

        self.norm = RMSNorm(params.dim, eps=params.norm_eps)
        self.output = ColumnParallelLinear(
            params.dim, params.vocab_size, bias=False, init_method=lambda x: x
        )

        self.freqs_cis = precompute_freqs_cis(
            self.params.dim // self.params.n_heads, self.params.max_seq_len * 2
        )

    @torch.inference_mode()
    def forward(self, tokens: torch.Tensor, start_pos: int):
        _bsz, seqlen = tokens.shape
        h = self.tok_embeddings(tokens)
        self.freqs_cis = self.freqs_cis.to(h.device)
        freqs_cis = self.freqs_cis[start_pos : start_pos + seqlen]

        mask = None
        if seqlen > 1:
            mask = torch.full((1, 1, seqlen, seqlen), float("-inf"), device=tokens.device)
            mask = torch.triu(mask, diagonal=start_pos + 1).type_as(h)

        for layer in self.layers:
            h = layer(h, start_pos, freqs_cis, mask)
        h = self.norm(h)
        output = self.output(h[:, -1, :])  # only compute last logits
        return output.float()
7.1.4 高效訓(xùn)練
  1. 算法
    我們的訓(xùn)練方法與Brown的Flan和Chowdhery的PaLM這些工作相似,并受到了Chinchilla scaling laws的啟發(fā)。

?? DeepMind發(fā)表的《Training Compute-Optimal Large Language Models》這篇論文,研究了在給定計(jì)算預(yù)算下,訓(xùn)練Transformer語言模型的最佳模型大小和訓(xùn)練tokens數(shù)量。通過在5億到5000億個(gè)tokens上訓(xùn)練超過400個(gè)語言模型,作者發(fā)現(xiàn)模型大小和訓(xùn)練令牌數(shù)應(yīng)該等比例擴(kuò)展:模型大小每翻倍,訓(xùn)練令牌數(shù)也應(yīng)翻倍。而現(xiàn)有的趨勢(shì)是是增加模型大小,通常不增加訓(xùn)練令牌數(shù)。例如MT-NLG 530BGPT-3 170B大了三倍,但是訓(xùn)練令牌數(shù)大致相同,導(dǎo)致訓(xùn)練不足,性能明顯低于相同計(jì)算預(yù)算下可能實(shí)現(xiàn)的水平。

??作者認(rèn)為,在相同的計(jì)算預(yù)算下,一個(gè)在更多數(shù)據(jù)上訓(xùn)練的較小模型將表現(xiàn)更好,并訓(xùn)練了一個(gè)計(jì)算優(yōu)化模型Chinchilla(70B)驗(yàn)證了這一假設(shè)。Chinchilla(70B)其在微調(diào)和推理時(shí)使用的計(jì)算資源大大減少,極大地方便了下游應(yīng)用,但是在各種下游評(píng)估任務(wù)中,性能上顯著優(yōu)于Gopher(280B)GPT-3(175B)、Jurassic-1(178B)Megatron-Turing NLG(530B)這些更大規(guī)模的模型。

  1. 訓(xùn)練參數(shù)
    作者使用了AdamW優(yōu)化器,并使用cosine learning rate schedule,使得最終學(xué)習(xí)率等于最大學(xué)習(xí)率的10%,設(shè)置0.1的權(quán)重衰減和1.0的梯度裁剪。warmup的step為2000,并根據(jù)模型的大小改變學(xué)習(xí)率和批處理大?。?br>LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)
  2. 高效優(yōu)化
    • 使用高效的因果多頭注意力機(jī)制的實(shí)現(xiàn)來減少內(nèi)存使用和運(yùn)行時(shí)間,該實(shí)現(xiàn)可在xformers庫中獲得
    • gradient checkpointing:使用checkpoint技術(shù)來減少在反向傳播過程中需要重新計(jì)算的激活值數(shù)量。具體來說,我們保存了計(jì)算成本較高的激活值,例如線性層的輸出,這是通過手動(dòng)實(shí)現(xiàn)transformer層的backward函數(shù)來實(shí)現(xiàn)的,而不是依賴于PyTorch的autograd庫。
    • 盡可能地重疊激活值的計(jì)算和GPU之間的通信(基于all_reduce操作)

??當(dāng)訓(xùn)練一個(gè)65B參數(shù)的模型時(shí),我們的代碼在具有80GB RAM的2048個(gè)A100 GPU上每秒處理大約380個(gè)標(biāo)記。這意味著在包含1.4T個(gè)標(biāo)記的數(shù)據(jù)集上進(jìn)行訓(xùn)練需要大約21天的時(shí)間。訓(xùn)練損失的變化參考下圖:
LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

圖1:7B、13B、33B和65B模型在訓(xùn)練過程中的訓(xùn)練損失,LLaMA-33B和LLaMA-65B模型是在1.4T個(gè)訓(xùn)練標(biāo)記上訓(xùn)練的,較小的模型是在1.0T個(gè)訓(xùn)練標(biāo)記上訓(xùn)練的。所有模型的batch size均為4M tokens
7.1.5 主要結(jié)果
  1. 常識(shí)推理(Common Sense Reasoning)
    LLaMA-65B在大多數(shù)任務(wù)中都優(yōu)于Chinchilla-70B、PaLM-540BGPT-3。
    LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

    表3:在常識(shí)推理任務(wù)上的zero-shot表現(xiàn)
  2. 閉卷問答(Closed-book Question Answering)

LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca) LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)
  1. 其它任務(wù)
LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca) LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca) LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)
閱讀理解 數(shù)學(xué)推理 代碼生成
  1. 訓(xùn)練過程中的性能演變(Evolution of performance during training)
    在訓(xùn)練過程中,我們對(duì)幾個(gè)問題回答和常識(shí)推理基準(zhǔn)進(jìn)行了模型性能的跟蹤,并在圖2中進(jìn)行了報(bào)告。在大多數(shù)基準(zhǔn)測(cè)試中,性能穩(wěn)步提高,并與模型的訓(xùn)練困惑度相關(guān)(參見圖1)。不過,SIQA和WinoGrande是例外。特別值得注意的是,在SIQA上,我們觀察到性能存在較大的變異,這可能表明該基準(zhǔn)測(cè)試不夠可靠。在WinoGrande上,性能與訓(xùn)練困惑度的相關(guān)性不太明顯:LLaMA-33B和LLaMA-65B在訓(xùn)練過程中的性能相似。
    LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)
  2. 指令調(diào)優(yōu)
    盡管LLaMA-65B的非微調(diào)版本已經(jīng)能夠遵循基本指令,但我們觀察到非常少量的指令微調(diào)可以提高在MMLU上的性能,并進(jìn)一步提高模型遵循指令的能力。指令微調(diào)得到的模型為LLaMA-I,在MMLU上達(dá)到了68.9%,但仍遠(yuǎn)未達(dá)到最先進(jìn)的水平(MMLU上的GPT code-davincii-002為77.4)。
    LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)
    表10:指令微調(diào) - MMLU(5-shot)。中等模型在MMLU上進(jìn)行指令微調(diào)和不進(jìn)行指令微調(diào)的比較
7.1.6 結(jié)論

??本文中提出了一系列公開發(fā)布的語言模型,并實(shí)現(xiàn)與最先進(jìn)的基礎(chǔ)模型相競爭的結(jié)果。最值得注意的是,LLaMA-13B的性能優(yōu)于GPT-3,但體積比GPT-3小10倍以上,LLaMA-65B與Chinchilla-70B和PaLM-540B競爭。

??與之前的研究不同,論文的研究表明,不使用專有數(shù)據(jù)集,而只使用公開可用的數(shù)據(jù)集進(jìn)行訓(xùn)練,可以達(dá)到最先進(jìn)的性能。作者希望向研究界發(fā)布這些模型將加速大型語言模型的發(fā)展,并有助于提高它們的魯棒性,減輕已知的問題,如毒性和偏見。

??此外,作者像Chung等人一樣觀察到,根據(jù)指令對(duì)這些模型進(jìn)行微調(diào)會(huì)產(chǎn)生有希望的結(jié)果計(jì)劃在未來的工作中進(jìn)一步研究這一點(diǎn)。

??最后,作者計(jì)劃在未來發(fā)布在更大的預(yù)訓(xùn)練語料庫上訓(xùn)練的更大的模型,因?yàn)樽髡咴跀U(kuò)展語料時(shí)已經(jīng)看到了性能的不斷提高

7.2 Alpaca(2023.3.13)

  • 博客《Alpaca: A Strong, Replicable Instruction-Following Model》、 stanford alpaca
  • 論文《Self-Instruct: Aligning Language Models with Self-Generated Instructions》、知乎-論文解讀貼

??Alpaca 7B是斯坦福大學(xué)在LLaMA 7B模型上經(jīng)過52K個(gè)指令跟蹤示范進(jìn)行微調(diào)的模型,其性能比肩GPT-3.5(text-davinci-003),但是整個(gè)訓(xùn)練成本不到600美元。

在8個(gè)80GB A100上訓(xùn)練了3個(gè)小時(shí),不到100美元;使用OpenAI的API自動(dòng)生成指令集,不到500美元

7.2.1 背景

??諸如GPT-3.5(text-davinci-003)、ChatGPT、ClaudeBing Chat等指令跟蹤模型(Instruction-following models)的功能越來越強(qiáng)大,但它們?nèi)匀淮嬖谠S多問題:它們可能生成虛假信息、傳播社會(huì)刻板印象并產(chǎn)生有害語言。為了解決這些緊迫的問題,學(xué)術(shù)界的參與非常重要。不幸的是,由于沒有能夠與OpenAI的text-davinci-003等閉源模型相媲美的易于獲取的模型,學(xué)術(shù)界在指令跟蹤模型上進(jìn)行研究一直很困難。

??我們發(fā)布了一種名為Alpaca的指令跟蹤語言模型,該模型基于Meta的LLaMA 7B模型,其微調(diào)的52K指令集是在text-davinci-003上自我指導(dǎo)式生成的(generated in the style of self-instruct )。在self-instruct evaluation set上,Alpaca表現(xiàn)出許多與OpenAI的text-davinci-003相似的行為,但其尺寸也驚人地小,易于復(fù)制且成本低廉。

??我們發(fā)布了訓(xùn)練配方(training recipe)和數(shù)據(jù),并計(jì)劃在將來發(fā)布模型權(quán)重。我們還提供一個(gè)交互式演示,以便研究界更好地了解Alpaca的行為。Alpaca僅供學(xué)術(shù)研究使用,禁止任何商業(yè)用途。

  • alpaca_data.json:包含了我們用于對(duì)Alpaca模型進(jìn)行微調(diào)的52K個(gè)指令跟隨數(shù)據(jù)。這個(gè)JSON文件是一個(gè)字典列表,每個(gè)字典包含以下字段:
    • instruction: str,描述模型應(yīng)執(zhí)行的任務(wù)。這52K個(gè)指令中的每個(gè)指令都是獨(dú)特的。
    • input: str,任務(wù)的可選上下文或輸入。例如,當(dāng)指令是“總結(jié)以下文章”時(shí),輸入是文章內(nèi)容。大約40%的示例有一個(gè)輸入。
    • output: str,由text-davinci-003生成的指令答案。
  • Data generation process:數(shù)據(jù)生成代碼
  • Training code:使用Hugging Face API進(jìn)行微調(diào)的代碼。

??總結(jié)起來就是構(gòu)建了self-instruct方法并通過指令微調(diào)實(shí)驗(yàn)證明了其有效性,發(fā)布了alpaca_data.json指令數(shù)據(jù)集,發(fā)布了Alpaca模型。評(píng)估顯示,使用 SELF -INSTRUCT 對(duì) GPT3 進(jìn)行調(diào)整的性能明顯優(yōu)于使用現(xiàn)有的公共指令數(shù)據(jù)集,并且與 InstructGPT 001 的性能表現(xiàn)接近。

7.2.2 self-instruct 概述

??在一定的預(yù)算下訓(xùn)練高質(zhì)量的指令跟蹤模型面臨兩個(gè)重要挑戰(zhàn):一個(gè)是強(qiáng)大的預(yù)訓(xùn)練語言模型,另一個(gè)是高質(zhì)量的指令跟蹤數(shù)據(jù)。前者通過Meta最近發(fā)布的LLaMA模型得到解決,后者可以通過現(xiàn)有的強(qiáng)大語言模型自動(dòng)生成指令數(shù)據(jù)來解決,即self-instruct半自動(dòng)化方法。

??該方法通過使用一個(gè)小的任務(wù)種子集作為任務(wù)池,從中隨機(jī)選擇任務(wù)來生成指令數(shù)據(jù)集。生成的數(shù)據(jù)經(jīng)過過濾和篩選后,可以用于對(duì)語言模型進(jìn)行指令調(diào)優(yōu),以提高其遵循指令的能力。

??本文采用175個(gè)人工編寫的instruction-output pairs作為種子池,指示模型(text-davinci-003)創(chuàng)造更廣泛的指令集,每個(gè)pais都包含[指令, 輸入, 輸出]或[指令, 輸出]。生成流程如下:

  1. 使用模型生成新的指令,用于定義任務(wù)(通常是新的);
  2. 對(duì)該模型生成的指令判斷是否分類任務(wù);
  3. 使用模型生成輸入-輸出實(shí)例,這些實(shí)例可以后續(xù)用于指令微調(diào);
  4. 對(duì)上述模型生成的數(shù)據(jù)進(jìn)行過濾和后處理;

??最后將經(jīng)過過濾和后處理的數(shù)據(jù)添加到種子池中;一直重復(fù)上述步驟直到種子池有足夠多的數(shù)據(jù)。通過簡化生成流程(詳見GitHub)大大降低成本,使得用OpenAI API生成52K指令集的成本不到500美元。

LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

圖2:SELF-INSTRUCT的高級(jí)概述。

??在這個(gè)生成的數(shù)據(jù)上,我們對(duì)GPT3進(jìn)行微調(diào)(即使用生成指令數(shù)據(jù)時(shí)使用的相同模型)構(gòu)建了GPT3 SELF-INST。評(píng)估結(jié)果表明,在SUPER NI(典型NLP任務(wù))上GPT3 SELF-INST的性能大幅超過GPT3(原始模型)(+33.1%),并幾乎與InstructGPT 001的性能相當(dāng);在廣泛的指令遵循能力上,與InstructGPT 001之間存在5%的差距。

??我們還使用Hugging Face的訓(xùn)練框架對(duì)LLaMA模型進(jìn)行了微調(diào),利用了Fully Sharded Data Parallel和混合精度訓(xùn)練等技術(shù),在8個(gè)80GB的A100上花費(fèi)了3個(gè)小時(shí),成本不到100美元。

7.2.3 self-instruct 方法

??一般的,指令數(shù)據(jù)集中的一條數(shù)據(jù)包含(指令, 輸入, 輸出)這三部分,例如:

指令:寫一篇關(guān)于以下主題的文章
輸入:校園安全
輸出:校園安全是學(xué)校必須高度重視的問題,涉及到師生的生命財(cái)產(chǎn)安全。建立安全意識(shí),制定嚴(yán)格的規(guī)章制度,加強(qiáng)安全巡查和應(yīng)急預(yù)案,是確保校園安全的關(guān)鍵。

??不過很多時(shí)候"指令"和"輸入"劃分的不是那么清晰,例如上面也可以寫成:

指令:寫一篇以校園安全為主題的文章
輸出:校園安全是學(xué)校必須高度重視的問題,涉及到師生的生命財(cái)產(chǎn)安全。建立安全意識(shí),制定嚴(yán)格的規(guī)章制度,加強(qiáng)安全巡查和應(yīng)急預(yù)案,是確保校園安全的關(guān)鍵。

??所以指令數(shù)據(jù)集中的一條數(shù)據(jù)可能包含三部分(指令, 輸入, 輸出),也可能只有兩部分(指令, 輸出)。

  1. 生成指令
    生成指令時(shí),先從種子池中隨機(jī)抽取6個(gè)人工編寫的指令,再隨機(jī)抽取2個(gè)之前步驟中模型生成的指令,總共8個(gè)指令。以如下表的模版格式組織之后,輸入給模型,讓模型輸出一個(gè)新的指令。

LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

  1. 判斷指令是否屬于分類任務(wù):在根據(jù)指令生成實(shí)例時(shí),分類任務(wù)與非分類任務(wù)使用的prompt模版是不同的,下一點(diǎn)會(huì)詳細(xì)講解。
    判斷方法:在種子池中隨機(jī)挑選12條分類指令和19條非分類指令,然后加上新生成的指令,以下表7的模版格式組織之后,輸入給模型,讓模型輸出新生成的指令是否分類任務(wù)。
    LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)
  2. 生成實(shí)例

在給定指令之后,生成(輸入, 輸出)這個(gè)實(shí)例對(duì)時(shí)還有兩種策略:

  • Input-first:輸入優(yōu)先策略,先生成輸入,后生成輸出。
  • Output-first:輸出優(yōu)先策略,常用于分類任務(wù)。
    輸入優(yōu)先的方式在生成輸入時(shí),偏向于只生成一個(gè)標(biāo)簽,尤其是指令對(duì)應(yīng)著分類任務(wù)時(shí),其輸入里面偏向于只生成一個(gè)類別。輸出優(yōu)先就是為了一定程度上緩解該問題。

指令數(shù)據(jù)集的豐富度我們是希望越豐富越好,所以允許出現(xiàn)一個(gè)指令,多個(gè)輸入的數(shù)據(jù)。

  • 輸入優(yōu)先:在種子池中隨機(jī)抽取 k 條數(shù)據(jù),以如下的prompt模版的形式組合之后,輸入給模型,讓模型為最后的指令生成相應(yīng)的實(shí)例。
    LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

  • 輸出優(yōu)先:在種子池中隨機(jī)抽取 k 條在之前的步驟中已經(jīng)標(biāo)記為分類的數(shù)據(jù),以如下的prompt模版的形式組合之后,輸入給模型,讓模型為最后的指令生成相應(yīng)的實(shí)例。
    LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

  1. 過濾及后處理
  • 為了數(shù)據(jù)的多樣性,新生成的指令只有與種子池中的指令的 ROUGE-L 小于0.7時(shí)才會(huì)添加進(jìn)入種子池;
  • 排除一些無法被語言模型處理的指令,比如涉及圖像、圖片、圖形的指令;
  • 在給指令生成實(shí)例時(shí),會(huì)過濾掉輸入相同但是輸出不同的實(shí)例
7.2.5 alpaca_data.json指令集分析
  1. 統(tǒng)計(jì)信息
    下表描述了生成數(shù)據(jù)的基本統(tǒng)計(jì)信息。在過濾后,我們生成了總計(jì)超過52K個(gè)指令和82K多個(gè)對(duì)應(yīng)這些指令的實(shí)例。
    LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)
  2. 數(shù)據(jù)質(zhì)量
    評(píng)估方式:隨機(jī)抽取200條指令,并給每個(gè)指令隨機(jī)抽取一個(gè)實(shí)例,然后人工對(duì)該指令和實(shí)例進(jìn)行標(biāo)注評(píng)估,評(píng)估結(jié)果如下表2所示。
    LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)
  • 生成的指令有含義,能表示一個(gè)任務(wù)的占比為92%;
  • 給每個(gè)指令生成合適的輸入的占比為79%;
  • 生成的輸出是指令和輸入的正確結(jié)果的占比為58%;
  • 指令、輸入、輸出,這三個(gè)字段全對(duì)的占比為54%;
7.2.6 實(shí)驗(yàn)結(jié)果
  1. SUPER NI benchmark:Self-Instruct能夠給GPT3模型帶來33.1%的巨大的提升,效果接近InstructGPT 001
    LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)
    表格3:在來自SUPER NI)的未見任務(wù)上的評(píng)估結(jié)果

    LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)
  2. 新新測(cè)評(píng)數(shù)據(jù)集SUPERNI。

??為了更好的測(cè)試本文中提出的方法訓(xùn)練出的模型在給用戶使用時(shí)的效果。本文設(shè)計(jì)了一份新的更貼近普通用戶的數(shù)據(jù)集(252條指令,每個(gè)指令一個(gè)實(shí)例),在該數(shù)據(jù)集上測(cè)試Self-Instruct的效果。在設(shè)計(jì)這個(gè)數(shù)據(jù)集時(shí)考慮到的有:

  • 不同的領(lǐng)域:郵件寫作、社交媒體、生產(chǎn)力工具、娛樂、編程等;
  • 形式上:可以是(指令, 輸入, 輸出),也可以是(指令, 輸出);
  • 指令有的長、有的短,輸入/輸出中包含項(xiàng)目符號(hào)、表格、代碼、方程等;

??評(píng)估方式是人工對(duì)模型的輸出結(jié)果做打分,評(píng)分A最好,評(píng)分D最差。在下圖5中的顏色對(duì)應(yīng)著綠色最好,紅色最差。

LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)
結(jié)果顯示:
LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)

7.3 Llama 2

  • 論文:Llama 2: Open Foundation and Fine-Tuned Chat Models
  • Llama 2官網(wǎng)、Llama 2開源項(xiàng)目、HuggingFace倉庫
  • 博客:官方博客Meta and Microsoft Introduce the Next Generation of Llama、LLaMA 2技術(shù)細(xì)節(jié)詳細(xì)介紹 、《更強(qiáng)的Llama 2開源,可直接商用》

?? Llama 可以說是 AI 社區(qū)內(nèi)最強(qiáng)大的開源大模型,但因?yàn)殚_源協(xié)議問題,一直不可免費(fèi)商用。近期,Meta 終于發(fā)布了大家期待已久的免費(fèi)可商用版本 Llama 2。

??此次 Meta 發(fā)布的 Llama 2 模型系列包含 7B、13B & 70B 三種參數(shù)變體。此外還訓(xùn)練了 340 億參數(shù)變體,但并沒有發(fā)布,只在技術(shù)報(bào)告中提到了。Llama 2相比Llama有以下升級(jí):

  • Llama 2 模型接受了 2 萬億個(gè)標(biāo)記的訓(xùn)練,訓(xùn)練語料相比LLaMA多出40%
  • Llama 2上下文長度是 Llama 1 的兩倍(2048升→4096),可以理解和生成更長的文本。
  • 發(fā)布了LLaMA-2-chat ,使用來自人類反饋的強(qiáng)化學(xué)習(xí)(超過 100 萬個(gè)新的人類注釋的訓(xùn)練)來確保安全性和幫助性。
  • 70B模型采用分組查詢注意力(GQA)

??公布的測(cè)評(píng)結(jié)果顯示,Llama 2 在包括推理、編碼、精通性和知識(shí)測(cè)試等許多外部基準(zhǔn)測(cè)試中都優(yōu)于其他開源語言模型。
LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)
更多資源:《關(guān)于 Llama 2 的一切資源,我們都幫你整理好了》

7.4 Llama2-Chinese

  • Llama2-Chinese
  • 《首發(fā)!國內(nèi)最大Llama開源社區(qū)發(fā)布首個(gè)預(yù)訓(xùn)練中文版Llama2》

??7月31日,Llama中文社區(qū)Llama2-Chinese率先完成了國內(nèi)首個(gè)真正意義上的中文版Llama2-13B大模型,從模型底層實(shí)現(xiàn)了Llama2中文能力的大幅優(yōu)化和提升(不是微調(diào)!而是基于200B中文語料預(yù)訓(xùn)練?。N阌怪靡桑形陌鍸lama2一經(jīng)發(fā)布將開啟國內(nèi)大模型新時(shí)代!

??雖然Llama2的預(yù)訓(xùn)練數(shù)據(jù)相對(duì)于第一代擴(kuò)大了一倍,但是中文預(yù)訓(xùn)練數(shù)據(jù)的比例依然非常少,僅占0.13%,這也導(dǎo)致了原版Llama2的中文能力較弱。

??我們對(duì)于一些中文問題進(jìn)行提問,發(fā)現(xiàn)大多數(shù)情況下Llama2都不能以中文回答,或者以中英文混雜的形式回答問題。因此,需要基于大規(guī)模中文數(shù)據(jù)對(duì)Llama2進(jìn)行優(yōu)化,使Llama2具備更好的中文能力。為此國內(nèi)頂尖高校大模型博士團(tuán)隊(duì)創(chuàng)辦了Llama中文社區(qū)Llama2-Chinese,開啟了Llama2中文大模型訓(xùn)練征程。

以下是社區(qū)主要時(shí)間線:

  • 2023年7月19日:正式啟動(dòng)Llama2模型的中文預(yù)訓(xùn)練,開啟Llama2中文社區(qū),國內(nèi)下載地址正在啟動(dòng)。
  • 2023年7月23日:Llama2中文微調(diào)參數(shù)發(fā)布至Hugging Face倉庫FlagAlpha
  • 2023年7月31日:國內(nèi)首個(gè)真正意義上的Llama2中文大模型發(fā)布,詳細(xì)信息參見社區(qū)公眾號(hào)文章。
  • 2023年8月26日:新增Code Llama模型。
  • 2023年8月28日:發(fā)布基于Llama2進(jìn)行中文預(yù)訓(xùn)練的開源大模型Atom-7B
  • 2023年9月12日:更新預(yù)訓(xùn)練版本Atom-7B和對(duì)話版本Atom-7B-Chat模型參數(shù),最新的中文預(yù)訓(xùn)練數(shù)據(jù)量為100B token,訓(xùn)練進(jìn)程見llama.family。

7.5 其它Llama 2項(xiàng)目

7.5.1 Vicuna v1.5

參考《GPT-4最強(qiáng)平替更新!UC伯克利發(fā)布Vicuna v1.5》

??自3月UC伯克利發(fā)布Vicuna以來,Vicuna就已成為最受歡迎的聊天LLM之一,它在多模態(tài)、AI安全和評(píng)估方面的研究具有開創(chuàng)性。此次基于全新的Llama 2,發(fā)布了更新版Vicuna v1.5,不僅支持4K和16K上下文,并且在幾乎所有基準(zhǔn)測(cè)試中取得了SOTA。目前基于Vicuna的優(yōu)秀項(xiàng)目有

  • MiniGPT4
  • LLaVA
  • LLM-Attacks:只要通過附加一系列特定的無意義token,就能生成一個(gè)神秘的prompt后綴。由此,任何人都可以輕松破解LLM的安全措施,生成無限量的有害內(nèi)容。
  • Gorilla:Gorilla是一種基于LLaMA架構(gòu)的大型語言模型,它可以生成合適的API調(diào)用,還可以快速添加新的領(lǐng)域知識(shí),包括Kubernetes、GCP、AWS、OpenAPI等。
  • QLoRA:QLoRA,使用一種新的高精度技術(shù)將預(yù)訓(xùn)練模型量化為4位,然后添加一小部分可學(xué)習(xí)的低秩適配器權(quán)重。這些適配器權(quán)重通過量化權(quán)重的反向傳播梯度進(jìn)行調(diào)整。QLoRA方法證明了4位量化模型也可以進(jìn)行有效的微調(diào),達(dá)到與全精度模型相當(dāng)?shù)男阅堋?/li>
  • ToolLLaMA:開源LLM能夠掌握數(shù)千種不同的現(xiàn)實(shí)世界API,并通過收集高質(zhì)量的指令調(diào)優(yōu)數(shù)據(jù)集來實(shí)現(xiàn)這一點(diǎn)。
7.5.2 中文LLaMA-2 & Alpaca-2

《哈工大科大訊飛聯(lián)合推出中文LLaMA-2 & Alpaca-2大語言模型》

??本項(xiàng)目基于Meta發(fā)布的可商用大模型Llama-2開發(fā),是中文LLaMA&Alpaca大模型的第二期項(xiàng)目,開源了中文LLaMA-2基座模型和Alpaca-2指令精調(diào)大模型。這些模型在原版Llama-2的基礎(chǔ)上擴(kuò)充并優(yōu)化了中文詞表,使用了大規(guī)模中文數(shù)據(jù)進(jìn)行增量預(yù)訓(xùn)練,進(jìn)一步提升了中文基礎(chǔ)語義和指令理解能力,相比一代相關(guān)模型獲得了顯著性能提升。相關(guān)模型支持4K上下文并可通過NTK方法最高擴(kuò)展至18K+。項(xiàng)目鏈接:https://github.com/ymcui/Chinese-LLaMA-Alpaca-2。

  • 針對(duì)Llama-2模型擴(kuò)充了新版中文詞表,開源了中文LLaMA-2和Alpaca-2大模型
  • 開源了預(yù)訓(xùn)練腳本、指令精調(diào)腳本,用戶可根據(jù)需要進(jìn)一步訓(xùn)練模型
  • 使用個(gè)人電腦的CPU/GPU快速在本地進(jìn)行大模型量化和部署體驗(yàn)
  • 支持transformers, llama.cpp, text-generation-webui, LangChain, vLLM等LLaMA生態(tài)
  • 目前已開源的模型:Chinese-LLaMA-2-7B, Chinese-Alpaca-2-7B

八、 LLM系列之底座模型對(duì)比

LLaMA、Palm、GLM、BLOOM、GPT模型結(jié)構(gòu)對(duì)比

  1. LLama:

    • 使用RMSNorm[GPT3]對(duì)輸入數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化,參考論文:Root mean square layer normalization;
    • 使用激活函數(shù)SwiGLU [PaLM], 參考PALM論文:Glu variants improve transformer;
    • 使用Rotary Embeddings進(jìn)行位置編碼[GPTNeo],參考論文 Roformer: Enhanced transformer with rotary position embedding;
    • 使用了AdamW優(yōu)化器,并使用cosine learning rate schedule;
    • 使用因果多頭注意的有效實(shí)現(xiàn)來減少內(nèi)存使用和運(yùn)行時(shí)間(xformers庫實(shí)現(xiàn))
  2. Palm

    • SwiGLU激活函數(shù):用于 MLP 中間激活,采用SwiGLU激活函數(shù):用于 MLP 中間激活,因?yàn)榕c標(biāo)準(zhǔn) ReLU、GELU 或 Swish 激活相比,《GLU Variants Improve Transformer》論文里提到:SwiGLU 已被證明可以顯著提高模型效果
    • Parallel Layers:每個(gè) Transformer 結(jié)構(gòu)中的“并行”公式:與 GPT-J-6B 中一樣,使用的是標(biāo)準(zhǔn)“序列化”公式。并行公式使大規(guī)模訓(xùn)練速度提高了大約 15%。消融實(shí)驗(yàn)顯示在 8B 參數(shù)量下模型效果下降很小,但在 62B 參數(shù)量下沒有模型效果下降的現(xiàn)象。
    • Multi-Query Attention:每個(gè)頭共享鍵/值的映射,即“key”和“value”被投影到 [1, h],但“query”仍被投影到形狀 [k, h],這種操作對(duì)模型質(zhì)量和訓(xùn)練速度沒有影響,但在自回歸解碼時(shí)間上有效節(jié)省了成本。
    • RoPE embeddings:使用的不是絕對(duì)或相對(duì)位置嵌入,而是RoPE,是因?yàn)?RoPE 嵌入在長文本上具有更好的性能 ,
    • Shared Input-Output Embeddings:輸入和輸出embedding矩陣是共享
  3. GLM

    • Layer Normalization的順序和殘差連接被重新排列,
    • 使用單個(gè)線性層來進(jìn)行輸出Token預(yù)測(cè)
    • ReLU激活函數(shù)替換為GELU
    • 采用二維位置編碼
  4. BLOOM

    • 使用 ALiBi 位置嵌入,它根據(jù)鍵和查詢的距離直接衰減注意力分?jǐn)?shù)。 與原始的 Transformer 和 Rotary 嵌入相比,它可以帶來更流暢的訓(xùn)練和更好的下游性能。ALiBi不會(huì)在詞嵌入中添加位置嵌入;相反,它會(huì)使用與其距離成比例的懲罰來偏向查詢鍵的注意力評(píng)分。圖片
    • Embedding Layer Norm:嵌入層歸一化。在嵌入層后添加了額外的層歸一化層,顯著提高了訓(xùn)練的穩(wěn)定性。
    • 使用了 25 萬個(gè)標(biāo)記的詞匯表。 使用字節(jié)級(jí) BPE,解碼時(shí)永遠(yuǎn)不會(huì)產(chǎn)生未知標(biāo)記。
  5. GPT
    GPT 使用 Transformer Decoder 結(jié)構(gòu),但是去掉了第二個(gè) Mask Multi-Head Attention層。

九、補(bǔ)充:近期發(fā)布的其它LLMs

9.1 Zephyr-7B論文解析及全量訓(xùn)練、Lora訓(xùn)練

見帖子《Zephyr-7B論文解析及全量訓(xùn)練、Lora訓(xùn)練》文章來源地址http://www.zghlxwxcb.cn/news/detail-501971.html

到了這里,關(guān)于LLMs模型速覽(GPTs、LaMDA、GLM/ChatGLM、PaLM/Flan-PaLM、BLOOM、LLaMA、Alpaca)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包