训练管线全景:pretrain → SFT → RLHF / DPO 每一步在塞什么
AI 系列第 9 篇。这一篇把 ChatGPT 是怎么"训出来"的完整管线拆开讲——你会发现每一步都在塞不同的东西进模型,少一步它就不会聊天。
0. ChatGPT 不是一次训出来的
很多人以为大模型就是"喂海量文本,自动学会一切"。这是一个严重的误解。
实际上,把一个原始的 GPT-3 变成 ChatGPT 这种好用的产品,至少要经历 4 个阶段:
┌────────────────────────────────────────────────────────┐
│ Stage 1: Pretrain 塞进"世界知识" │
│ Stage 2: SFT 塞进"指令格式" │
│ Stage 3: Reward Model 塞进"人类偏好" │
│ Stage 4: RL (PPO/DPO) 塞进"行为优化" │
└────────────────────────────────────────────────────────┘
少一步,模型就是个不同的物种:
- 只做 Stage 1 = GPT-3(强,但不会聊天)
- 做到 Stage 2 = 还行的指令模型
- 做到 Stage 3-4 = ChatGPT、Claude 这种产品级助手
这一篇把每一步讲清楚。
1. Stage 1:Pretrain(预训练)——塞进"世界知识"
目标:让模型掌握语言的统计结构 + 海量世界知识。
任务:next-token prediction。给一段文本,预测下一个 token。
"今天天气真" → 模型预测下一个 token: "好" (95%) / "差" (3%) / 其他 (2%)
数据:万亿级 token 的网页 + 书 + 代码 + 论文 + 对话记录。
算力:上千 GPU 跑几个月。GPT-4 大概 25000 块 A100 跑 3-4 个月。
Pretrain 之后模型会什么?
- ✅ 知识渊博(能"记住"大量事实)
- ✅ 语言流畅(能写出语法正确的文本)
- ✅ 多语言(如果数据里有)
- ✅ 写代码(如果代码数据足够)
但它不会:
- ❌ 听指令("请帮我总结这段话" → 它会续写"请帮我总结这段话。请帮我...")
- ❌ 拒绝不当请求
- ❌ 保持对话格式
- ❌ 知道自己是 AI
Pretrain 出来的模型是个"知识猛兽",但不是"助手"。它只会续写,不会"对话"。
2. Stage 2:SFT(Supervised Fine-Tuning)——教它"听话"
目标:让模型学会"用户问 → 助手答"的格式。
任务:在精心写好的 "指令-回答" 对子上做监督学习。
用户: "请用三句话总结相对论。"
助手: "相对论是爱因斯坦在 1905-1915 年提出的物理理论。它包含狭义和广义两部分,分别处理高速运动和重力。它颠覆了牛顿力学对时空的理解。"
用户: "把这段代码改成 Python。"
助手: "..."
数据:通常 1万 – 10万 条人工标注的高质量例子。
算力:相对小,几天就能跑完。
SFT 之后模型会什么?
你: "请帮我写一首关于春天的诗。"
SFT 后模型: "[春天来了,万物复苏,..."] ◀── 直接给诗,不再续写指令
模型学会了:
- 指令 → 回答的格式
- 用礼貌语言开头
- 不胡说(学会了"我不知道"这种回答)
但还有个大问题——SFT 模型只学了"模仿",没学"判断好坏"。如果训练数据里某种风格更多,它就会偏向那种风格;遇到模糊问题("这个回答 vs 那个回答哪个更好")它不知道。
要让模型有"判断力",需要下一步。
3. Stage 3:Reward Model(奖励模型)——把"人类偏好"训成一个打分函数
目标:让 AI 学会"什么样的回答会被人类喜欢"。
任务:训一个独立的小模型,输入"指令 + 回答",输出一个分数。
数据怎么收集?
人类标注员看到:
指令: "帮我写一首关于春天的诗"
回答 A:
春风拂面暖
花开满枝头
...
回答 B:
春天来了 真好啊
花花草草都开了
我很开心
标注员排序:A > B(A 更有诗意)。
收集几万条这种排序数据,训一个奖励模型 RM,让它学会"对人类喜欢的回答给高分"。
为什么不直接打分?
历史上试过让人类直接打分(1-10)。结果发现:
- 不同标注员尺度不一致(A 打 7 分,B 打 5 分)
- 同一标注员前后矛盾
- 数据噪声大
而两两比较(A vs B 哪个好)的可靠性高很多。这是行为经济学的经典发现——人类擅长比较,不擅长绝对评分。
一句你可以拿去吹的话: 奖励模型是大模型时代最有趣的发明之一——它把"人类的审美"训成了一个可计算的函数。
4. Stage 4:RLHF(强化学习人类反馈)——把模型"调教"到 RM 偏好上
目标:让 SFT 模型生成的回答,被 RM 打高分。
任务:用 PPO(Proximal Policy Optimization) 算法做强化学习。
工作流程
loop:
1. SFT 模型对一个 prompt 生成回答
2. RM 给这个回答打分
3. 用 PPO 更新 SFT 模型: 让"高分回答"的概率提升,"低分回答"的概率降低
4. 同时加 KL penalty: 别离原 SFT 模型太远(防止崩坏)
经过 RLHF,模型的回答质量会明显提升——但是是沿着 RM 定义的方向提升。
RLHF 的几个微妙之处
微妙 1:Reward hacking(奖励黑客)
模型很聪明。如果 RM 喜欢长回答,它就会写得越来越啰嗦。如果 RM 喜欢肯定句,它就会避免说"不知道"。这就是 reward hacking——模型学会的不是"做得更好",而是"骗过 RM"。
微妙 2:Alignment tax(对齐税)
RLHF 会让模型在标准评测上略微变差。例如 InstructGPT 在 GPT-3 的某些 benchmark 上反而退步了几个百分点。这是"被驯化"的代价——为了听话,它牺牲了一些原始能力。
微妙 3:RLHF 极难调
PPO 的超参数有十几个,稍微调错训练就崩。OpenAI / Anthropic 内部有专门的 RL 团队,行业内能稳定跑 RLHF 的团队不超过 50 个。
5. 2023+ 简化路线:RLAIF & DPO
RLHF 又贵又难调。2023 之后行业开始找简化路线。
RLAIF(RL from AI Feedback)
把人类标注员换成 AI。Anthropic 的 Constitutional AI 就是这路——
1. 准备一份"宪法"(写明 AI 应该遵守的原则)。
2. 让 AI 自己根据宪法给自己的回答打分。
3. 用 AI 自评的分数训 RM。
4. 之后流程和 RLHF 一样。
成本骤降。但有个隐忧:AI 评 AI 容易陷入回声室——一个 AI 认可的风格,未必是真正人类喜欢的。
DPO(Direct Preference Optimization)——2023 年最重要的简化
2023 年 5 月,Stanford 团队提出 DPO。它的核心洞察:
"RLHF 有 RM 和 PPO 两步。其实可以合并成一步——直接用偏好数据微调模型,不要 RM 也不要 PPO。"
DPO 的数学推导很巧——它证明了"训 RM + PPO 微调"在某种近似下等价于一个直接的 loss 函数:
loss = -log(sigmoid(β × log(π(y_w | x) / π_ref(y_w | x))
- β × log(π(y_l | x) / π_ref(y_l | x))))
y_w: 人类选中的回答
y_l: 人类没选的回答
π: 当前模型
π_ref: SFT 模型(参考)
不用真训 RM,不用搞 PPO 强化学习。就是个普通的监督训练,加了一个对比 loss。
简单、稳定、效果接近 RLHF。Llama-3、Mistral、Qwen 后期都用 DPO。
现在主流配方(2026)
Stage 1: Pretrain
Stage 2: SFT
Stage 3: DPO(或 RLHF,看团队偏好)
Stage 4: (可选) RL for reasoning(o1 那种)
PPO 现在主要用在"训练 reasoning 模型"那条路上(第 22 篇会讲)。日常的对齐工作 DPO 占主流。
一句你可以拿去吹的话: DPO 把 RLHF 从"博士论文级工程"简化成了"研究生作业级工程"。这是开源生态能追上闭源前沿的关键技术之一。
6. 把整个管线串起来
原始网页/书/代码(数万亿 token)
│
▼ Stage 1: Pretrain(几个月,几千万 $)
原始 LLM(知识渊博,但不会聊天)
│
▼ Stage 2: SFT(几天,10 万条人工数据)
指令模型(会听话,但风格平庸)
│
▼ Stage 3-4: RLHF 或 DPO(几天,几万条偏好数据)
对齐模型(ChatGPT、Claude 这种)
│
▼ Stage 5 可选: RL for reasoning(几周,海量自生成数据)
推理模型(o1、Claude with thinking 这种)
每一步塞进去的东西:
| 阶段 | 数据来源 | 塞进的是 | 大概代价 |
|---|---|---|---|
| Pretrain | 互联网 | 世界知识 + 语言能力 | 99% 的总成本 |
| SFT | 人工标注 | 指令格式 + 基础风格 | 0.1% |
| RM | 人工排序 | 人类审美 | 0.1% |
| RLHF/DPO | RM/偏好数据 | 行为对齐 | 0.5% |
| RL reasoning | 自生成 | 推理能力 | 0.3% (但持续增长) |
注意:预训练吃了 99% 的钱,但决定模型 80% 性格的是后面几步。这就是为什么开源圈能用很少的预算做出不错的对齐——只要拿到一个好的预训练模型作底子。
7. 给你的小作业
- 预训练模型 vs SFT 模型 vs RLHF 模型,给同一个问题会有什么不同回答? 举一个具体例子。
- 解释 reward hacking。给一个你能想到的例子。
- DPO 和 RLHF 数学上几乎等价,但工程上简单很多。这告诉你一个工程哲学的什么道理?
下一篇钩子:到这里我们看了模型架构、scaling、训练管线。 下一篇钻进模型眼里的世界—— 一个看似简单的问题:模型读到 "strawberry" 这个词时,它看到的是字符 'r','y','b','e','r','r','a','w','t','s' 吗? 不。它看到的是几个token。 这是为什么 LLM 偶尔会数错字母数量。下一篇我们讲 tokenizer 和 context window——大模型最被忽视的两个基础设施。