LLM里的預訓練,SFT,DPO, NTP, GRPO,微調,蒸餾的解釋及流程
NLP and transform
https://github.com/datawhalechina/happy-llm/tree/main
────────────────────────────────────────────────────────
- 預訓練(Pre-training)
────────────────────────────────────────────────────────
? 核心思路
- 在大規模非結構化文本數據(如網絡爬取的語料、書籍、百科等)上進行自監督學習,常見目標包括自回歸的“下一詞預測(Next Token Prediction,NTP)”或掩碼語言模型(MLM)等。
- 通過在海量文本上學習上下文關聯,模型能夠獲取通用的語言理解與生成能力。
? 典型流程
- 數據準備:收集和清洗大規模語料庫。
- 訓練目標:
- 自回歸:給定前面所有token,預測下一個token(NTP)。
- MLM:隨機遮蓋部分token,讓模型去預測被遮蓋的token。
- 訓練方式:通常使用隨機梯度下降(如Adam)進行長期大規模訓練。
- 輸出:得到一個能較好學習語言知識的LLM(如GPT、BERT之類的底座模型)。
────────────────────────────────────────────────────────
2. NTP(Next Token Prediction)
────────────────────────────────────────────────────────
? 核心思路
- NTP并不是一個單獨的微調步驟,而是語言模型中最常用的訓練目標,也可以視為“自回歸語言模型”的傳統訓練目標。“預訓練”環節常見的就是這種NTP形式。
- 給定已經生成的前文,預測下一步可能的token,相當于讓模型學習語言的條件概率分布。
? 典型流程
- 在預訓練中大規模使用:對大量文本進行自回歸損失的最小化(交叉熵損失),模型學會在上下文條件下預測下一個詞或子詞。
────────────────────────────────────────────────────────
3. 微調(Fine-tuning)
────────────────────────────────────────────────────────
? 核心思路
- 微調是預訓練之后讓模型面向具體任務或場景進一步訓練的過程,通常會根據實際需要,選擇不同的微調方法。
- 監督微調(SFT)就是微調的一種典型形式;除此之外還有使用偏好反饋、對抗訓練、蒸餾式微調等。
? 典型流程
- 數據準備:根據下游任務或目標場景,收集小規模但高質量的數據。
- 模型初始化:加載預訓練的LLM。
- 訓練:根據具體方法(如監督、強化學習、知識蒸餾等)進行若干輪訓練。
- 驗證與調整:在開發集或內測中不斷監控、驗證并調整超參數。
- 最終得到適合場景需求的模型。
────────────────────────────────────────────────────────
4. SFT(Supervised Fine-tuning,監督微調)
────────────────────────────────────────────────────────
? 核心思路
- 這是最常見、最直接的微調方法:基于有標簽(如指令-輸出對、問題-答案對等)的數據集對預訓練模型進行進一步訓練。
- 目的是讓模型學會在特定需求或任務上輸出更準確、符合要求的結果。
? 典型流程
- 收集訓練數據:如對話式問答、多輪對話數據、翻譯數據、摘要數據等。
- 損失函數:通常仍是語言模型的交叉熵損失,只不過這里的“目標輸出”是有監督標簽。
- 訓練:對預訓練模型進行少量epoch的訓練,學習對特定任務的映射。
- 模型效果:在該任務上更準確,同時保留預訓練學到的語言和知識能力。
────────────────────────────────────────────────────────
5. DPO(Direct Preference Optimization)
────────────────────────────────────────────────────────
? 核心思路
- DPO是一種基于偏好的對齊(Alignment)訓練方法,和RLHF(基于強化學習的人類反饋)類似,但不需要復雜的強化學習算法(如PPO)。
- 它直接利用“偏好數據”(例如,人類對兩個回答的好壞標注)來優化模型,使得模型傾向輸出更“被偏好”的結果。
? 典型流程
- 收集或構造偏好數據:常見形式為“同一條指令下的兩個回答,標注出人類更偏好的回答”。
- 目標函數:通過對這兩個回答在模型輸出概率上的對數幾率等差異進行優化,迫使模型更偏向人類標注的較優回答。
- 模型訓練:使用梯度下降,使得模型最小化“不符合偏好”的損失。
- 獲取對齊后的模型,減少產生不合需求或低質量回答的概率。
────────────────────────────────────────────────────────
6. GRPO
────────────────────────────────────────────────────────
? 可能含義
- GRPO在近期文獻和社區討論中常被解釋為對偏好優化的一種方法,和DPO、PPO等一樣,也是試圖將“人類偏好”或“獎勵模型偏好”融入到語言模型中。
- “GRPO”通常被擴展為“(G)uided/(G)radient/(G)enerative + RPO(Reward/Preference Optimization)”等不同解讀,核心思路是在微調步驟里融入“偏好學習”或“獎勵驅動”,從而讓模型輸出更符合人工偏好或對話安全性規范的內容。
? 典型流程
- 和DPO類似,先收集偏好數據或由一個“獎勵模型”對模型輸出進行打分。
- 用帶有偏好/獎勵的優化目標替代或融入原始的自監督或監督訓練目標。
- 通過梯度更新,讓模型朝著“更高人類偏好/更高獎勵分數”的方向改進。
────────────────────────────────────────────────────────
7. 蒸餾(Distillation)
────────────────────────────────────────────────────────
? 核心思路
- 蒸餾是一個模型壓縮和加速推理的常見方法,將體量、參數量更大的教師模型(Teacher)所得的預測分布和知識“蒸餾”給體量更小的學生模型(Student)。
- 學生模型在訓練階段不僅學習原始目標標簽,還要在很大程度上擬合教師模型的輸出分布(即軟標簽),從而在保證精度的前提下縮減模型規模、加快推理速度,減少部署成本。
? 典型流程
- 準備教師模型:往往是一個大參數量、性能較好的預訓練或微調后模型。
- 學生模型初始化:模型參數規模/深度較小。
- 訓練:
- 損失由兩部分組成:模仿教師模型的輸出分布(KL散度) + 對真實標簽的交叉熵(可選)。
- 通過在平衡兩種損失的同時訓練學生模型,最終可使其性能接近教師模型。
- 產出:蒸餾完成的學生模型,能夠以較少的資源在推理時獲得較好效果。
────────────────────────────────────────────────────────
總結與整體流程示例
────────────────────────────────────────────────────────
在實際項目中,這些方法往往組合使用,形成一個多階段的LLM訓練/微調流水線。一個常見的高層次示例可能是:
-
預訓練階段:
- 使用NTP(下一詞預測)或MLM等自監督目標,在大規模無監督語料上訓練得到基礎大模型。
-
監督微調(SFT)階段:
- 通過標注好的高質量指令-回答對,將模型調教得更貼近下游任務需求。
-
偏好對齊(例如DPO、GRPO等)階段:
- 進一步利用人類偏好(或者一個獎勵模型)來進行優化,對模型進行對齊,讓其在回答形式、內容上更符合偏好或安全規范。
-
知識蒸餾或模型壓縮階段(可選):
- 若需要在移動端或資源有限的場景部署,則可以用大模型作為教師,對小模型進行蒸餾,保證盡可能高的性能同時降低計算開銷。
以上各環節常常配合使用,具體細節與流程會因目標任務、數據可得性、計算資源等各種因素而變化。通過這些組合方法,LLM能夠在性能、對齊度和效率間找到平衡,并產出滿足應用需求的高質量對話或文本生成結果。


浙公網安備 33010602011771號