跳到主要内容

从补全器到助手 — 监督微调与合成数据

这一章讲三件事: 为什么会续写不等于会回答;监督微调怎么补上这个缺口; 以及训练数据从哪来——特别是「让更强的模型生成训练数据」这套改变了行业成本的做法。 读完你会理解:ChatGPT 与它的底座之间,隔着的正是这一章的东西。

1. 这一章讲什么

第 01 章说过,预训练的产物是一份统计摘要。这份摘要有个天然的盲区,书里叫 指令跟随缺口:它是全世界最好的「续写器」,却不是助手。 你问它一个问题,它可能回答,也可能接着写更多问题—— 因为「问题后面跟问题」在语料里是完全合法的续写模式1

本章的解法分两层:训练方法上,行话叫监督微调(拿「指令+示范回答」 成对地教,就是第 02 章三种格式实际服务的那类微调,缩写 SFT)2; 数据来源上,讲清人类标注与模型合成两条路怎么配合2。 至于「教它分辨两个回答哪个更好」——那是下一章的事,行话叫对齐 (把模型的回答往人的偏好上掰的训练),本章不展开。

2. 顶层全景

底座(只会续写)
│ ① 现象:问它「写个排序函数」,它可能给你一篇讲排序算法的文章

监督微调:成千上万条「指令 + 人类想要的回答」
│ ② 数据三性:多样 / 单例质量 / 覆盖度
│ ③ 来源:人写(贵而精)或强模型合成(175 种子 → 52,000 对)

助手(听到指令,先想「回答它」)

└──→ 下一章:两个回答都像样时,怎么教它挑更好的那个

图说:本章填的是「会不会回答」,下一章填的是「答得好不好」。

3. 核心原理

3.1 缺口长什么样:三个现场

书里给了三个可以亲眼复现的现象3:

现象一,答非所问的形态。 让它「写一个给列表排序的函数」, 它可能产出一篇讨论各种排序算法(解题步骤)的文章—— 因为「关于排序算法的文章」在语料里是比「一段代码」常见得多的文字模式。

现象二,约束被无视。 让它「用三个要点总结这篇文档」, 它可能写出一篇不受长度约束的长总结——长度要求是提示词层面的指令, 它没有任何「必须照办」的训练倾向。

现象三,最要命的:没有价值感。 语料里有什么,它就像什么; 有害内容、危险指引,语料里有它就不回避3

这三个现象指向同一个根:预训练教的是「接着写像样的文字」, 从没教过「对面有一个带着目的的人」。指令微调补的就是这一课。

3.2 监督微调与数据三性

做法本身一句话:收集大量「指令 + 希望得到的回答」的成对样例, 让模型学着预测那个希望得到的回答。成千上万条之后,它长出一个稳定的倾向: 听到指令,先想「回答它」4

成败几乎全在数据上。书里给三个性质5:

性质意思缺了会怎样
多样指令的类型、话题、风格、难度都要铺开只会答事实题,创作、推理、写码全垮
单例质量每条样例的回答都真的是「你想要的回答」平庸样例直接教出平庸模型
覆盖度部署时会遇到的输入分布都要有代表能力出现奇怪的空洞,上线才暴露

三条里最反直觉的是第二条:书里反复强调, 1000 条优秀的样例会训出比 100,000 条平庸的更好的模型—— 回答与质量的相关是「直接且一致的」6。 这条与第 02 章「500 条精修胜过 5000 条平庸」是同一条纪律在指令微调上的重申。

3.3 行业里落地的三个名字

第 02 章讲过 completion/instruction/chat 三种形状;这一节是它们在 指令微调社区里的三个落地名字,增量在取舍。先把一个名字立正: GPT(OpenAI 家那一系列大模型的统称),马上见到的 ShareGPT、GPT-4 都沾这个名号7

Alpaca 格式(斯坦福 2023 年提出):每条样例三栏——指令、可选的输入、输出。 简单、好生成、单轮任务够用;天然装不下多轮对话(一问一答接连好几轮的交谈)7

ShareGPT 格式:每条样例是一串「人类/助手」交替的轮次, 源自收集真人与 ChatGPT 的对话。多轮连贯性是它的强项; 代价是质控更难——要保证的是「整段对话连贯」, 不是单条样例合格8

OpenAI chat 格式:今天事实上的标准,即第 02 章的 system/user/assistant 三角色。它的关键优势在 system 消息:训练时见过「system 定行为」的模型, 部署时改 system 消息就能调整行为——不用重新训练。 同一个模型靠换 system 消息适配多种部署场景,这是另外两种格式给不了的9

书里顺带警告了一句已经在第 02 章出现过的话:推理时模板用错, 是新手最常见的「模型突然变笨」的原因10

3.4 合成数据:让更强的模型教 weaker 的模型

人类标注又贵又慢,于是过去两年最重要的实践出现了: 拿更强的模型生成训练数据,去教更弱的模型。书里沿这条线讲了三步。先把一个名字立正:GPT(OpenAI 家那一系列大模型的统称),马上要见到的 GPT-4、ShareGPT 都是这一家或沾这一家的名字11

第一步,Self-Instruct 方法:手工写一小撮「种子」样例, 让模型照着种子的样子自举生成新指令,过滤掉低质量与重复的, 再生成回答。Alpaca 用 175 条人写种子,经 GPT 系模型扩出了 52,000 对 训练数据——量级是 300 倍12

第二步,Orca 的升级:蒸馏(把老师模型的输出当教材、去教学生模型)。微软的 Orca 不满足于只让老师给答案, 而是让 GPT-4 给出带完整推理过程的解题轨迹,让学生模型学过程而不只是学结论。 书里的判语:这种「蒸过程」的教法,效果远超只蒸结论13。 蒸馏(老师模型的输出当教材、教学生模型)自此成了标准动作。

第三步,质检:合成数据会原样继承老师的偏见与错误。书里给的工序: 过滤(回答过短的——可能是拒答或截断;与已知事实矛盾的;没在执行指令的)、 去重(模型反复被提示会生成雷同输出,重复样例虚增多样性)、 最后人工抽查一部分确认质量再放量14

主走查:六条样例怎么变成一次训练

书里的实操给 phi-2(第 04 章那台)喂了六条 chat 格式样例: 打招呼问事实的、写函数的、解释概念的、翻译的、处理退订的—— 每条都是 system 定人设、user 提问、assistant 给出标准回答15

训练前,每条样例被拼成一整段带角色前缀的文字:

<|system|>\nYou are a helpful, concise, accurate assistant.\n
<|user|>\nWhat is the capital of France?\n
<|assistant|>\nThe capital of France is Paris.\n

图说:角色标记就是模型眼里的「轮次边界」——第 02 章说的
「轮次边界的切分要小心」,落的就是这几个角色前缀上。

这里有一处书里没讲、但动手前必须知道的机制:训练并不是对这整段文字 一视同仁地算损失。TRL 库的 SFT 数据管线会在切词时顺手找出「哪些位置 属于回答」,把不参与学习的位置写成一个特殊的忽略值, 只对回答部分算损失、只从回答部分回传梯度—— 不然模型会把「该由人来问的部分」也学着生成 (补充(不在书里,依据我们的 frontier 书架):SFT 管线在 tokenize 时 顺手产出 completion/assistant 掩码,掩码折进 labels(-100)。 依据: shelf=ai-frontier-reference/trl#02-sft.md 事实=tokenize 时顺手产出 completion/assistant 掩码,掩码折进 labels(-100), 只对回答部分算损失)。

六条样例、3 个轮次、有效批量 8(批量 1×梯度累积 8)、学习率 2e-4—— 跑完这个微型 SFT,模型对「指令该被回答」的倾向就初步立起来了16。 真实的指令微调把这六条换成几千到几十万条,机制不变。

4. 作者的判断与证据

**书里当证据给的:**FLAN 的多任务研究、Alpaca 的 175→52,000、 Orca 的过程蒸馏、Phi 系列的「教科书级合成数据」——书里把这四条 按时间排成一条「质量压倒数量」的证据链,结论是领域共识级的6

书里当立场给的:「先投资质量,再谈规模」被写成实践结论(「invest in quality first」)6;三种格式的取舍也是作者的裁断——他明确把 OpenAI chat 定为今天的默认,理由是 system 消息的部署灵活性9

**书里坦白没给的:**Self-Instruct、Orca、Phi 在书里都只有结论没有数字对比 (比如蒸过程比蒸结论具体好多少);合成数据质检的过滤阈值 (「过短」是多短)书里没有给数。

5. 边界与局限

  • 「1000 条优秀」的「优秀」没有可操作的定义——书里给了四属性(第 02 章) 和人工抽查,但什么算「一条优秀样例」最终仍是人工判断;
  • 合成数据的老师在退化时无人知晓:书里提醒了偏见继承, 但「怎么发现老师错了」没有给机制——今天通行的是抽样人审加基准回归, 书里只讲了前者;
  • 只对回答算损失这个关键机制书里没讲(主走查一节已补), 不懂它就无法解释「为什么模型学不会自问自答」的失败案例;
  • 下一章要讲的偏好对齐,本章只留了一个接口:它解决的是 「两个回答都像样,哪个更好」——SFT 对此无能为力17

6. 可带走的

  1. 底座是续写器不是助手:三现象(答非所问、无视约束、没有价值感)同根;
  2. 监督微调 = 「指令+示范回答」成对地教,教出「先想回答」的倾向;
  3. 数据三性:多样、单例质量、覆盖度——质量压倒数量是全书第一纪律;
  4. 1000 条优秀 > 100,000 条平庸;
  5. 格式选 OpenAI chat:system 消息让部署时改行为不用重训;
  6. 合成数据三步:种子自举(Self-Instruct)、蒸推理过程(Orca)、过滤去重加抽查;
  7. SFT 只教「怎么答都行」,「哪个答得更好」是下一章的活。

7. 原文地图

主题原书章原文位置
指令跟随缺口:问句续问句Instruction Tuning and Alignmenttext/06-ch03-chapter-3-instruction-tuning-and-alignment.txt:7(搜「more questions」)
语料没教意图对齐、对话概念Instruction Tuning and Alignmenttext/06-ch03-chapter-3-instruction-tuning-and-alignment.txt:21(搜「intent alignment」) · :23(搜「no model of a user」)
三现象:排序文章/长度约束/有害内容Instruction Tuning and Alignmenttext/06-ch03-chapter-3-instruction-tuning-and-alignment.txt:27(搜「sorting」) · :29(搜「harmful」)
SFT 做法与数据三性Instruction Tuning and Alignmenttext/06-ch03-chapter-3-instruction-tuning-and-alignment.txt:35(搜「token by token」) · :39(搜「diversity」)
1000 条胜 100,000 条Instruction Tuning and Alignmenttext/06-ch03-chapter-3-instruction-tuning-and-alignment.txt:49(搜「1,000 excellent」)
FLAN/Alpaca/Orca/Phi 证据链Instruction Tuning and Alignmenttext/06-ch03-chapter-3-instruction-tuning-and-alignment.txt:47(搜「textbook quality」)
Alpaca 格式Instruction Tuning and Alignmenttext/06-ch03-chapter-3-instruction-tuning-and-alignment.txt:57(搜「Stanford Alpaca」)
ShareGPT 格式与质控Instruction Tuning and Alignmenttext/06-ch03-chapter-3-instruction-tuning-and-alignment.txt:63(搜「turns」) · :65(搜「quality control」)
OpenAI chat 与 system 消息Instruction Tuning and Alignmenttext/06-ch03-chapter-3-instruction-tuning-and-alignment.txt:69(搜「de facto standard」) · :71(搜「without retraining」)
模板用错是常见病Instruction Tuning and Alignmenttext/06-ch03-chapter-3-instruction-tuning-and-alignment.txt:73(搜「wrong template」)
Self-Instruct 与 175→52,000Instruction Tuning and Alignmenttext/06-ch03-chapter-3-instruction-tuning-and-alignment.txt:81(搜「175 seed」)
Orca 蒸馏推理轨迹Instruction Tuning and Alignmenttext/06-ch03-chapter-3-instruction-tuning-and-alignment.txt:85(搜「reasoning traces」)
合成数据质检三道Instruction Tuning and Alignmenttext/06-ch03-chapter-3-instruction-tuning-and-alignment.txt:89(搜「too short」) · :91(搜「human review」)
phi-2 六条样例与格式化Instruction Tuning and Alignmenttext/06-ch03-chapter-3-instruction-tuning-and-alignment.txt:263(搜「capital of France」) · :413(搜「format_sft_example」)
SFT 配置:批量 1×8、2e-4Instruction Tuning and Alignmenttext/06-ch03-chapter-3-instruction-tuning-and-alignment.txt:447(搜「gradient_accumulation_steps=8」)

Footnotes

  1. 出处:「Instruction Tuning and Alignment」第 7 段(text/06-ch03-chapter-3-instruction-tuning-and-alignment.txt:7,搜「just as likely」)。原文:问它直接的问题,它生成更多问题的可能性一样大,因为「问题跟问题」是完全合法的续写模式。

  2. 出处:「Instruction Tuning and Alignment」第 3 段(text/06-ch03-chapter-3-instruction-tuning-and-alignment.txt:3,搜「instruction tuning and alignment」)。 2

  3. 出处:「Instruction Tuning and Alignment」第 27、29 段(text/06-ch03-chapter-3-instruction-tuning-and-alignment.txt:27,搜「sorting」;:29,搜「no alignment with human values」)。 2

  4. 出处:「Instruction Tuning and Alignment」第 35 段(text/06-ch03-chapter-3-instruction-tuning-and-alignment.txt:35,搜「strong general tendency」)。

  5. 出处:「Instruction Tuning and Alignment」第 39–43 段(text/06-ch03-chapter-3-instruction-tuning-and-alignment.txt:39,搜「diversity, quality, and coverage」)。

  6. 出处:「Instruction Tuning and Alignment」第 47、49 段(text/06-ch03-chapter-3-instruction-tuning-and-alignment.txt:47,搜「textbook quality」;:49,搜「1,000 excellent」)。 2 3

  7. 出处:「Instruction Tuning and Alignment」第 57、59 段(text/06-ch03-chapter-3-instruction-tuning-and-alignment.txt:57,搜「Stanford Alpaca」;:59,搜「multi-turn conversations」)。 2

  8. 出处:「Instruction Tuning and Alignment」第 63、65 段(text/06-ch03-chapter-3-instruction-tuning-and-alignment.txt:63,搜「alternating between human messages」;:65,搜「coherent as a whole」)。

  9. 出处:「Instruction Tuning and Alignment」第 69、71 段(text/06-ch03-chapter-3-instruction-tuning-and-alignment.txt:69,搜「explicit role labels」;:71,搜「without retraining」)。 2

  10. 出处:「Instruction Tuning and Alignment」第 73 段(text/06-ch03-chapter-3-instruction-tuning-and-alignment.txt:73,搜「wrong template」)。

  11. 出处:「Instruction Tuning and Alignment」第 77 段(text/06-ch03-chapter-3-instruction-tuning-and-alignment.txt:77,搜「stronger models to generate training data」)。

  12. 出处:「Instruction Tuning and Alignment」第 81 段(text/06-ch03-chapter-3-instruction-tuning-and-alignment.txt:81,搜「175 seed」)。GPT 系模型的原文表述是「GPT-3.5」。

  13. 出处:「Instruction Tuning and Alignment」第 85 段(text/06-ch03-chapter-3-instruction-tuning-and-alignment.txt:85,搜「step-by-step reasoning traces」)。

  14. 出处:「Instruction Tuning and Alignment」第 89、91 段(text/06-ch03-chapter-3-instruction-tuning-and-alignment.txt:89,搜「too short」;:91,搜「generate at scale, filter automatically」)。

  15. 出处:「Instruction Tuning and Alignment」第 255–341 段(text/06-ch03-chapter-3-instruction-tuning-and-alignment.txt:263,搜「capital of France」)。

  16. 出处:「Instruction Tuning and Alignment」第 439–497 段(text/06-ch03-chapter-3-instruction-tuning-and-alignment.txt:447,搜「gradient_accumulation_steps=8」;:449,搜「2e-4」)。

  17. 出处:「Instruction Tuning and Alignment」第 95 段(text/06-ch03-chapter-3-instruction-tuning-and-alignment.txt:95,搜「superficially look correct」)。