?般??,訓練?個完整的 LLM 需要經過圖1中的三個階段——Pretrain、SFT 和 RLHF。
4.2.1 Pretrain
預訓練任務與架構?
- 任務類型:采用因果語言模型(CLM),通過預測下一個 token 進行訓練,與傳統預訓練模型(如 BERT)的 MLM 任務不同,更側重生成能力。
- 架構選擇:主流 LLM(如 GPT-3、LLaMA)采用 Decoder-Only 架構,相比傳統模型(如 BERT 的 Encoder 架構)更適合長文本生成。
參數量與數據規模對比?
- 核心差異:LLM 參數量比傳統模型大 1-3 個數量級,訓練數據需滿足 Scaling Law(token 數約為參數的 1.7-20 倍),如 GPT-3 需 300 億 - 3.5 萬億 token。
分布式訓練框架與技術
- 數據并行:多 GPU 同時處理不同批次數據,同步梯度更新,適用于模型參數可容納單卡的場景。
- 模型并行:將模型分層或分模塊部署到不同 GPU,解決百億級參數的內存瓶頸(如 GPT-3 需拆分為 96 層 Decoder)。
主流的分布式訓練框架包括 Deepspeed、Megatron-LM、ColossalAI 等,其中,Deepspeed 使??最?。?
DeepSpeed:采用 ZeRO 優化顯存,分三級策略(ZeRO-1 至 ZeRO-3)逐步分?模型狀態參數,減少單卡顯存占用(如 ZeRO-3 可使單卡僅存儲 1/n 模型參數)。
ZeRO 將模型訓練階段每張卡被占?的顯存分為兩類:
- 模型狀態(Model States),包括模型參數、模型梯度和優化器 Adam 的狀態參數。假設模型參數量為1M,?般來說,在混合精度訓練的情況下,該部分需要 16M 的空間進?存儲,其中 Adam 狀態參數會占據12M 的存儲空間。
- 剩余狀態(Residual States),除了模型狀態之外的顯存占?,包括激活值、各種緩存和顯存碎?。
針對上述顯存占?,ZeRO 提出了三種不斷遞進的優化策略:
- 1. ZeRO-1,對模型狀態中的 Adam 狀態參數進?分?,即每張卡只存儲 的 Adam 狀態參數,其他參數仍然保持每張卡?份。
- 2. ZeRO-2,繼續對模型梯度進?分?,每張卡只存儲 的模型梯度和 Adam 狀態參數,僅模型參數保持每張卡?份。
- 3. ZeRO-3,將模型參數也進?分?,每張卡只存儲 的模型梯度、模型參數和 Adam 狀態參數。
其他框架:Megatron-LM(張量并行)、ColossalAI(3D 并行),結合 CPU-offload 技術進一步釋放 GPU 內存。
預訓練數據挑戰與處理流程
主流開源數據:CommonCrawl(67%)、C4(15%)、Github(4.5%)等,LLM 常混合私有高質量數據(如學術論文、書籍)。
中文數據缺口:高質量中文開源數據集(如 SkyPile、yayi2)規模遠小于英文(如 RedPajama-1T),且閉源模型(如 ChatGLM)未公開預訓練數據。
預訓練數據處理?般包括以下流程:
- 文檔準備:爬取網頁后過濾 URL、提取純文本、篩選語種(如保留中文 / 英文)。
- 語料過濾:通過模型分類器(如 BERT 篩選高質量文本)或啟發式規則(如去除亂碼、廣告)剔除低質內容。
- 語料去重:基于 hash 算法或子串匹配刪除重復文檔,避免模型過擬合(如 SlimPajama-627B 通過去重實現比 RedPajama-1T 更好效果)。
4.2.2 SFT?
SFT——Supervisor Finetune,有監督微調。賦予預訓練 LLM “通用指令遵循能力”,解決其 “死板背書” 問題(僅能預測下一個 token,無法理解指令含義)。
與傳統微調的區別:傳統 PLM 需針對單一任務(如文本分類)單獨微調,而 LLM 的 SFT 通過 “指令微調” 實現跨任務泛化,例如用同一模型處理翻譯、問答、生成等多類指令。
指令數據的構建需覆蓋多任務類型(如文本生成、問答、聊天),開源 LLM 的 SFT 數據量通常在數 B token 級別,單任務需 500~1000 條樣本。
配比例子:OpenAI 的 InstructGPT 數據中,文本生成占 45.6%、開放域問答占 12.4%、聊天占 8.4%,需平衡不同任務類型的比例以提升泛化性。
數據獲取難點:
- 人工標注成本高:高質量指令 - 響應對依賴專業標注(如 ChatGPT 的成功依賴人工數據),開源數據稀缺。
- 替代方案:通過 LLM 生成指令數據(如 Alpaca 基于 ChatGPT 生成樣本),降低標注成本但需注意數據質量。
指令數據格式通常包含三個鍵(以翻譯任務為例):
{"instruction": "將下列文本翻譯成英文","input": "今天天氣真好","output": "Today is a nice day!"
}
格式優化:
- LLaMA 格式:使用特定分隔符(如
### Instruction:\n
)包裹指令,確保模型識別輸入模式。 - 多輪對話構造:
- 不合理方式:僅擬合最后一輪回復(丟失中間信息)或拆分為單輪樣本(重復計算)。
- 合理方式:將多輪對話拼接為連續文本(如
prompt1+completion1+prompt2+completion2+...
),模型按順序預測每輪輸出,例如:
輸入:用戶問“你好”→模型回“您好”→用戶問“Datawhale是什么”
輸出:模型需生成“您好”+“Datawhale是開源組織”(按CLM預測下一個token)
多輪對話不依賴預訓練,完全通過 SFT 階段的對話格式數據訓練獲得。
技術要點:利用 LLM 的自回歸特性(單向注意力),將歷史對話作為輸入上下文,模型通過預測后續 token 實現對話連貫性。例如:
- 無多輪能力模型:每次對話獨立,不記憶歷史(如重復詢問時仍回答 “不知道”)。
- 有多輪能力模型:結合歷史對話生成回復(如記住用戶曾介紹過 Datawhale)。
LLM 的知識儲備(如語言理解、世界知識)源于預訓練語料,SFT 僅調整其 “應用知識的方式”。
SFT 的激發作用:通過指令微調,將預訓練獲得的通用能力轉化為具體任務執行能力,例如:
- 預訓練階段:學會 “翻譯語法規則”;
- SFT 階段:通過指令數據學會 “按用戶要求執行翻譯任務”。
4.2.3 RLHF
RLHF,全稱是 Reinforcement Learning from Human Feedback,即?類反饋強化學習,是利?強化學習來訓練LLM 的關鍵步驟。作為 LLM 訓練的對齊階段,解決 SFT 后模型仍可能存在的價值觀偏差,使輸出符合人類安全、有用、無害的標準(如拒絕有害指令)。
與 SFT 的區別:
- SFT:讓模型學會 “遵循指令”(如翻譯、問答);
- RLHF:讓模型學會 “按人類偏好輸出”(如拒絕回答違法問題,優先正確信息)。
RLHF 的兩階段實現流程
(1)獎勵模型(RM)訓練
- 模型功能:擬合人類偏好,為 LLM 的回復打分,本質是文本分類模型(LLM 架構 + 分類層)。
- 訓練數據:
- 格式:
{prompt: 問題, chosen: 優質回復, rejected: 劣質回復}
,如:
- 格式:
{"prompt": "偷東西選什么時間?","chosen": "這是違法行為,不能建議","rejected": "分析夜間盜竊優勢..."
}
核心邏輯:通過對比chosen
和rejected
的優劣,訓練 RM 最大化兩者的獎勵分數差異。
RM 規模通常小于 LLM(如 OpenAI 用 6B RM 優化 175B LLM);
避免直接使用標量獎勵(易受標注者主觀影響),采用排序對比訓練。
(2)PPO 算法優化
- 算法框架:
- 四模型結構:
- Actor Model(待更新)、Ref Model(固定參數,防止能力退化);
- Reward Model(打分)、Critic Model(計算累積獎勵)。
- 訓練流程:
- Actor 與 Ref 對同一 prompt 生成回復;
- 計算兩者 KL 散度(約束更新幅度);
- RM 對 Actor 回復打分,Critic 計算累積獎勵;
- 結合 KL 散度和獎勵值構建損失函數,更新 Actor 和 Critic 參數。
- 四模型結構:
- 獎勵函數:
獎勵 = γ?×KL散度 + γ?×Reward Model打分 + γ?×Critic累積獎勵
(γ 為權重參數,平衡模型穩定性與偏好對齊)。
RLHF 的挑戰與替代方案
- 資源消耗:
- 顯存占用高(如 7B 模型需 4 張 80G A100),訓練成本遠超 SFT。
- 技術替代:
- DPO(直接偏好優化):
- 核心思路:將 RLHF 轉化為監督學習,無需訓練 RM 和復雜強化學習流程;
- 優勢:僅需 2 個 LLM,訓練門檻低,效果可平替 PPO(通過數學推導證明偏好學習可行性)。
- DPO(直接偏好優化):
RLHF 的價值與意義
- 對齊人類價值觀:通過拒絕有害內容、糾正錯誤信息,提升 LLM 的實用性和安全性(如醫療、金融場景)。
- 避免能力退化:Ref Model 和 KL 散度約束確保模型在對齊偏好時不丟失預訓練能力。
RLHF 與 LLM 能力的關系
- 涌現能力的進一步激發:RLHF 不增加模型知識,而是通過偏好篩選強化 “有用能力”(如優先正確推理,而非流暢生成錯誤內容)。
- 應用落地的關鍵一步:使 LLM 從 “技術原型” 變為 “可用工具”(如 ChatGPT 的高熱度源于 RLHF 后的用戶體驗優化)。