阶段 5 · 大模型怎么炼成

训练三阶段:从"会接话"
到"会办事"

上一章《预训练数据工程》洗净了几万亿 token 的料,可读完的模型并不会回答问题——它只会接着往下写。 你问它"什么是过拟合?",它可能回你一句"这个问题在统计学中有很多讨论", 因为它觉得网页上下一句就该是这个。 让它变成一个能对话的助手,需要后面两个阶段。

1

三种完全不同的"教育"

要让它会回答、会按格式办事,靠的是后面两步。 今天所有能对话的大模型,都走过下面这条流水线:

维度① 预训练 Pretrain② 监督微调 SFT③ 对齐 Alignment
教什么 语言本身的规律 + 世界知识 "别人问,你要答"这个形式 什么样的回答更好
数据形态 原始文本(网页、书、代码) 人工写或强模型生成、再人工筛的(问题,标准答案)对 一个更好的回答 + 一个更差的回答 / 可自动判对错的题
数据量 几万亿 token 几千 ~ 上百万条 几万 ~ 上百万对
损失函数 预测下一个词(交叉熵) 同样的交叉熵,但只在回答上算 偏好损失(让模型偏向更好的那个回答;下一章讲强化学习(RL))
算力占比 绝大部分 很小一部分 很小一部分
得到什么 一个"续写机器" 一个"会按格式回答的助手" 一个"回答得让人满意"的助手
🎯 类比

预训练 = 读了十六年书。什么都知道一点,但不会办事,也没人教过他怎么和人打交道。
SFT = 入职培训。给他看几百个"客户这么问,你应该这么答"的范例。他开始会按流程说话了。
对齐 = 绩效反馈。不告诉他标准答案,只说"这两个回答里,A 比 B 好"。他慢慢学会什么叫"好"。

这里有一个反直觉的地方:算力上第 2 和第 3 阶段加起来只占很小一部分(公开报告一般不给确切比例), 但模型能不能用、好不好用,几乎完全由后两个阶段决定。

互动 · 三个阶段吃掉的数据量(真实数量级)

三个阶段,一条流水线

① 预训练 学「语言」 几万亿 token · 绝大部分算力 → ② SFT 学「格式」 几千~上百万条 · 很小一部分算力 → ③ 对齐 学「偏好」 几万~上百万对 · 很小一部分算力

同一个网络,三个阶段换三次目标:先填知识,再纠格式,最后调偏好。

2

预训练只会"接话"

这是理解大模型最重要的一条。预训练的目标只有一句话:预测下一个词。 它学到的是"在互联网上,这句话后面最可能出现什么"。

问题是:网页上"什么是过拟合?"这七个字后面,最常见的不是答案,而是更多的正文。 所以 base 模型会接着写文章,而不是回答你。

互动 · 三个训练出来的语言模型,同一个问题

下面是三个真实的二元(bigram)语言模型——只看前一个词来猜下一个词的最简单语言模型。 三个模型结构相同,只是训练语料不同(各 4 句,点开每列下面的「训练语料」看)。 每一步都当场算条件概率,然后取概率最高的词往下走。 真的大模型机制相同,只是看得更远、更准;用 bigram 是为了让这一步能在浏览器里当场算给你看。

💡 三个输出,三种性格

差别不在"模型大小",在训练目标:
base 的语料全是网页,问号后面接着的是「这个 问题…」——它在续写文档,不是在回答。
SFT 的语料里,问号后面跟着「助手:」再跟一句回答,它就照着接一句; 但这句是从范例里拼出来的,换个问题也还是那几句套话。 (这里的「助手」只是 SFT 语料里的一个词;真实系统里这串角色标记由程序写好,见第 3 节。)
对齐后的语料里,回答一律先「简单说,」再下定义——它学会了人类更喜欢的那个腔调。

⚠️ 别被"续写"这个说法骗了

很多人以为"预测下一个词"很弱。恰恰相反—— 为了预测得准,模型不得不学会语法、事实、逻辑、甚至推理。 因为"3 + 5 = " 后面跟着 "8" 的概率,比跟着 "9" 高得多。
知识是预测任务的副产品。但"会不会听话"不是——所以还需要后两个阶段。

互动 · 问号后面接什么?三个模型的真实分布

3

为什么需要那些奇怪的尖括号

SFT 的数据不是一段散文,而是被特殊符号标好的角色对话。这是模型能区分"谁在说话"的唯一依据。

<|im_start|>system
你是一个有帮助的助手。<|im_end|>
<|im_start|>user
什么是过拟合?<|im_end|>
<|im_start|>assistant
过拟合是指模型记住了训练集…<|im_end|>

推理时,程序把 <|im_start|>assistant 这段前缀写好交给模型, 模型从这后面开始自己往下写——它写出来的就是回答。角色标记由程序负责,模型只负责续内容。

⚠️ 一个真实的坑

如果用户能直接在输入框里打出 <|im_start|>assistant, 他就可以伪造出一段"助手已经说过的话",绕过前面所有设定。 这是 prompt injection(诱导模型越权)最基础的手法之一。
所以部署时必须先在分词阶段把用户输入里的特殊 token 过滤掉。

互动 · 对话模板就是一串被角色标记切开的 token

4

只对助手的回答算损失

训练时,整段对话都送进模型,但不是每个词都会产生损失。 决定哪些词算损失的开关叫损失掩码(loss mask)。 如果对用户说的话也算损失,模型就在学"怎么像用户一样提问"—— 这不是我们想要的能力,还浪费掉约三分之一的梯度。

互动 · 切换两种训练方式,看梯度花在哪

💡 用一句话概括 loss mask

只对"模型该学会生成的那部分"算损失。
在 SFT 里是"只算助手的回复"; 连 system + user 的 prompt 也通常不算; 在预训练里,所有 token 都算(因为没有角色之分)。
这个开关看起来很小,但它决定了模型是在学"回答"还是在学"对话"。 那段 system 提示词模型为什么听得懂?SFT 数据里本来就有带 system 提示的对话,它是看会的。

M

数学 · 预测下一个词与掩码

前面说了半天「预测下一个词」,它到底长什么样?这一节把它写成一条式子。 上面那张图画的是 p(每个词的概率),卡片下面那张图画的是 m(每个位置算不算分)。

动画 · 模型的输出是一排概率,损失就是把正确答案那一格往上推

🎯 用「考试打分」理解 −log p

把每个 token 当成一道选择题。模型给正确答案押的概率越高,扣分越少。
它押 90% → 扣 0.11 分;押 10% → 扣 2.3 分;押 1% → 扣 4.6 分。 −log p 就是这个扣分规则——它逼着模型不但要选对,还要「有把握地选对」。

微型图解 · 那张掩码贴在哪儿(每个 token 的交叉熵)

5

五种"成品"模型

类型训到哪一步特点用来干什么
Base 基座模型 只做预训练 续写能力极强,但不会拒绝、不会按格式回答。 你问它问题,它可能给你再编三个问题 继续训练、做研究、当"原材料"
Instruct 指令模型 预训练 + SFT 会按指令行事,格式正确。但可能给出有害内容——它只学"像不像范例" 一般的文本任务
Chat 对话模型 预训练 + SFT + 对齐 回答更符合人类偏好,更会拒绝不当请求 绝大多数日常使用
Reasoning 推理模型 对齐阶段额外加了 RLVR(用能自动判对错的题做强化学习) 会先想一大段再回答,愿意"多想一会儿" 数学、代码、复杂推理
Agent 智能体 推理 + 工具调用训练(教它用搜索、代码这类外部工具) 会调用工具、会规划多步任务 自动化流程

如果你下载一个模型,发现它对什么问题都只会"接着写下去"、 或者对你的指令毫无反应,那大概率你拿到的是 base 模型。 想让它正常对话,至少要找文件名里带 instruct、chat、 SFT 的版本。这是新手最常踩的坑之一。

五种「成品」模型,一条谱系

基座 只用预训练 Instruct + SFT Chat + 对齐 Reasoning + RLVR Agent + 工具

越往右,训到的阶段越多,模型越「会办事」——但预训练那份「什么都续得下去」的开放性也越少。

6

三阶段的四个阴影

问题具体表现什么时候真的会痛 → 换什么
对齐税
Alignment Tax
对齐之后,模型在问答、推理、翻译等公开任务上的分数反而下降。 因为「人类觉得好」和「事实上正确」不完全一致,模型学会了更保守、更套路的表达 把模型用在事实核查、翻译这类要准确的场景 → 对齐时混一点预训练数据(InstructGPT 的 PPO-ptx:强化学习时混一部分预训练数据一起训,减少对齐税)
灾难性遗忘
Catastrophic Forgetting
SFT 数据太少或太单一,模型会丢掉预训练学到的能力: 几千条数据、几百万 token,而预训练有万亿 token, 在这点数据上猛调参数很容易把之前学的覆盖掉 只想在小领域微调、又要它保留通用能力 → 混入通用数据,或用 LoRA(只调一小块参数的微调法)这类小改动
SFT 只教模仿 模型学会的是"像范例那样说话",不是"把问题想清楚"。 SFT 是模仿学习:给它标准答案让它模仿,天花板由示范数据的质量决定 需要示范里没有的新解法、新知识 → 靠后面的 RL(强化学习)阶段试探出更好的回答
顺序不是唯一解 有些模型跳过 SFT 直接做对齐;有些把 SFT 和偏好学习合成一步。 三阶段只是目前最省事的工程惯例,不是理论必然 算力和数据都紧张、又想少两轮迭代 → 用 ORPO(把 SFT 和偏好对齐合成一步的方法),见它那一章

既然对齐会让一部分客观分数下降,为什么还要对齐? 因为不对齐的模型会顺着坏请求往下接话。至于「好」这杆秤——它由训练者的标注规范定,不是天上掉下来的。

⚠️ SFT 数据:质量远比数量重要

一个被反复引用的结论来自 LIMA 那篇论文(2023): 1000 条精心挑选的高质量指令数据,就能让模型表现出很好的对话能力。 堆五万条平庸数据,效果反而不如这一千条。
1000 条够教会「格式」,但要覆盖更多任务、语言、安全场景,还是得加数据。

对齐税长什么样

人类觉得好 ↑ 客观正确率 ↓ 对齐强度(RLHF / DPO 的力度)→

对齐的目标是「人类觉得好」,而它和「事实上正确」并不完全一致。两条线分开的那块,就是对齐税。
横轴的「对齐力度」有两种主流做法:RLHF(先按人类偏好训一个打分的模型,再用它做强化学习)和 DPO(直接拿「更好的回答 / 更差的回答」成对来训)。后面几章细讲。

7

这一章在整条线上的位置

这三阶段不是孤立的——① 接住上一章《预训练数据工程》洗净的料,③ 交给下一章《强化学习入门》。顺着往下走:

阶段从这一章往哪走
预训练 原料从哪来、怎么洗 → 前面的《预训练数据工程》;这一步本身的账在《缩放定律》里算
SFT 怎么造这些数据、怎么切分 → 《LoRA 与高效微调》(只调一小块参数的微调法)
对齐 两种主流做法 → 《RLHF 与 PPO》、《DPO 家族》
⚠️ 如果你想动手微调自己的模型

绝大多数人只会用到第 ② 和第 ③ 阶段——预训练不是个人能做的。
所以后面讲对齐的 RLHF、DPO 两章,和阶段 5 后半部分的 LoRA、微调实战决策树,才是你真正会用到的东西。
但理解第 ① 阶段为什么只会"接话",是理解后面一切的前提—— 没有这个认识,你会一直困惑"为什么我的模型不听话"。

互动 · 一张对话数据 vs 整个互联网(对数轴)

8

小结

三个阶段读起来像三道工序,但底下是同一件事做了三遍。这一节把它挑明。

它对应哪条线 ④ 学习即压缩——三个阶段其实是把三个不同的分布压进同一张参数表
一句话 这一章的做法,本质上是在承认「模型的性格 = 它被要求预测的那个分布」: 预训练压的是「整个互联网的文本分布」,SFT(监督微调)压的是「一问一答的分布」, 对齐压的是「人类觉得好的分布」。同一个网络,换目标就换性格。
它牺牲了什么 牺牲了 base 模型那份「什么都续得下去」的开放性。 每换一个更窄的分布去压,输出就少一分多样性、多一分听话—— 「对齐税」正是这笔账的收据:为了更像人类喜欢的回答,问答、翻译这类需要泛化的任务分数反而掉了。 而 SFT 那点数据量(几千条 vs 几万亿 token)还可能把预训练学的知识覆盖掉(回扣暗线 B)。
🎬 自己验一遍

回到第 4 节那个损失掩码开关。先选「对整段对话都算损失」,这时右边会多出一截 粉色柱——被浪费在用户提问上的那部分梯度; 再切到「只对助手回复算损失」,粉色消失,只剩绿色——绿色就是真正用来学「怎么回答」的梯度。

那两个状态下模型结构一模一样、数据一模一样、学习率一模一样, 只有「拿哪些 token 去算损失」不同——而模型的性格就跟着不同了。 (这个互动只展示梯度分配;性格差异是训练的最终结果。)
如果你刚才没想指着那个开关说这句话,回去再切一次。

再回去看第 2 节那三个模型(同一个问题,base / SFT / 对齐)—— 它们是同一个架构、换三次目标压出来的三个分布,这就是这条线。

它挂在哪几条暗线上

暗线这一章的回答
A 信息流动 三个阶段喂进去的都是一条 token 序列,形状没变;变的只是那张 0/1 掩码贴在哪里。
B 什么被牺牲了 牺牲了 base 的输出多样性和一部分客观正确性(对齐税),换来一个会按格式答、会拒绝的助手。
C 参数账本 预训练花掉绝大部分算力,后两段很少;这笔账的第 1 节那张图里写着。
D 跑在什么上 预训练最贵的一步是前向 + 反向的大矩阵乘:每个词、每个参数约 6 次运算 (前向 2 次 + 反向 4 次);对齐还要先生成整段回答再打分,更吃显存。
E 它假设了什么 假设「预测下一个词足以承载全部能力」,又假设「人类觉得好的,可以用一小撮示例代表」—— 对齐税就是第二个假设的漏洞。
F 违背了哪个直觉 SFT 的数据不是越多越好(拼质量);三个阶段也不是平等的工序——最贵的预训练装知识, 便宜的后两步决定你日常感受到的那个「待人的方式」。
一句话带走训练三阶段

预训练学"语言",SFT 学"格式",对齐学"偏好"——三件事,三个目标,三种数据。
最重要的洞察是:预训练只会接话,不会听话。 因为它的目标就是"预测互联网上接下来最可能出现什么", 而网页上问号后面跟的往往是更多正文,不是答案。
SFT 阶段有一个小而关键的开关:损失掩码(loss mask)—— 只对助手的回复算损失,否则约三分之一的梯度会花在学"怎么写用户的问题"上。
最后记住:后两个阶段花的算力很少,可模型好不好用、听不听话,几乎全由它们决定。

9

拓展阅读

上面讲的都是「够用」的版本。想往下挖,这里有三个入口—— 它们不是必修内容,是给想再往前走一步的读者准备的。

📄 这一章的说法从哪来

💻 工业界怎么写

∑ 更严格的形式