大模型的两段人生:预训练与后训练入门
更新日期:2026年7月10日
2026年7月10日
阅读指引:这篇教程写给刚接触大模型训练的人。你只需要知道:大模型是用来生成文本的,它把文本切成 token,token 又变成向量。我们不推导论文公式,也不要求你有 GPU。每一章从一个具体困惑出发,先建立直观模型,再看方法和真实案例。学完之后,你会说清”预训练”和”后训练”各自在做什么、为什么必须分两段、SFT/RLHF/DPO/GRPO 这些词到底指什么,并且在面对一堆模型名(base、instruct、chat)时知道该选哪个。
第1章 一个模型的两段人生 —— 为什么要分预训练和后训练
1.1 场景:你以为的”一个 ChatGPT”其实是两个模型
你天天和 ChatGPT 这类助手聊天,感觉它就是”一个聪明的东西”。问它问题,它回答;让它写代码,它写。看起来天衣无缝。
但如果你拿到一个刚刚训练好的、只完成第一阶段的模型,把它直接接到聊天框里,体验会非常奇怪:
- 你问:“中国的首都是哪里?”它可能回复:“……是美国最大的城市之一纽约的金融中心。”因为它根本没意识到你在”问”它,它只是顺着你的话往下续写。
- 你说:“请帮我写一封请假邮件。”它可能接着写:“请帮我写一份辞职报告。请帮我写一份……”反复续写你的句子,而不是给你邮件。
换句话说,这个”半成品”模型会说话、有知识,但不会做事、不会听话、不懂规矩。
现代助手的”聪明可用”,其实来自两段完全不同的训练:
- 第一段叫预训练(pre-training):在海量文本上”读万卷书”,学会语言、知识和常识。
- 第二段叫后训练(post-training):在人类示范和偏好上”学做事、学规矩”,变成会回答、会听话、有边界的助手。
把这两段搞混,是初学者最常犯的错——比如以为”后训练就是再多喂点数据”,或者以为”基座模型也能直接当助手用”。
1.2 两段训练,两种完全不同的任务
可以把两段训练想象成培养一个人:
| 维度 | 预训练 | 后训练 |
|---|---|---|
| 类比 | 读万卷书 | 学做事、学规矩 |
| 目标 | 学会语言、知识、世界规律 | 学会按指令做事、符合人类偏好 |
| 数据 | 万亿级 token 的原始文本 | 数万到数百万条示范/偏好对 |
| 信号 | “下一个词是什么”(自监督) | “怎么做更好/更对”(人类反馈) |
| 产物 | 基座模型(base model) | 指令/对话模型(instruct/chat) |
| 算力占比 | 绝大部分(千卡集群跑数月) | 小很多(但仍不便宜) |
图1.1:现代助手的训练像一条两段式流水线。第一段在海量文本上做”下一个 token 预测”,产出基座模型;第二段在人类示范与偏好上做对齐,产出能听指令的助手。两段的目标、数据和信号都不一样。
需要注意:两段不是”先做一个小模型再做大”,而是同一个模型先后经历两种训练。预训练把模型”喂大喂博”,后训练把它”调教好用”。
1.3 为什么不一步到位:成本、数据、目标错配
一个自然的疑问:为什么不直接用”听指令做事”这一种目标,一步把模型训完?三个原因让这件事不现实。
原因一:数据量级差太多。 预训练需要万亿级 token 才能让模型学到足够的语言和知识;而高质量的”指令-回答”示范数据,全世界能攒出来的量级要小好几个数量级。只用这么点数据从头训,模型连话都说不利索。
原因二:目标本身互相打架。 预训练的目标是”把人类写的文本续写得更像”——它学到的是统计规律;而后训练的目标是”做一个有用、诚实、无害的助手”——这要求模型拒绝、改写、反问,有时恰恰要违背”顺着往下写”的本能。两个目标混在一起从头训,模型很难同时学好。
原因三:算力成本天差地别。 预训练是整条流水线里最贵的环节,动辄千卡跑数月。一旦做完,这个”博学但不会做事”的基座模型就可以被同一个团队反复用——用不同的后训练配方,调出聊天助手、代码助手、医疗问答助手等不同产品。如果把对齐目标和预训练揉在一起,每做一个新产品都要重跑一遍天价预训练,谁也扛不住。
所以业界稳定下来的做法是:预训练做一次,做出基座模型;后训练做多次,做出不同用途的助手。
1.4 自检:分清两段训练
- 常见误区:把”后训练”理解成”再训练一遍”或”微调加点数据”。后训练改变的是模型行为(怎么回答、守不守规矩),主要不是给它”加知识”。
- 练习:用一句话向你奶奶解释,为什么 ChatGPT 不能只靠一段训练就做出来。
- 检查点:预训练和后训练,哪一段更像”上学读书”,哪一段更像”上岗培训”?为什么不能合并成一段?
第2章 预训练的目标 —— 下一个 token 预测
2.1 模型不”理解”,它在”猜下一个词”
预训练到底在让模型干什么?答案简单得让人意外:让它看一段文本的前面部分,猜下一个 token 是什么。
给定”今天天气很”,模型要猜下一个 token
大概率是”好”或”热”或”晴”。给定”床前明月光,疑是地上”,它要猜”霜”。给定
for i in range(,它要猜 n 或一个变量名。
这就是下一个 token 预测(next-token prediction),也叫语言建模目标。它是一种自监督学习:你不需要人工标注”这里的答案是霜”,文本本身就是答案——把任何一个句子的最后一个 token 拿掉,就自动得到一道练习题。
这个目标看似简单,但要在一万亿 token 上把”猜下一个词”练到极准,模型就被迫学会:语法、搭配、事实、常识、代码结构、甚至一点推理。知识不是单独塞进去的,它是”为了猜准下一个词”而被迫记住的副产品。
2.2 自回归:把自己写的接着读
预训练模型生成文本的方式叫自回归(autoregressive):每次只预测一个 token,然后把这个新 token 拼回输入里,再预测下一个,如此循环。
输入: 今天天气很
预测 token7: 好
新输入: 今天天气很好
预测 token8: ,
新输入: 今天天气很好,
预测 token9: 我们
...
图2.1:自回归生成像滚雪球——模型每预测一个 token,就把它接回上下文,再预测下一个。预训练阶段做的,就是让这个”猜下一个词”在万亿级文本上练到极准。
需要注意:模型每一步只看”已经写下的内容”来猜下一个词,它不会”提前想好整句再倒着写”。所以同一个模型,给同一个开头,每次生成的续写可能不同(尤其开了随机采样时)。
2.3 交叉熵:量化”猜得准不准”
模型每次预测,其实不是吐出一个词,而是对词表里每一个 token 算一个概率。比如面对”今天天气很”,它给出:
| 候选 token | 概率 |
|---|---|
| 好 | 0.55 |
| 热 | 0.20 |
| 冷 | 0.10 |
| 晴 | 0.05 |
| … | … |
训练时,真实文本里下一个 token 是”好”。我们希望模型把”好”的概率从 0.55 往 1.0 推。衡量”猜得准不准”的标准损失函数叫交叉熵损失(cross-entropy loss):模型给正确 token 的概率越高,损失越小;给错了且自信,损失就大。
整个预训练,就是在海量文本上反复做这件事——看到上下文,预测下一个 token,算交叉熵,用梯度更新参数——直到模型整体”猜得越来越准”。
2.4 为什么这么简单的目标能学到这么多
很多人第一次听到”预训练就是猜下一个词”会怀疑:这就能学出 ChatGPT 这种本事?
关键在于规模。当你只在几千句上练,模型顶多学会”好”常跟在”天气很”后面。但当语料达到万亿 token、参数达到几百亿到几千亿,“猜准下一个词”这个目标就要求模型建立对世界的内部表示:它必须”知道”地球绕太阳转、知道 Python 的缩进规则、知道”如果…那么…“的推理链条,才能在相关上下文里把下一个词猜对。
换句话说,目标没变,是规模让同样的目标逼出了质变。 这也是为什么预训练被称为”学语言、学知识、学世界规律”的阶段——尽管它技术上只是在最小化下一个 token 的交叉熵。
2.5 自检:预训练目标与知识来源
- 常见误区:以为预训练模型”理解”了文本。更准确的说法是:它在做极其复杂的概率预测,表现得像理解。
- 练习:把句子”猫坐在__上”里的空当成一道下一 token 预测题。想想模型为了猜准这个词,至少得”知道”哪些常识?
- 检查点:用一句话说清——预训练的目标函数是什么?为什么这个目标会让模型”被迫”学到知识?
第3章 预训练的数据与规模 —— 喂什么、喂多少、怎么配
3.1 数据从哪来:网页、书籍、代码、数学
预训练的数据决定了模型的”知识范围”和”性格底色”。主流预训练语料大致来自这几类:
| 数据类型 | 作用 | 代表来源 |
|---|---|---|
| 网页文本 | 体量最大,覆盖广 | Common Crawl 抓取的网页 |
| 书籍 / 长文 | 长程连贯、深度知识 | 电子书、长文档 |
| 代码 | 学编程、学推理结构 | GitHub 等代码仓库 |
| 数学 / 学术 | 提升推理与符号能力 | 论文、数学题库 |
| 对话数据 | 助手式表达底子 | 论坛、问答社区 |
一个关键事实:数据类型会塑造模型能力。 多喂代码和数学,模型在推理任务上往往更强;多喂长文,模型长上下文表现更好。这也是为什么不同团队的基座模型”画风”不同——不只是算法差异,更是数据配比差异。
3.2 质量比数量更难:去重、过滤、配比
初学者常以为预训练就是”把网上的东西全塞进去”。但海量原始网页里充满重复、乱码、广告、低质内容、甚至有害信息。直接喂,模型会被垃圾带坏。所以预训练数据要经过重处理:
- 去重:同一段文本在网上被复制千百遍,不去重会让模型”背”而不是”学”,还浪费算力。
- 过滤:去掉乱码、过短、垃圾站点、有害内容。
- 配比:决定网页、书籍、代码、数学各占多少。配比不是拍脑袋,近年研究开始用数据配比缩放律来预测”什么配比在什么下游任务上最好”,而不是纯靠试错。
图3.1:预训练数据是一层一层搭起来的——底层是海量去重过滤后的网页,上面叠书籍、代码、数学等高质量语料,再往上决定配比与课程顺序。规模不只是”多”,还要参数和数据量配着长。
3.3 Chinchilla:参数和数据要配着长
“模型越大越强”是直觉,但不全对。2022 年 DeepMind 的 Chinchilla 研究给了一条重要结论:在固定算力预算下,很多大模型其实是”喂得不够”的——它们参数很大,但训练 token 太少。
研究给出的量级建议是:要算力最优,每个参数大约要配 20 个 token 左右的训练量。也就是说,一个 70B 参数的模型,理想情况下要喂大约 1.4 万亿 token,而不是随便喂点就收工。
这条结论的影响很大:它让业界从”拼命堆参数”转向”数据和参数一起长”。后来的模型(Llama 系列、DeepSeek 等)普遍把预训练 token 量推到几万亿甚至更多,远超早期模型。
需要注意:20 token/参数是那篇研究在当时的量级结论,后续工作对精确配比有修正;但”数据要和参数配着长”这个方向性结论至今成立。
3.4 持续预训练:给老模型”补课”
还有一种介于”预训练”和”后训练”之间的做法叫持续预训练(continual pre-training):拿一个已经训好的基座模型,继续在大量新领域文本(比如医疗、法律、某公司内网文档)上做下一个 token 预测。
它的目的不是教模型”听话”,而是补充领域知识——让模型多见这个领域的术语和表达。所以持续预训练在目标和信号上其实属于”预训练家族”,只是发生在原版预训练之后。区分它的关键看目标函数:还在做”猜下一个词”,就是预训练系;改成”按指令做事”或”符合偏好”,就进了后训练系。
3.5 自检:数据配比与持续预训练
- 常见误区:以为预训练数据越多越好,不管质量。实际上去重和配比对效果的影响不亚于数据量。
- 练习:如果你要训一个”擅长写代码”的基座模型,你会让代码在数据里占多大比例?多喂代码可能牺牲什么能力?
- 检查点:Chinchilla 告诉我们”参数和数据量”应该是什么关系?持续预训练和后训练,靠什么区分?
第4章 基座模型的能力与边界
4.1 基座模型会做什么:续写,不是回答
预训练结束后,你拿到的是基座模型(base model)。理解它的关键一句话:它只会续写文本,不会”回答”问题。
给它”中国的首都”,它会续写”是北京”——但这不是因为它知道你在问它,而是因为”中国的首都是北京”是网上最常见的接法。给它”请问中国首都?“,它可能续写”请问日本首都?“——因为它把你的问句当成了要继续模仿的文本模式。
这导致一个有趣的现象:基座模型有时看起来像在回答,其实只是在续写。 当续写方向恰好和”回答”重合时,它显得很聪明;不重合时,它就显得很蠢。
4.2 涌现能力与少样本提示
基座模型有个有用玩法:少样本提示(few-shot prompting)。你在输入里先放几个例子,再给一个新问题,模型就顺着例子的模式续写。
翻译成英文:
猫 -> cat
狗 -> dog
鱼 ->
基座模型看到这种”几道例题 + 一道空题”的格式,会续写
fish,因为它学过”这种排布的文本后面该接什么”。这让它不用任何额外训练就能做翻译、分类、摘要等任务——只要你会”哄”它。
研究发现,基座模型在规模越过某个阈值后,会突然在某些任务上表现好很多,这种现象常被称为涌现能力(emergent abilities)。这也是为什么大基座模型即使没做后训练,也已经是很有价值的”原料”。
4.3 基座 / 指令 / 对话:三种模型该用哪个
你会在模型名后缀上看到 base、instruct、chat 这几个词。它们对应训练完成度不同的产品:
| 类型 | 训练完成度 | 擅长 | 适合场景 |
|---|---|---|---|
| base(基座) | 只完成预训练 | 续写、少样本提示 | 研究、自定义提示工程、再训练的原料 |
| instruct(指令) | 预训练 + 后训练(单轮指令) | 按单条指令做事 | 单轮任务:翻译、改写、抽取 |
| chat(对话) | 预训练 + 后训练(多轮对话) | 多轮聊天、上下文连贯 | 助手类产品、对话应用 |
图4.2:同一个基座模型,经过不同后训练,能变成不同产品。base 只会续写,instruct 学会按单条指令做事,chat 进一步学会多轮对话。三者背后是同一个”博学”的底子。
需要注意:base/instruct/chat 这三分法是业界实用约定,不是正式标准。不同厂商的命名和含义会有出入,但”续写 → 单轮指令 → 多轮对话”这个递进关系基本通用。
4.4 为什么不直接把基座模型交给用户
既然基座模型又博学又能少样本做事,为什么不直接上线?因为对普通用户它几乎不可用:
- 不可控:它把你的问题当文本续写,可能胡乱模仿、绕开问题。
- 不安全:它没学过什么不能说,问它有害问题它可能照着有害文本续写。
- 体验差:它不会说”我不确定”,不会追问澄清,不会拒绝。
这些恰恰是后训练要解决的。所以基座模型是原料,指令/对话模型才是成品。普通用户该用 instruct/chat;只有做研究、做再训练、或做精细提示工程的人,才直接碰 base。
4.5 自检:三种模型该用哪个
- 常见误区:以为 base 模型”更原始所以更强大/更不受限”。base 只是没有对齐,不代表它更强或更好用;在助手场景它通常更差。
- 练习:对同一个基座模型,分别用”直接问”和”少样本提示”两种方式让它做情感分类,观察差异。
- 检查点:base、instruct、chat 三种模型,分别处于训练的哪个阶段?普通用户该选哪种?
第5章 后训练要解决的问题 —— 从”会续写”到”会回答”
5.1 对齐问题:你想要的行为不在下一个 token 目标里
后训练要解决的核心问题有个专门的名字:对齐(alignment)——让模型的行为和人类真正想要的意图、价值观对齐。
为什么需要单独一道工序?因为”做一个好助手”这件事,根本不包含在”猜准下一个词”这个目标里。网上文本里,“猜准下一个词”经常意味着模仿喷子、复制错误信息、续写危险内容。模型为了最小化预训练损失,会忠实地学会这些模式。
但我们要的助手应该:该拒绝时拒绝、该承认不确定时承认、对用户有用但不谄媚、有边界但不僵硬。这些行为在网上文本里反而是少数,光靠预训练学不出来。
图5.1:同一个开头,基座模型按”续写”模式接着往下生成文本(可能跑偏、模仿、不收敛);后训练后的模型按”回答”模式直接给出对用户有用的答复。后训练要做的,就是把模型的默认模式从”续写”扭到”回答”。
5.2 3H:有用、诚实、无害
业界把对齐要追求的目标常概括为 3H:
- Helpful(有用):真正解决用户问题,不绕弯子、不空话。
- Honest(诚实):不胡编、能表达不确定、不假装知道。
- Harmless(无害):不输出危险、违法、有害内容,不被诱导做坏事。
3H 之间会打架:太追求”无害”会变成什么都不敢说(过度拒绝);太追求”有用”可能为了迎合而编造(谄媚/幻觉)。后训练的一大技术难点,就是在这三者之间找到平衡点,而不是把某一个推到极端。
5.3 后训练的三类信号:示范、偏好、规则
后训练用什么”教”模型?主要有三类信号,对应不同方法:
| 信号类型 | 形式 | 对应方法 | 教会模型什么 |
|---|---|---|---|
| 示范 | “这个问题,标准答案是这样” | SFT(监督微调) | 该怎么回答 |
| 偏好 | “A 回答比 B 好” | RLHF / DPO / GRPO | 怎么回答更好 |
| 规则 | “这些不能做” | 安全微调、红队、宪法式方法 | 边界在哪 |
这三类不是互斥,而是层层叠加:先靠示范让模型会做事,再靠偏好让它做得更好,再靠规则守住边界。后面三章会依次展开。
5.4 自检:对齐问题与三类信号
- 常见误区:以为”对齐就是不让它说脏话”。对齐包括有用和诚实,过度强调安全反而损害有用性。
- 练习:举一个”有用”和”无害”冲突的真实例子(比如用户问”如何快速入睡”和”如何制造……“的区别),想想模型该怎么取舍。
- 检查点:为什么”做一个好助手”这个目标没法靠预训练自然学出来?后训练的三类信号分别对应什么方法?
第6章 监督微调 SFT —— 用示范教会模型做事
6.1 指令微调的数据长什么样
后训练通常从监督微调(SFT,Supervised Fine-Tuning)开始,这一步也叫指令微调(instruction tuning)。它的数据形式很直接——成对的”指令-回答”:
{"instruction": "把下面句子翻译成英文:今天天气很好",
"output": "The weather is nice today."}
{"instruction": "判断这句话的情感:这部电影太棒了",
"output": "正面"}
训练方式和预训练一样,还是”看前面预测下一个 token”——但这里”前面”是用户指令,“要预测的”是高质量回答。也就是说,SFT 用的是同一个下一 token 目标,只是数据从”网上随便的文本”换成了”指令-回答这种结构化示范”。这就把模型从”续写一切”扭向”看到指令就好好回答”。
图6.1:SFT 把训练数据从”海量原始文本”换成”结构化的指令-回答对”。模型仍做下一 token 预测,但在这种新数据上反复练,就学会了”看到指令就按示范格式给出回答”这一行为模式。
6.2 从”按格式续写”学会”听指令”
一个微妙但关键的点:SFT 教会的不是”新知识”,而是新行为。
模型在预训练里已经”知道”北京是中国首都。SFT
做的事是让它学会:当输入是 "问:中国首都是哪?答:"
这种格式时,应该输出 "北京" 并停下,而不是继续模仿成
"问:日本首都是哪?答:"。
所以 SFT 的数据里,回答的格式、语气、该停就停的边界,比”塞新知识”更重要。这也是为什么高质量 SFT 数据往往要人工精心写——示范的”样子”会被模型学去。
6.3 少样本的魔力:示范泛化
SFT 数据不可能覆盖所有任务,但模型有个宝贵能力:示范泛化。给它几千条翻译示范,它不仅学会这几千对,还能翻译没见过的句子;给它一批”判断情感”的示范,它就理解了”情感分类”这件事的模式。
这意味着 SFT 不必为每个任务都攒海量数据——几万到几十万条覆盖多任务的高质量示范,往往就能让模型从”只会续写”变成”会按指令做很多事”。这种”少量示范、广泛泛化”的特性,正是指令微调性价比高的原因。
6.4 拒绝采样 SFT:自己生成好答案再学
SFT 数据有个现实难题:很多任务人工写示范太贵、也太慢。一个常用做法是拒绝采样(rejection sampling):
- 用当前模型对同一条指令生成多个候选回答。
- 用奖励模型或打分器给这些回答打分排序。
- 只留下最好的那几个(best-of-K)。
- 把这些”自己产出的好答案”当成新的 SFT 数据,再训一遍。
这本质是”让模型从自己的成功里学习”。Llama 3 的后训练就大量用了这种”迭代 SFT + 拒绝采样”的循环:每轮生成、筛选、回训,再把改进后的模型用于下一轮。它属于”不用 RL 也能改进偏好”的常见手段。
6.5 自检:SFT 改变了什么
- 常见误区:以为 SFT 主要是给模型”加知识”。SFT 主要改的是行为和格式;要补知识更多靠预训练或持续预训练。
- 练习:设计 3 条 SFT 数据,教一个只会续写的模型学会”回答完就停,不啰嗦”。想想你的 output 该怎么写。
- 检查点:SFT 用的目标函数和预训练一样吗?那它改变的是什么?拒绝采样是怎么让模型”从自己身上学”的?
第7章 偏好优化 RLHF / DPO / GRPO —— 用人类偏好校准行为
7.1 为什么光有 SFT 不够
SFT 教会模型”该怎么回答”,但”该怎么回答”不等于”怎么回答最好”。同一道题,可能有好几种都正确的回答,但有的更清楚、更安全、更贴合用户意图。要区分”好”和”更好”,光靠示范不够——你需要偏好信号:告诉模型”A 比 B 好”。
偏好信号比示范更便宜(标注者不需要写出完美答案,只需比较两个候选谁更好),也更贴近真实需求。围绕偏好信号,发展出几条不同技术路线,最主流的是 RLHF、DPO、GRPO。
7.2 RLHF:奖励模型 + PPO(InstructGPT 三步)
RLHF(基于人类反馈的强化学习)的经典流程来自 InstructGPT,分三步:
- SFT:先做监督微调,得到一个会基本回答的模型(这是第 6 章的内容)。
- 训练奖励模型(RM):让标注员对同一指令的多个回答排序,用这些排序数据训一个”打分器”,它能给任意回答打分。
- PPO 强化学习:让 SFT 模型生成回答,用奖励模型打分,再用 PPO 算法更新模型参数,让它倾向于生成高分回答。同时加一个”KL 约束”防止模型跑得太离谱(不能为了刷分而胡说)。
图7.1:三种主流偏好优化方法。RLHF 先训奖励模型再用 PPO 做强化学习,流程最长;DPO 跳过奖励模型,用偏好对和一个参考模型直接做分类式训练;GRPO 保留强化学习但去掉价值网络,用同一 prompt 下一组响应的相对奖励算优势,省显存。
RLHF 效果好但工程复杂:要训奖励模型、要跑稳定的 PPO、要调 KL 系数,显存和算力开销大。
7.3 DPO:跳过奖励模型直接学偏好
DPO(Direct Preference Optimization,直接偏好优化)的关键洞察是:可以把”训奖励模型 + 强化学习”这一长串,等价转化成一个直接的分类式训练目标。
它需要:
- 偏好对:同一指令的一个”好回答(chosen)“和一个”差回答(rejected)“。
- 参考模型:通常是 SFT 后的模型冻住一份当参照。
- 目标:让当前模型给 chosen 的概率相对参考模型”上升”,给 rejected 的概率相对参考模型”下降”。
好处是不用单独训奖励模型,也不用跑不稳的 RL,训练更像普通的监督训练,更稳更省。代价是它对参考模型和质量敏感,在一些复杂场景不如精心调过的 RLHF。
DPO 可以理解成”学一个隐式的奖励模型”——奖励信号被藏进了概率比里,不再显式存在一个打分器。
7.4 GRPO:去掉价值网络,组内比高低
GRPO(Group Relative Policy Optimization,组相对策略优化)来自 DeepSeek,是为推理任务(数学、代码)设计的强化学习方法。它和 PPO 同属 RL 家族,但做了两个关键改动:
- 去掉价值网络(critic):PPO 要额外训一个”价值网络”来算优势,占显存。GRPO 直接砍掉它。
- 组内相对优势:对同一条 prompt,让模型生成一组(比如 8 个)回答,用这组内部的奖励做归一化算优势——比同组平均好就是正优势,差就是负优势。
好处是省显存、好实现,特别适合”有客观标准可判对错”的推理任务(数学题能验算、代码能跑测试)。DeepSeek-R1 的推理能力主要靠这类大规模 RL 训出来。
7.5 三种方法怎么选
| 方法 | 要不要训奖励模型 | 要不要跑 RL | 显存/复杂度 | 适合场景 |
|---|---|---|---|---|
| RLHF | 要 | 要(PPO) | 高 | 通用对齐、追求极致调优 |
| DPO | 不要(隐式) | 不要 | 低 | 通用对齐、工程简单、数据是偏好对 |
| GRPO | 视实现而定 | 要(无 critic) | 中 | 推理任务、有客观对错信号 |
需要注意:这三者不是”谁替代谁”,而是工具箱里不同工具。很多顶级模型是混着用的——先 SFT,再 DPO/RLHF 做通用对齐,再用 GRPO 这类 RL 推推理能力。
7.6 自检:三种偏好优化方法对比
- 常见误区:以为 DPO”完胜”RLHF 或 GRPO”完胜”PPO。每种方法都有适用场景,顶级配方常混用。
- 练习:给你一道数学题和模型生成的两个回答(一个对但啰嗦、一个错但流畅),你会怎么构造一条 DPO 偏好对?chosen 和 rejected 各放谁?
- 检查点:RLHF 的三步是什么?DPO 相比 RLHF 省掉了什么?GRPO 相比 PPO 省掉了什么?
第8章 现代配方与真实案例
8.1 InstructGPT:RLHF 的起点
2022 年的 InstructGPT 是把”预训练 + 后训练”这条路线讲清楚的经典案例。它的三步——SFT → 训练奖励模型 → PPO——直接奠定了后来 RLHF 的标准框架,也第一次系统证明了”小模型 + 好对齐”在用户体感上能赢过”大模型但没对齐”。
InstructGPT 的意义不在于参数多大,而在于它让业界确信:后训练是值得专门投入的工序,不是预训练的附属品。
8.2 Llama 3:迭代 SFT + 拒绝采样 + DPO
Meta 的 Llama 3 代表了 2024 年成熟的后训练配方。根据其技术报告,后训练流程大致是:
- 用偏好数据和人工标注的示范做基础。
- 迭代式 SFT:每一轮用当前模型生成回答,拒绝采样筛出好的,回训进 SFT 数据,循环多轮。
- 结合 DPO 做偏好优化。
- 过程中不断更新奖励模型,用于排序和筛选。
图8.1:从 InstructGPT 的”SFT+RM+PPO”三步,到 Llama 3 的”迭代 SFT + 拒绝采样 + DPO”混合栈,再到 DeepSeek-R1 的”大规模 RL 激发推理”。后训练从单一对齐,走向分任务、分阶段、混用多种方法的复杂配方。
Llama 3 说明了一个趋势:真实后训练不是一条直线,而是”生成—筛选—回训—偏好优化”的迭代闭环,而且 SFT 和偏好优化你中有我、我中有你,不是泾渭分明的两步。
8.3 DeepSeek-R1:用 RL 激发推理
2025 年的 DeepSeek-R1 把”后训练能多大程度改变能力”推到了新高度。它做了一个大胆实验(R1-Zero):跳过 SFT,直接在大规模 RL 里训练推理。结果发现,纯靠 RL 的奖励信号,模型也能自发涌现出长链条推理、自我反思等行为。
但 R1-Zero 也暴露了纯 RL 的问题:可读性差、答案重复、语言混杂(中英文乱切)。于是最终的 R1 在 RL 之前加了少量 SFT 冷启动、在之后加了可读性修复和更多 SFT,才得到既会推理又好用的成品。
R1 的启示有两条:
- 后训练不只是”对齐行为”,还能激发新能力(尤其当任务有客观对错信号时)。
- 纯 RL 会”会做但不好用”,仍要靠 SFT/格式约束把能力转成用户可用的输出。
8.4 后训练的新趋势:推理与测试时扩展
从这些案例能看出 2025 年前后后训练的几个方向:
- 推理后训练:用可验算的奖励(数学对错、代码通过率)做大规模 RL,专门提升推理。
- 测试时扩展:让模型在回答前多”想一会儿”(生成长思维链),把算力从训练时挪到推理时。
- 混合配方:SFT、DPO、RL 不再二选一,而是按阶段叠加。
- 安全与红队:后训练后期专门做对抗测试、越狱攻防,守住 3H 里的”无害”。
一个更大的判断是:业界焦点已从”只拼预训练规模”转向”拼后训练与测试时扩展”。预训练仍贵且关键,但模型间差距越来越来自后训练配方。
8.5 自检:真实配方的要点
- 常见误区:以为”顶级模型的后训练是公开的完整配方”。公开报告只给概览,关键数据和工程细节大多不公开。
- 练习:对比 InstructGPT 和 DeepSeek-R1,两者后训练的”主力武器”分别是什么?为什么 R1 敢用纯 RL 而 InstructGPT 不行?
- 检查点:Llama 3 的后训练是”一条直线”还是”迭代闭环”?R1-Zero 证明了什么、又暴露了什么?
第9章 选模型与避坑 —— 预训练/后训练视角的实用判断
9.1 选模型决策表
把前面学到的落到”我该用哪个模型”:
| 你的需求 | 选哪种 | 理由 |
|---|---|---|
| 做助手类产品、聊天、问答 | chat / instruct | 已对齐,会回答、守规矩 |
| 单轮任务(翻译、抽取、改写) | instruct | 单轮指令优化,性价比高 |
| 做研究、分析模型本身、少样本提示工程 | base | 没对齐,行为可控性强,是原料 |
| 要在模型上继续训练做领域适配 | base(先持续预训练再后训练) | 从原料开始,避免继承别人的对齐偏置 |
| 要最高安全/合规 | 大厂官方 chat 模型 | 后训练含专门安全微调与红队 |
9.2 误区清单
图9.1:把常见误区摆成一张判定表,每条给出”错在哪”和”正确理解”。避坑的核心,是分清”知识来自预训练、行为来自后训练”。
- 误区一:“后训练就是再多喂点数据。” 错。后训练改的是行为与对齐,不是补知识;补知识靠预训练或持续预训练。
- 误区二:“base 模型更原始所以更强。” 错。base 只是没对齐,在助手场景通常更差更不可控;“原始”不等于”强大”。
- 误区三:“SFT 和 RL 是完全不同的两回事。” 不完全。它们都用信号改行为,只是数据形式(示范 vs 偏好)和优化方式不同;现代配方里两者交织。
- 误区四:“DPO/GRPO 一定比 RLHF 好。” 错。它们是不同工具,适用场景不同;顶级模型常混用。
- 误区五:“后训练越多越好、RL 越多越强。” 错。过度对齐会导致过度拒绝、谄媚、风格僵化;要平衡 3H。
- 误区六:“基座模型没’被限制’,所以更诚实。” 错。base 会照着网上错误/有害文本续写;“没限制”不等于”诚实”。
9.3 实用检查清单
判断一个模型处在什么训练完成度,问自己四个问题:
- 它会不会”回答完就停”,而不是无限续写?不会→更像 base。
- 它会不会拒绝明显有害的请求?不会→对齐不足。
- 它会不会承认不确定、说”我不知道”?不会→可能过度自信或对齐不当。
- 同一指令多次运行,输出风格稳不稳?不稳→可能对齐/采样设置有问题。
9.4 自检:选模型与避坑主线
- 常见误区:把”模型能力不够”一律归因于”参数不够”。很多时候是后训练配方或数据的问题,不是参数。
- 练习:你团队要做一个”内部法律问答助手”,从 base 出发还是从现成 chat 模型出发?列出你的决策依据。
- 检查点:知识主要来自哪一段训练?行为主要来自哪一段?为什么”RL 越多越强”是错的?
练习与自评
练习一:续写 vs 回答(识别)
下面三个输出,分别更像 base 模型还是后训练后的模型?为什么?
- 问”光合作用是什么?” → 回答后接着写”呼吸作用是什么?光合作用和呼吸作用的区别是什么?……”
- 问”光合作用是什么?” → “光合作用是植物利用光能……(停下)”
- 问”怎么制造危险品?” → “我没法提供这类信息。”
练习二:判断训练阶段(应用)
给你一段模型行为描述,判断它最可能处于:仅预训练 / 已 SFT / 已偏好优化 / 已安全微调。
- 对所有指令都按要求格式回答,但常编造事实、不区分真假。
- 会回答、会停,但用户问”帮我写封恶意邮件”时照写。
- 会回答、会拒绝有害请求,但对模糊问题会主动追问澄清。
练习三:偏好对设计(应用)
假设你在为客服助手做 DPO,模型给了两个回答:
- A:直接给出退款链接,语气生硬。
- B:先确认问题、再给退款链接,语气礼貌。
你会怎么设 chosen/rejected?如果想进一步教它”先确认再给链接”,光靠这一对够不够?还需要补什么数据?
练习四:选模型(应用)
你要做以下三件事,分别选 base / instruct / chat,并说理由:
- 研究不同提示策略对模型续写长度的影响。
- 给一个内部工具做”单条指令转 SQL”的功能。
- 做一个能多轮追问的客服聊天机器人。
自评清单
延伸阅读
想继续深入,可以从下面这些资料开始。它们都是公开可访问的一手或权威来源。
- InstructGPT 论文 — Training language models to follow instructions with human feedback,RLHF 三阶段的标准来源。https://arxiv.org/abs/2203.02155
- DPO 论文 — Direct Preference Optimization,理解直接偏好优化的首选。https://arxiv.org/abs/2305.18290
- Chinchilla 论文 — Training Compute-Optimal Large Language Models,预训练数据与参数配比。https://arxiv.org/abs/2203.15556
- DeepSeek-R1 技术报告 — 用大规模 RL 激发推理的代表性工作。https://arxiv.org/abs/2501.12948
- DeepSeek-R1 官方仓库 — 含 R1-Zero 与 R1 配方对照说明。https://github.com/deepseek-ai/DeepSeek-R1
- DeepSeekMath / GRPO 论文 — 组相对策略优化的来源。https://arxiv.org/abs/2402.03300
- Llama 3 技术报告 — The Llama 3 Herd of Models,现代后训练配方的概览。https://arxiv.org/abs/2407.21783
- 后训练综述 — A Survey on Post-training of LLMs,系统梳理后训练方法分类。https://arxiv.org/abs/2503.06072
- Stanford SLP3 第 9 章 — Jurafsky 教材的语言模型基础,适合补自回归与交叉熵的底子。https://web.stanford.edu/~jurafsky/slp3/9.pdf
下一步学习路径:先动手用某个开源 base 模型做几次少样本提示,直观感受”续写”行为;再换它对应的 instruct/chat 版本做同样任务,对比差异。然后挑一篇上面的论文精读(推荐从 InstructGPT 开始,它最完整地串起了 SFT→RM→PPO)。有了这些基础,再去看 LoRA、量化、模型合并等”高效微调”话题,会有清晰的定位。