📑 本页目录(点开跳转)
04 · 训练三阶段:预训练 → SFT → 对齐
⏱ 32 分钟 | ⭐⭐ 理解「模型为什么是这个脾气」的关键
🎯 一句话
一个能聊天的模型,是三步造出来的:先学会说话(预训练)、再学会回答(SFT)、最后学会说人爱听的话(对齐)。每一步塑造它的一部分性格。
🏭 三阶段全景
三个阶段依次进行,前一阶段的产出就是后一阶段的输入。注意右边那栏算力占比——差距大到离谱。
- 数据:几十万亿 token 的互联网文本、代码、书籍
- 目标:猜下一个词(自回归)
- 产出:Base Model —— 有知识、有语感,但不会当助手
- 成本:几百万 ~ 上亿美元,几千张 GPU 跑几个月
它可能答:「上海在哪?广州在哪?」← 它在续写题目列表!
- 数据:几万 ~ 几十万条 高质量「指令 → 回答」对(人工 / 合成)
- 目标:还是猜下一个词,但只在「回答」部分算损失
- 产出:Instruct Model —— 会回答问题了
- 数据:人类偏好对(同一问题的两个回答,哪个更好)
- 目标:让输出更有用、更诚实、更无害
- 产出:你实际用到的那个模型
- 方法:RLHF / DPO / GRPO ...(下面展开)
🧠 阶段一:预训练与 Scaling Law
数据是真正的护城河
配比大致长这样(各家不同,且是核心机密):
网页(清洗后) ████████████████ 50%
代码 ████████ 20% ← 代码能提升推理能力!
书籍/论文 ██████ 15%
多语言 ████ 10%
高质量精选 ██ 5% ← 后期"退火"阶段加大比例
关键工序:去重(重复数据严重伤害效果)、质量过滤、去污染(把评测集从训练数据里剔掉)。
Scaling Law
模型效果随「参数量 × 数据量 × 算力」呈幂律提升,且可预测。
Chinchilla 结论(重要的实践指导):早期模型普遍参数堆太大、数据喂太少。最优配比大约是 每个参数配 20 个 token。
🔗 做过推荐的话:生成式推荐第一次展示 Scaling Law 就是在借鉴这里。同一个概念,两个领域。
⚠️ 但现在的实践已经偏离 Chinchilla:为了推理成本(模型要被用亿万次),大家倾向于「小模型 + 喂超量数据」——训练时多花点,换推理时永久省钱。
🧠 阶段二:SFT
做的事:给它看几万条「好助手是怎么回答的」范例。
训练样本长这样:
- [助手] 尊敬的领导:……
两个反直觉的经验:
- 质量 >> 数量。1000 条精心打磨的样本,效果可能超过 10 万条粗糙样本(LIMA 论文的著名结论)。
- SFT 教不会新知识。你想让它懂公司业务,SFT 效果有限且容易产生幻觉——该用 RAG(第 8 章)。
💡 「SFT 教格式不教知识」的一个精确说法
预训练:几十万亿 token ← 知识在这里
SFT: 几万~几十万条 ← 差了【六个数量级】
⭐ 你没法用百万分之一的数据,去改变模型已经学到的知识
但你可以用它改变【模型选择怎么表达】
类比:
一个博览群书的人 → 预训练
教他"面试时该怎么答话" → SFT ← 一天就能教会
教他"一门新学科" → 不可能一天教会
⚠️ 一个真实的后果:如果你 SFT 时硬塞新知识, 模型学到的往往不是那个知识,而是「用自信的语气说这类事情」—— 幻觉反而更严重了,因为它现在会理直气壮地编。
🔗 这从另一个角度印证了第 5 章的结论: 知识用 RAG,格式和风格用微调。
🧠 阶段三:对齐(这一步塑造「性格」)
为什么需要它
SFT 后的模型会回答了,但:答得啰嗦 / 该拒绝时不拒绝 / 编造得理直气壮。 问题在于:「好回答」很难写成标准答案,但人类很容易判断「A 和 B 哪个更好」。 对齐就利用这一点。
三代方法
① RLHF(经典,ChatGPT 用它成名)
├ 收集人类偏好对:同一问题两个回答,标注哪个更好
├ 训练一个"奖励模型"学会给回答打分
└ 用强化学习(PPO)优化语言模型去最大化奖励
✅ 效果好 ❌ 三个模型同时跑,复杂、不稳、贵
② DPO(直接偏好优化,2023)⭐ 现在的主流
└ 数学上证明:可以跳过奖励模型,直接用偏好数据优化
✅ 简单得多、稳定、便宜 ❌ 对数据质量更敏感
③ GRPO 等(面向推理,2024+)
└ 同一问题采样多个答案,组内比较相对优劣
✅ 特别适合有客观对错的任务(数学、代码)
✅ 是"推理模型"(会长思考的那类)背后的关键技术之一
一个必须知道的副作用:对齐税
对齐会让模型在某些能力上变差(更保守、更啰嗦、创造力下降)。 这是「有用」和「无害」的真实张力,不是 bug。 也解释了为什么有人觉得「Base 模型某些任务反而更好用」。
宪法 AI / RLAIF
用一套明文原则("宪法")让 AI 来做偏好标注,替代大量人工。 好处:可扩展、原则透明可审计。这是 Anthropic 的代表性方法。
🧭 一张表:三阶段各塑造了模型的什么
| 你观察到的行为 | 来自哪个阶段 | 能不能靠提示词改 |
|---|---|---|
| 知道某个事实 / 不知道 | 预训练 | ❌ 改不了(只能 RAG 补) |
| 会写代码 / 会推理 | 预训练(代码数据占 20%) | ❌ |
| 看到问题就回答(而不是续写) | SFT | 🟡 少量可调 |
| 输出的格式和结构 | SFT | ✅ 提示词很有效 |
| 语气、详略、要不要加免责声明 | 对齐 | ✅ 提示词可调 |
| 过度拒绝 / 谄媚 / 啰嗦 | 对齐 ⭐ | 🟡 部分可调 |
| 会长思考再回答 | 对齐(可验证奖励的 RL) | ❌ 是训出来的能力 |
🔑 这张表最实用的地方:当你想改变模型的某个行为时,先判断它来自哪一阶段。 - 来自对齐/SFT → 提示词大概率有效,先试提示词 - 来自预训练 → 提示词改不了,要么换模型、要么用 RAG/工具补
🔗 和你已知的关系
左列有的来自日常用 LLM 的经验,有的在站内别的板块讲过——碰上过哪几条就从哪几条接进来,一条没碰过也不影响读这一章。
| 你可能已经知道的 | 这一章的「为什么」 |
|---|---|
| 模型有时过度拒绝、很啰嗦 | 对齐税——安全和有用的张力 |
| 提示词说「允许说不知道」有效 | 对齐阶段专门训练过诚实性 |
| 生成式推荐的 Scaling Law(做过推荐的话) | 同一个概念,源头在这 |
| OneRec 用 DPO 做偏好对齐(同上) | 就是本章的 ② |
| 微调不如 RAG(第 1 章说的) | SFT 教格式不教知识 |
想接着深挖,去这几处:
| 去哪 | 为什么 |
|---|---|
| 强化学习 12 | 阶段三「对齐」的完整展开:奖励模型怎么训、PPO 那四个模型分别干什么 ⭐ |
| 强化学习 13 | 同一个目标的另一条路 —— 不训奖励模型、不跑 RL 也能对齐 |
| AI基础设施 11 | 预训练那一步在工程上长什么样:显存装不下时怎么切 |
📦 深挖的话要学什么
📍 每条后面标了它在哪: 📗 本库有 = 站内已经讲透,点进去就行;📙 半有 = 站内讲了一半,另一半得外找; 📕 要外找 = 站内没有,得去论文或别处。 (这份清单以前只列词不说去哪,指到的坑有些站内根本没挖过,按图索骥会扑空。)
- 数据工程:清洗、去重(MinHash/SemDedup)、质量分类器、配比实验、去污染 → 📙 半有:去重和去污染站内讲透了——数据这一关 06 · 重复与实体解析(MinHash 怎么算、阈值定多少)、数据这一关 13 · 评测集也是数据(⭐ 查污染不能看总分要看分组差:2% 污染率下总分只虚高 0.6pp,但"见过组 vs 没见过组"的差已经稳定在 27 个百分点)、数据这一关 04 · 脏数据的十种形态。但质量分类器和配比实验站内没有——本章那张 50/20/15/10/5 的配比图是结论,怎么做实验定出这个比例,要外找
- 训练工程:分布式并行(数据/张量/流水线/序列并行)、混合精度、梯度检查点、DeepSpeed/Megatron/FSDP → 📗 本库有,而且是整条链:AI基础设施 10 · 数据并行与AllReduce → 11 · ZeRO与FSDP → 12 · 张量并行 → 13 · 流水线并行 → 14 · 并行策略怎么组合(怎么把它们叠起来、怎么定全局 batch);混合精度在 06,梯度检查点在 09 · 显存优化全家桶。这是本章六项里"要外找"最少的一项——本章说"真做预训练需要大量算力",那一串章讲的正是那些算力怎么被组织起来
- Scaling Law:Chinchilla 推导、如何用小实验预测大模型效果 → 📙 半有:本章已经给了 Chinchilla 的结论(每参数配 20 token)以及现在为什么普遍偏离它(为推理成本换训练成本)。幂律形式的推导、以及"用一串小模型外推大模型效果"的实验做法,站内没有,要外找(Chinchilla 论文本身就是起点)
- 对齐算法:RLHF 完整流程(奖励模型 + PPO)、DPO 推导、GRPO/RLAIF、拒绝采样 → 📗 本库有,本章「三代方法」那 15 行就是它的缩写版:强化学习基础 12 · RLHF全流程(Bradley–Terry 损失、奖励模型三个失效来源里最本质的分布漂移、以及 GRPO 把 Critic 换成"同组同学的平均分"那笔显存账——7B 上 PPO ≈ 252GB → GRPO ≈ 140GB)、13 · DPO与免RL对齐(完整推导:带 KL 约束的目标有闭式解 → 反解出奖励 → 代入 Bradley–Terry 后配分函数 Z(x) 正好抵消;还讲了拒绝采样为什么该先试)。⚠️ 只有 RLAIF 的原则怎么写这一小块要外找
- 推理模型训练:如何用可验证奖励训出「会长思考」的模型 → 📗 本库有:强化学习基础 12 的 RLVR + GRPO 组合(DeepSeek-R1 正是这个搭配),以及⚠️那一章点出的代价——GRPO 对题目难度分布极敏感,题太简单或太难会出现大量"零梯度组",采样算力全打水漂。⭐ "会长思考"为什么是训出来的、而不是提示词能调出来的,答案就在这一条本身:RL 12 的 RLVR 一节写明这是近年推理模型训练的主流方向(跑 RLVR 的算法通常就是 GRPO),本导论 09 · 推理范式 的第 ⑥ 种范式也直接下了这个判断(「不是提示技巧,而是训练出来的能力」)。另外 强化学习基础 14 · RL在推荐与智能体里 给的是智能体训练实际在走的四条路线(RLVR / 过程监督 PRM / 拒绝采样-专家迭代 / 搜索+学习)——⭐ 它们的共同点是都在绕开"奖励模型不可靠"和"在线探索太贵"这两个问题
- 实操:用 TRL / OpenRLHF 跑一遍 SFT + DPO(小模型上单卡可做)
→ 📕 要外找:站内的 RLHF/DPO 内容全部停在算法层(推导、显存账、选型),没有一行可跑的训练脚本。要动手的话 TRL 官方的
DPOTrainer示例是最短路径
需要的前置:第 2 章 Transformer + PyTorch + 一点概率论。真做预训练需要大量算力,但 SFT/DPO 在小模型上单张消费级显卡就能玩。
⚖️ 要不要深挖
| 你的情况 | 建议 |
|---|---|
| 做应用、调 API | 🟡 本章够了。知道三阶段和对齐税就能解释大部分「模型脾气」 |
| 想理解模型行为的根因 | ✅ 值得——尤其对齐部分,它解释了太多日常困惑 |
| 有专有数据想做垂直模型 | ✅ 必须,但先读第 5 章微调(多数人需要的是 LoRA 不是从头训) |
| 想进模型团队 / 做研究 | ✅ 全套必须 |
| 想训练自己的基础模型 | ⛔ 现实点:这需要千万美元级投入,个人和中小团队不可行 |
🔑 我的判断:「对齐」这一小块的认知价值最高——它解释了模型为什么是这个脾气。 而「预训练工程」对绝大多数人是只需知道、不必掌握的(你不会去训基础模型)。 如果深挖这一章,建议重点放在 SFT + DPO 的实操,那部分单卡可做、立刻有用。
✅ 检查点
- 三个阶段各解决什么问题?算力占比大致如何?
- 为什么说「SFT 教格式不教知识」?用数量级说明。硬塞新知识会怎样?
- 想改变模型的某个行为时,第一步该判断什么?
- RLHF 和 DPO 的核心区别?为什么 DPO 成了主流?
- 什么是对齐税?它解释了什么日常现象?
- Chinchilla 结论是什么?为什么现在的实践偏离了它?
👀 答案
- 预训练学知识和语感(99%+ 算力);SFT 学助手行为格式(<1%);对齐学人类偏好(<1%)。
- 预训练几十万亿 token,SFT 只有几万~几十万条——差六个数量级。你没法用百万分之一的数据改变已学到的知识,只能改变表达方式。硬塞新知识的后果:模型学到的不是那个知识,而是「用自信的语气说这类事情」——幻觉反而更严重。
- 先判断这个行为来自哪一阶段。来自对齐/SFT(格式、语气、详略、过度拒绝)→ 提示词大概率有效;来自预训练(知识、推理能力)→ 提示词改不了,只能换模型或用 RAG/工具补。
- RLHF 要先训奖励模型再用 PPO 强化学习(三个模型同时跑,复杂不稳贵);DPO 数学上证明可以跳过奖励模型,直接用偏好数据优化。DPO 简单稳定便宜,所以成了主流。
- 对齐让模型更安全的同时在某些能力上变差(更保守、啰嗦、创造力降)。解释了过度拒绝、废话多、以及"Base 模型某些任务反而更好用"的现象。这是"有用"和"无害"的真实张力,不是 bug。
- 每个参数约配 20 个 token 是最优配比,早期模型参数太大数据太少。现在为省推理成本(模型要被用亿万次),倾向"小模型 + 超量数据"——训练时多花,推理时永久省。
🛑 可以停在这里
⚡ 走神救援
三阶段:预训练(99%算力,学续写,几千万美元,代码数据占20%能提升推理能力)→SFT(几万条指令对,教格式不教知识,质量>>数量)→对齐(偏好数据,RLHF→DPO主流(数学上跳过奖励模型)→GRPO面向推理)。⭐"教格式不教知识"的精确说法:预训练几十万亿token vs SFT几万条,差六个数量级——你没法用百万分之一的数据改变已学的知识;硬塞新知识的后果是模型学会"用自信的语气说这类事",幻觉反而更严重。⭐最实用的一张表:想改变某个行为,先判断它来自哪阶段——来自对齐/SFT(格式/语气/过度拒绝)提示词大概率有效;来自预训练(知识/推理能力)提示词改不了,只能换模型或用RAG补。Scaling Law/Chinchilla:每参数配20token,但现在为省推理成本倾向小模型喂超量数据。对齐税=安全换来能力下降,解释了过度拒绝和啰嗦,是真实张力不是bug。深挖建议只做SFT+DPO实操(单卡可玩),预训练工程只需知道。
下一节 👉 05-微调与LoRA.md