目錄
- LLM訓(xùn)練方法
- LLM高效訓(xùn)練/省內(nèi)存
- LLM與知識圖譜(KGs)結(jié)合
- LLM開源項目
- LLM訓(xùn)練集及評估
一、語言模型的發(fā)展
語言模型(Language Model,LM)目標(biāo)是建模自然語言的概率分布,具體目標(biāo)是構(gòu)建詞序列w1,w2,...,wm的概率分布,即計算給定的詞序列作為一個句子出現(xiàn)可能的大小P(w1w2...wm)。但聯(lián)合概率P的參數(shù)量十分巨大N^m(m代表句子的長度,N代表可能單詞的數(shù)量),一種簡化思路是,利用句子序列從左至右的生成過程來分解聯(lián)合概率:
也就是說,將詞序列w1w2...wm的生成過程看成單詞的逐個生成,假設(shè)第i個單詞的概率取決于前i-1個單詞。需要指出的是,這種分解本身并未降低模型所需的參數(shù)量,但是這種轉(zhuǎn)換為接下來的簡化提供了一種途徑。
- 統(tǒng)計語言模型:N-gram模型,即元文法模型。根據(jù)上述假設(shè),詞的概率受前面i-1個詞的影響,稱為歷史影響,而估算這種概率最簡單的方法是根據(jù)語料庫,計算詞序列在語料庫中出現(xiàn)的頻次。
- 神經(jīng)語言模型(Neural Network Language Models,NNLM):克服了n元語言模型的維度災(zāi)難,出現(xiàn)了以詞向量(Word Embedding)為代表的分布式表示的語言模型FFN, RNN, LSTM
- 預(yù)訓(xùn)練語言模型(Pre-trained Model,PLM):ELMo首先預(yù)訓(xùn)練雙向LSTM網(wǎng)絡(luò),Transformer基于注意力機制,BERT利用掩碼機制構(gòu)造了基于上下文預(yù)測中間詞的預(yù)訓(xùn)練任務(wù)
編碼預(yù)訓(xùn)練語言模型(Encoder-only Pre-trained Models):如BERT模型 | 解碼預(yù)訓(xùn)練語言模型(Decoder-only Pre-trained Models):如GPT模型 | 基于編解碼架構(gòu)的預(yù)訓(xùn)練語言模型(Encoder-decoder Pre-trained Models):Seq2Seq模型如BART模型,采用的預(yù)訓(xùn)練方式為輸入含有各種噪聲的文本,再由模型進行去噪重構(gòu) |
|
|
|
- 大語言模型(Large Language Model,LLM)
2019年Google發(fā)布了T5。2020年1月,OpenAI發(fā)表了論文《Scaling Laws for Neural Language Models》,研究了基于交叉熵損失的語言模型性能的經(jīng)驗尺度法則,并且發(fā)現(xiàn):大模型使用樣本的效率顯著更高,因此最優(yōu)的高效訓(xùn)練方式是在中等數(shù)據(jù)集上訓(xùn)練超大模型,并在顯著收斂前提前停止。
LLM成功的一些關(guān)鍵技術(shù):
- 模型縮放(Scaling):模型規(guī)模的擴大,訓(xùn)練數(shù)據(jù)的質(zhì)量對實現(xiàn)良好性能起著關(guān)鍵作用
- 模型訓(xùn)練(Training):使用各種優(yōu)化框架來部署并行算法,比如DeepSpeed和Megatron-LM
- 能力誘導(dǎo)(Ability Eliciting):用合適的任務(wù)步驟和Prompt來引導(dǎo)大語言模型解決復(fù)雜任務(wù)
- 對齊調(diào)優(yōu)(Alignment Tuning):?大語言模型進行了大量數(shù)據(jù)量的訓(xùn)練,因此有可能因為低質(zhì)量數(shù)據(jù)產(chǎn)生錯誤甚至有害的內(nèi)容。GPT采取了人類反饋強化學(xué)習(xí)(RLHF)的策略,通過精心設(shè)計的標(biāo)簽將人類融入訓(xùn)練循環(huán)中,來避免這種問題的出現(xiàn)。
- 工具利用(Tools Manipulation):外置工具如插件,可以拓展大語言模型的能力
LLM 大致可以分為兩種類型,即基礎(chǔ)LLM和指令微調(diào)LLM?;A(chǔ)LLM是基于文本訓(xùn)練數(shù)據(jù),訓(xùn)練出預(yù)測下一個單詞能力的模型,其通常是在互聯(lián)網(wǎng)和其他來源的大量數(shù)據(jù)上訓(xùn)練的。指令調(diào)整的 LLMs 的訓(xùn)練通常是從已經(jīng)訓(xùn)練好的基本 LLMs 開始,該模型已經(jīng)在大量文本數(shù)據(jù)上進行了訓(xùn)練。然后,使用輸入是指令、輸出是其應(yīng)該返回的結(jié)果的數(shù)據(jù)集來對其進行微調(diào),要求它遵循這些指令。然后通常使用一種稱為 RLHF(reinforcement learning from human feedback,人類反饋強化學(xué)習(xí))的技術(shù)進行進一步改進,使系統(tǒng)更能夠有幫助地遵循指令
1. LLM訓(xùn)練技術(shù)
基本流程:
預(yù)訓(xùn)練語料的來源大致可以分為兩類:通用語料和專業(yè)語料。
- 通用語料:如網(wǎng)頁、書籍和會話文本等,其龐大、多樣化和可訪問的特性,可以增強大語言模型的語言建模和泛化能力。
- 專業(yè)語料:鑒于大語言模型出色的泛化能力,也有研究將預(yù)訓(xùn)練語料庫擴展到更專業(yè)的數(shù)據(jù)集,如多語言數(shù)據(jù)、科學(xué)數(shù)據(jù)和代碼,賦予大語言模型特定的任務(wù)解決能力。
以 BERT 為代表的預(yù)訓(xùn)練語言模型需要根據(jù)任務(wù)數(shù)據(jù)進行微調(diào)(Fine-tuning),這種范式可以應(yīng)用于參數(shù)量在幾百萬到幾億規(guī)模的預(yù)訓(xùn)練模型。但是針對數(shù)十億甚至是數(shù)百億規(guī)模的大模型,針對每個任務(wù)都進行微調(diào)的計算開銷和時間成本幾乎都是不可接受的。
因此,指令微調(diào)(Instruction Finetuning)方法被創(chuàng)造出來,將大量各類型任務(wù),統(tǒng)一為生成式自然語言理解框架,并構(gòu)造訓(xùn)練語料進行微調(diào)。
通過指令微調(diào),大模型學(xué)習(xí)到了如何響應(yīng)人類指令,可以根據(jù)指令直接能夠生成合理的答案。由于指令微調(diào)階段訓(xùn)練了非常多的任務(wù),大模型任務(wù)能力可以泛化到之前沒有見過的任務(wù)上,這使得模型初步具備了回答人們提出的任何指令的可能。這種能力對于大模型來說至關(guān)重要,使其可以在開放領(lǐng)域有很好的表現(xiàn)。
盡管指令微調(diào)后的模型,在開放領(lǐng)域任務(wù)能力表現(xiàn)優(yōu)異,但是模型輸出的結(jié)果通常與人類的回答相差很大,簡而言之就是“沒有人性”。因此需要進一步優(yōu)化模型,使得模型的輸出與人類的習(xí)慣對齊。其中最具有代表性且已取得巨大成功的方法,就是OpenAI開發(fā)的、塑造了ChatGPT的人類反饋強化學(xué)習(xí)(Reinforcement Learning from Human Feedback,RLHF)。
訓(xùn)練方法:
- 無監(jiān)督預(yù)訓(xùn)練?Unsupervised Pre-training
- 監(jiān)督微調(diào)(Supervised Fine-Tuning,SFT)
- 基于人類反饋強化學(xué)習(xí)(RLHF)
- 獎勵 / 偏好建模 (Reward / preference modeling,RM)
案例
- “StackLLaMA”: 用 RLHF 訓(xùn)練 LLaMA 的手把手教程
2. LLM省內(nèi)存方法
- fp16 / int8 (量化)
- LoRA:Low-Rank Adaptation of Large Language Models 處理大模型微調(diào)。?LoRA 建議凍結(jié)預(yù)訓(xùn)練模型的權(quán)重并在每個 Transformer 塊中注入可訓(xùn)練層(_秩-分解矩陣_)。因為不需要為大多數(shù)模型權(quán)重計算梯度,所以大大減少了需要訓(xùn)練參數(shù)的數(shù)量并且降低了 GPU 的內(nèi)存要求。
- Prefix Tuning
- P-Tuning
- Prompt Tuning
- Textual Inversion:通過幾張概念圖片,通過學(xué)習(xí)文圖生成模型Text Embedding空間中的偽詞(pseudo-word)來表示這些概念。然后把這些偽詞組合成自然語言的句子,指導(dǎo)個性化生成。即圖片prompt
- Gradient checkpointing
- Torch FSDP
- CPU offloading
開源微調(diào)庫:
- PEFT: State-of-the-art Parameter-Efficient Fine-Tuning 大模型參數(shù)高效微調(diào),支持LoRA,Prefix Tuning,Prompt tuning等
2.1 LoRA 低秩自適應(yīng)微調(diào)
LoRA主要用于處理大模型微調(diào)的問題。目前超過數(shù)十億以上參數(shù)的具有強能力的大模型(例如 GPT-3)通常在為了適應(yīng)其下游任務(wù)的微調(diào)中會呈現(xiàn)出巨大開銷。 LoRA 建議凍結(jié)預(yù)訓(xùn)練模型的權(quán)重并在每個 Transformer 塊中注入可訓(xùn)練層(_秩-分解矩陣_)。因為不需要為大多數(shù)模型權(quán)重計算梯度,所以大大減少了需要訓(xùn)練參數(shù)的數(shù)量并且降低了 GPU 的內(nèi)存要求。研究人員發(fā)現(xiàn),通過聚焦大模型的 Transformer 注意力塊,使用 LoRA 進行的微調(diào)質(zhì)量與全模型微調(diào)相當(dāng),同時速度更快且需要更少的計算。

?LoRA優(yōu)勢:
- 預(yù)訓(xùn)練的模型可以共享,并用于為不同的任務(wù)構(gòu)建許多小型LoRA模塊。通過替換圖1中的矩陣A和B,可以凍結(jié)共享模型參數(shù)并高效地切換任務(wù),從而顯著降低存儲需求和任務(wù)切換開銷。
- 當(dāng)使用自適應(yīng)優(yōu)化器時,LoRA使訓(xùn)練更有效,并將硬件進入障礙降低3倍,因為不需要計算梯度或維護大多數(shù)參數(shù)的優(yōu)化器狀態(tài)。相反,只優(yōu)化注入的小得多的低秩矩陣。
- 簡單的線性設(shè)計允許在部署時將可訓(xùn)練矩陣與凍結(jié)權(quán)重合并,與完全微調(diào)的模型相比,通過構(gòu)造,不會引入推理延遲。
例如,假設(shè)ΔW是權(quán)重矩陣?W∈R^A×B?的權(quán)重更新。然后,可以將權(quán)重更新矩陣分解為兩個較小的矩陣:?ΔW=WA·WB?,其中?WA∈R^A×r?,并且?WB∈R^r×B?。在這里,保留原始重量W凍結(jié)并且僅訓(xùn)練新矩陣?WA?和?WB 。
重新參數(shù)化時,對?A 使用隨機高斯初始化,對?B?使用零初始化,因此?ΔW=BA 在訓(xùn)練開始時為零。然后,用?α/r 縮放?ΔWx ,其中α是r中的常數(shù)。當(dāng)使用Adam進行優(yōu)化時,如果適當(dāng)縮放初始化,則調(diào)整α與調(diào)整學(xué)習(xí)率大致相同。
2.2 模型量化

2.3?Textual Inversion
Text embedding
- 輸入字符串中的每個詞(word)或子詞(sub-word)都被轉(zhuǎn)換為一個標(biāo)記(Token),它是預(yù)定義詞典中的索引(參見BPE算法);
- 然后將每個Token對應(yīng)到一個唯一的嵌入向量(embedding),這些嵌入向量通常作為文本編碼器的一部分進行學(xué)習(xí);
- 選擇這個嵌入向量空間作為反演(Inversion)的目標(biāo),指定一個占位符字符串?S*?來表示希望學(xué)習(xí)的新概念;
- 用新學(xué)習(xí)的嵌入向量?v*?替換與新概念關(guān)聯(lián)的嵌入向量,即將概念注入(inject)到詞匯表中;
- 跟處理其它單詞一樣,用該概念字符組成新句子,例如: A photo of?S*, A painting in the style of?S*.
Text inversion?最小化圖像重建損失(LDM)進行優(yōu)化
LLM+知識圖譜(KGs)
文章來源:http://www.zghlxwxcb.cn/news/detail-609886.html
- KGs-enhanced LLM : 在KG增強的LLM中,KG不僅可以被納入LLM的預(yù)訓(xùn)練和推理階段,以提供外部知識,還可以用于分析LLM和提供可解釋性。
- LLM-augmented KGs : 在LLM增強的KG中,LLM已被用于各種與KG相關(guān)的任務(wù),例如,KG embedding ,KG completion,KG construction ,KG-to-text generation and KGQA ,以提高性能并促進KG的應(yīng)用。
- Synergized LLMs + KGs : 在協(xié)同LLM+KG中,研究人員將LLM和KG的優(yōu)點結(jié)合起來,共同提高知識表示和推理的性能。???????
大語言模型項目
- ChatGLM:6B開源,具有問答、多輪對話和代碼生成功能的中英雙語模型
- SwissArmyTransformer:一個Transformer統(tǒng)一編程框架,ChatGLM-6B已經(jīng)在SAT中進行實現(xiàn)并可以進行P-tuning微調(diào)。
- ChatGLM-MNN:一個基于 MNN 的 ChatGLM-6B C++ 推理實現(xiàn),支持根據(jù)顯存大小自動分配計算任務(wù)給 GPU 和 CPU
- JittorLLMs:最低3G顯存或者沒有顯卡都可運行 ChatGLM-6B FP16, 支持Linux、windows、Mac部署
- Colossal AI:SFT監(jiān)督微調(diào) -> 獎勵模型(RM)訓(xùn)練 -> 強化學(xué)習(xí)(RLHF)
- LLaMA: stanford-alpaca
- alpaca-lora:使用LoRA技術(shù),調(diào)用哪個PEFT庫實現(xiàn)低價高效微調(diào)
- Dolly:使用Alpaca數(shù)據(jù)集在GPT-J-6B上微調(diào)
- PaLM-rlhf-pytorch:基于谷歌大模型PaLM架構(gòu)
- Vicuna:對LLaMA微調(diào)
- LMFlow:低成本訓(xùn)練,開放了網(wǎng)頁體驗
- ChatRWKV
- 復(fù)旦MOSS
- GPTrillion
- Koala
- StackLLaMA
Chinese-LangChain 拆解 講解 - 知乎文章來源地址http://www.zghlxwxcb.cn/news/detail-609886.html
大語言模型數(shù)據(jù)集Dataset
- RefGPT:基于RefGPT生成大量真實和定制的對話數(shù)據(jù)集,中文
- Alpaca-CoT:統(tǒng)一了豐富的IFT數(shù)據(jù)(如CoT數(shù)據(jù),目前仍不斷擴充)、多種訓(xùn)練效率方法(如lora,p-tuning)以及多種LLMs,三個層面上的接口,打造方便研究人員上手的LLM-IFT研究平臺
大語言模型評估 Evaluation
- FlagEval?(天秤)大模型評測體系及開放平臺:構(gòu)建了“能力-任務(wù)-指標(biāo)”三維評測框架,細粒度刻畫基礎(chǔ)模型的認知能力邊界,可視化呈現(xiàn)評測結(jié)果
- C-Eval:?構(gòu)造中文大模型的知識評估基準(zhǔn)
- AGIEval:微軟發(fā)布的一項新型基準(zhǔn)測試,這項基準(zhǔn)選取20種面向普通人類考生的官方、公開、高標(biāo)準(zhǔn)往常和資格考試
應(yīng)用集成LLM
- koishi:創(chuàng)建跨平臺、可擴展、高性能的機器人
GitHub上資料Repository
- FindTheChatGPTer:ChatGPT的開源平替?zhèn)儯ㄎ谋敬竽P?、多模態(tài)大模型
- LLM_reviewer:開源、規(guī)模較小、可私有化部署、訓(xùn)練成本較低的‘小羊駝類’模型
- Awesome-AITools:整理了AI相關(guān)的實用工具、評測和相關(guān)文章
- DecryptPrompt:Prompt&LLM論文,開源數(shù)據(jù)&模型
- Awesome Pretrained Chinese NLP Models:高質(zhì)量中文預(yù)訓(xùn)練模型
- Awesome-LLM
References
- 現(xiàn)有開源中文LLM整理 - 知乎
- 自然語言處理前沿——大語言模型的前世今生
- 一些LLMs的省內(nèi)存方法 - 知乎
- GitHub - km1994/LLMsNineStoryDemonTower: 【LLMs九層妖塔】分享一下打怪(ChatGLM、Chinese-LLaMA-Alpaca、MiniGPT-4、FastChat、LLaMA、gpt4all等)實戰(zhàn)與經(jīng)驗,
- GitHub - datawhalechina/hugging-llm: HuggingLLM, Hugging Future.:適合新手入門科普
- s
- s
到了這里,關(guān)于大語言模型LLM的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!