跳到主要内容

数据、格式与训练配置 — 喂什么、怎么喂、防什么坑

这一章讲三件事: 训练数据用什么形状;训练配置里哪几个旋钮真的重要; 以及微调最著名的翻车方式——灾难性遗忘——的机制与对策。 读完你会明白一句行业里反复被验证的话:微调的成败,大半在训练开始之前就定了。

1. 这一章讲什么

第 01 章说清了微调是什么:在预训练先验上做小幅修正,把输出的统计形状挪向你的目标。 这一章讲「挪」的具体操作面:拿什么数据挪、数据摆成什么形状、 训练配置里每个旋钮拧到哪,以及挪过头会摔的那个坑1

它在全书链条里的位置: 这一章的每一项都是「无论后面用哪种方法都要做的事」—— 下一章开始讲 LoRA(只训一小块新增参数的省显存方法,微调世界的现行主角), 但它照样要吃这一章的数据、照样要防这一章的遗忘。

2. 顶层全景

原始材料 ──→ 选一种形状摆好 ──→ 清洗与去重 ──→ 训练配置 ──→ 训练 ──→ 盯验证损失
(工单/文档 (三种格式, (质量四属性 (学习率/预热/ (1–5 遍) │
/对话) 见 3.1) + 去重) 批量/轮次) │
还在降?继续
升了?停
图说:这是一条流水线,不是一张清单。左端的格式选择决定脆度,
右端的验证损失决定什么时候停手。

3. 核心原理

3.1 数据的三种形状

格式不是包装,是训练的一部分。 同一批数据摆成不同形状,训出来的脆度完全不同。

completion 格式最老最简单:一条样例就是「提示 → 补全」。 书里的例子:提示是 Review: The product broke after two days of use. Sentiment:, 补全是 negative2。它的问题是脆:模型只学过「这一种问法」, 推理时提示词的措辞稍一变,性能就往下掉——因为它只见过一种问法3

instruction 格式往前走了一步:每条样例先用自然语言描述任务 (「把下面这条评论分成 positive/negative/neutral 三类」),再给内容。 模型学的是「按指令的实际含义办事」而不是「匹配某种表面格式」, 换个问法也认得4

chat 格式是现代对话模型的标准:每条样例是一串带角色的消息—— system(定基调与行为)、user(提问)、assistant(要学的回答)轮替出现5。 两个要紧的细节。其一,多轮样例能教会模型跨轮次记住上下文 (前文说过、需要带着走的内容), 但轮次边界怎么切成 token 需要小心处理6

其二,LLaMA、Mistral、Phi 这些主流家族都把代码和权重开源(公开出来,谁都能下载)。

它们都用 chat 格式的变体做指令微调(拿「指令+示范回答」教模型办事的那类微调)。

你拿别的格式去微调这些模型,轻则无视 system 消息,重则答非所问7

本书后面所有实操都在 chat 格式上进行;那一族行业格式的名字与取舍, 在第 05 章讲指令微调时展开。

3.2 质量压倒数量:四属性与去重

书里把大规模微调研究里最重要的教训放在加粗的位置: 500 条精心策划的数据,通常胜过 5000 条平庸的8。 这不是修辞——一条答案有错的训练样例,会主动教坏模型:它在学「复现你给它的行为」, 包括其中的毛病。

什么样的数据算高质量?书里给四个属性:准确(目标输出真的对、真的完整、 真的是你要的行为)、多样(覆盖推理时会遇到的全范围输入与难度)、 一致(全部样例同一套格式约定与好坏标准)、 无污染(不含测试集样本——训练数据和评测数据混在一起,叫数据污染, 后果是你再也无法知道自己真实的水平)9

从源头到入口有三道工序。第一道在源头:请人做标注(给人写的材料贴上标准答案) 就先写清楚标注指南、开校准会,用 Cohen's kappa(量「两个标注者有多像」的数, 0 到 1,越接近 1 越一致)把一致性量出来10

第二道在合成数据(拿更强的模型一次生成一大批训练样例)上: 先抽出少量样本人审,按清单查——指令被误解的、技术上对但语气不对的、 把正确答案简化或编造的——别凭感觉11

第三道在入口:定几条过滤规则删掉明显有问题的——目标响应短得可疑的、 输入重复的、带格式残渣的12

然后是去重,最容易被忽略、收益却最大的一步。完全重复好删; 近似重复要算相似度:拿嵌入(把一段文字变成一串能算距离的数) 量两条样例有多像13

书里给的标准线是:相似度超过 0.95 左右(这个数叫阈值,即「过线就删」的那条线) 就当重复删掉。重复样例会让模型对这几条过度加权, 悄悄吃掉数据多样性13

3.3 学习率:微调最重要的一个旋钮

第 01 章见过学习率这个词(每步把权重挪多远)。它是微调里后果最重的一个 超参数(训练前就要人工定下的设置,机器自己不会学它)14:

  • 太大:梯度更新带着噪声(随机起伏的干扰)覆写预训练权重,通用能力被冲掉;
  • 太小:训了很久,行为纹丝不动。

全参微调的大模型,业界实践已经收敛(试来试去最后都落到同一个区间)在 1e-5 到 5e-5——比预训练常用值低一到两个数量级。方向感很清楚: 预训练是从零学一门语言,步子要大;微调是精修,步子要小。 书里给的默认起点:2e-5,再拿一份没参与训练的数据看表现、照着调15

一个容易搞反的例外:只训分类头时,头的学习率反而要大—— 1e-4 到 1e-3。因为头是新初始化的,离「学会」很远; 底座是精修,头是从头学,两者的步子天然不同16

3.4 主走查:把三个训练旋钮一次算清

这一节把三个配置一次算清楚,全程用书里自己给的算例。

预热(warmup):训练的头几百步不直接上目标学习率,而是从接近 0 开始, 沿一条直线一步步爬上去。为什么?开局模型还没适应你的数据分布, 第一步就迈大步,容易踩出「大坑里爬不出来」的破坏性更新17。 预热占总步数的 5%–10%。

训练行话把「一次梯度更新前一起送进机器的那组样例」叫作

**批量(batch)**就是这组样例的规模——一次更新前,一起送进多少条。

显存不够时有个替代:梯度累积——连跑几个小批量,把梯度攒起来再更新一步, 等效于大批量,显存开销却只有小批量的18

经验区间:等效批量在 8–32 之间;低于 4,每步的梯度估计噪声太大,训练不稳; 高于 128,容易找到「又尖又窄」的解,也就是过拟合 (把训练集背了下来,换新数据反而更差)19

**轮次(epochs)**是完整过几遍训练集。微调只要 1–5 遍—— 别忘了底座已经会这门语言了。判据只有一个:损失(「错得有多远」的度量): 拿训练时见过的数据算,是训练损失;拿没见过的数据算,叫验证损失。 它还在降就继续;它开始升而训练损失还在降,就是过拟合的信号,立刻停20

书里的算例(数字全部来自原书):

1,000 条样例 × 3 个轮次 ÷ 批量 8 = 375 步(总步数)

预热取总步数的 5%–10% ─────────────────→ 前 20 到 40 步把学习率从 0 爬到 2e-5

之后每一步:方向不变,步子从「小心翼翼」升到「正常步幅」

图说:三个旋钮在同一个算式里咬合——改任何一个,另两个的最优值跟着动。

这条算式为什么值得单独背下来:它把「配置训练」从玄学变成算术。 总步数由数据量、轮次、批量三个数相乘相除得出,预热再从总步数里切走一小段; 书里那个「20 到 40 步」不是拍脑袋,是从 375 步里按比例切出来的21

3.5 灾难性遗忘:机制与四道闸

这一节讲微调最著名的翻车方式。机制说透了,对策就不再是咒语清单。

现象:一个什么都会的通用助手,微调完只擅长你那件事, 别的全变差——指令跟随能力被部分覆写、通用知识变得捞不起来22

机制就一句话:这类机器学新任务的方式,是让梯度更新去改写权重; 而权重是共享的——为新任务改写的那些数,可能正是旧能力存在的地方23。 这就是第 01 章说的分布偏移的另一面:往你的分布偏得越多,离通用分布越远。

四个条件会放大遗忘24:微调数据与预训练分布差得越远、学习率越高、 遍数越多、数据越少(少了就容易被反复刷)。

对策四道闸,按「最根本到最辅助」排。第一道,低学习率: 步子小,偏移是渐变不是突变——这正是微调学习率要低的第一原因25。 第二道,早停:盯验证表现,平台期就停,不给「偏过头」发生的机会25。 第三道,数据混洗(replay):每批混 10%–20% 通用数据, 让通用方向持续收到梯度信号,旧能力一直有人「认领」25。 第四道,参数高效微调:只让少数新增参数可训(下一章的 LoRA)。 它和前三道的区别在于:前三道是「小心地改全部」, 它是「干脆只改一小块」——绝大部分权重物理上动不了,是结构上的根治25

4. 作者的判断与证据

书里当证据给的:「500 条胜过 5000 条」被表述为大规模微调研究的可重复结论8; 「微调学习率应比预训练低 1–2 个数量级」被表述为收敛的行业实践(原文 「empirical practice has converged on」)15

**书里当立场给的:**质量四属性是作者的整理框架,属性本身无争议, 但「四条」这个切法是作者的组织方式;「20 到 40 步预热」这类具体数是作者的演算示范。

**书里坦白没给的:**所有区间数字(学习率区间、批量区间、轮次区间)都没有附 「越界失败」的实验数据;书里把它们定位成经验共识,读者应当在自己的验证集上复核—— 这也是书里反复说的「adjusting based on validation loss」的态度。

5. 边界与局限

  • 三种格式的边界在模糊化。 现代训练库能同时吃对话式与提示-补全式数据, 并自动做损失掩码(补充(不在书里,依据我们的 frontier 书架): TRL 的 SFT 数据管线会在切词时顺手算出「哪些位置属于回答」的掩码, 把不参与学习的位置在 labels 里写成 -100,只对回答部分算损失。 依据: shelf=ai-frontier-reference/trl#02-sft.md 事实=tokenize 时顺手产出 completion/assistant 掩码、掩码折进 labels(-100));
  • 「少于 100 条不可行」是量级判断,书里没有给边界实验;
  • 数据混洗的 10%–20% 是经验区间,通用数据选什么(预训练分布还是通用指令集) 书里没有展开;
  • 灾难性遗忘的机制叙述是教科书式的(梯度覆写共享权重), 书里没有引用具体研究;更深的机理要看持续学习文献(不在本书范围)。

6. 可带走的

  1. 格式决定脆度:completion 脆、instruction 稳、chat 是现代标配——格式错了, 模型会无视 system 消息;
  2. 质量压倒数量:500 条精修 > 5000 条平庸;一条坏样例会主动教坏模型;
  3. 去重是最被低估的一步:嵌入相似度超过约 0.95 就删;
  4. 学习率是第一旋钮:全参微调 1e-55e-5(比预训练低 1–2 个数量级),只训头反而 1e-41e-3;
  5. 预热防开局大步;梯度累积用时间换显存;遍数 1–5,停不停只看验证损失;
  6. 背下那条算式:样例数 × 轮次 ÷ 批量 = 总步数,预热从中切 5%–10%;
  7. 灾难性遗忘=梯度覆写共享权重;四个放大条件:分布远、步子大、遍数多、数据少;
  8. 对策按根本程度排:低学习率 → 早停 → 混 10%–20% 通用数据 → 参数高效微调(下一章)。

7. 原文地图

主题原书章原文位置
completion 格式与其脆性Fine-Tuning Fundamentalstext/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:131(搜「The completion format」) · :135(搜「brittle with respect to prompt」)
instruction 格式Fine-Tuning Fundamentalstext/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:139(搜「InstructGPT」)
chat 格式与模板错配的后果Fine-Tuning Fundamentalstext/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:145(搜「system」) · :147(搜「ignore system prompts」) · :149(搜「tokenization details」)
500 条胜 5000 条Fine-Tuning Fundamentalstext/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:153(搜「500 high-quality」)
质量四属性Fine-Tuning Fundamentalstext/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:157(搜「accurate」) · :159(搜「diverse」) · :161(搜「consistent」) · :163(搜「contamination」)
标注一致性、合成数据审查、过滤、去重Fine-Tuning Fundamentalstext/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:167(搜「kappa」) · :169(搜「checklist」) · :171(搜「suspiciously short」) · :175(搜「0.95」)
学习率区间与只训头的例外Fine-Tuning Fundamentalstext/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:185(搜「1e-5 to 5e-5」) · :187(搜「1e-4 to 1e-3」)
预热与 375 步算例Fine-Tuning Fundamentalstext/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:191(搜「destabilizing updates」) · :193(搜「20 to 40 steps」)
批量、梯度累积、过拟合判据Fine-Tuning Fundamentalstext/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:197(搜「gradient accumulation」) · :199(搜「sharper, less generalizable」) · :205(搜「validation loss」)
灾难性遗忘机制与加重条件Fine-Tuning Fundamentalstext/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:213(搜「overwrite the weights」) · :217(搜「more severe」)
四道闸:低 lr/早停/混数据/PEFTFine-Tuning Fundamentalstext/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:221(搜「low learning rate」) · :223(搜「Early stopping」) · :225(搜「10 to 20 percent」) · :227(搜「structurally preserved」)

Footnotes

  1. 出处:「Fine-Tuning Fundamentals」第 13 段(text/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:13,搜「catastrophic forgetting」)。本章内容全部来自原书第一章后半。

  2. 出处:「Fine-Tuning Fundamentals」第 133 段(text/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:133,搜「Sentiment:」)。

  3. 出处:「Fine-Tuning Fundamentals」第 135 段(text/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:135,搜「brittle with respect to prompt」)。

  4. 出处:「Fine-Tuning Fundamentals」第 139、141 段(text/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:139,搜「semantic content of the instruction」;:141,搜「generalizes better」)。

  5. 出处:「Fine-Tuning Fundamentals」第 145 段(text/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:145,搜「alternating roles」)。

  6. 出处:「Fine-Tuning Fundamentals」第 149 段(text/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:149,搜「tokenization details」)。

  7. 出处:「Fine-Tuning Fundamentals」第 147 段(text/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:147,搜「ignore system prompts」)。

  8. 出处:「Fine-Tuning Fundamentals」第 153 段(text/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:153,搜「500 high-quality」)。 2

  9. 出处:「Fine-Tuning Fundamentals」第 155–163 段(text/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:157,搜「accurate」;:159,搜「diverse」;:161,搜「consistent」;:163,搜「free of contamination」)。

  10. 出处:「Fine-Tuning Fundamentals」第 167 段(text/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:167,搜「Cohen's kappa」)。

  11. 出处:「Fine-Tuning Fundamentals」第 169 段(text/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:169,搜「checklist」)。

  12. 出处:「Fine-Tuning Fundamentals」第 171 段(text/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:171,搜「suspiciously short」)。

  13. 出处:「Fine-Tuning Fundamentals」第 175 段(text/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:175,搜「0.95」)。 2

  14. 出处:「Fine-Tuning Fundamentals」第 183 段(text/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:183,搜「most consequential」)。

  15. 出处:「Fine-Tuning Fundamentals」第 185 段(text/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:185,搜「1e-5 to 5e-5」)。「converged on」原文作「empirical practice has converged on learning rates in the range of」。 2

  16. 出处:「Fine-Tuning Fundamentals」第 187 段(text/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:187,搜「1e-4 to 1e-3」)。

  17. 出处:「Fine-Tuning Fundamentals」第 191 段(text/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:191,搜「destabilizing updates」)。

  18. 出处:「Fine-Tuning Fundamentals」第 197 段(text/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:197,搜「gradient accumulation」)。

  19. 出处:「Fine-Tuning Fundamentals」第 199 段(text/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:199,搜「sharper, less generalizable」)。

  20. 出处:「Fine-Tuning Fundamentals」第 203、205 段(text/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:203,搜「1 to 5 epochs」;:205,搜「validation loss」)。

  21. 出处:「Fine-Tuning Fundamentals」第 193 段(text/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:193,搜「20 to 40 steps」)。算例原文:「For a dataset of 1,000 examples trained for 3 epochs with a batch size of 8, this is roughly 375 total steps, suggesting a warmup of 20 to 40 steps.」

  22. 出处:「Fine-Tuning Fundamentals」第 215 段(text/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:215,搜「partially overwritten」)。

  23. 出处:「Fine-Tuning Fundamentals」第 213 段(text/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:213,搜「overwrite the weights」)。

  24. 出处:「Fine-Tuning Fundamentals」第 217 段(text/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:217,搜「more severe」)。

  25. 出处:「Fine-Tuning Fundamentals」第 221–227 段(text/04-ch01-chapter-1-fine-tuning-fundamentals-full-and-feat.txt:221,搜「low learning rate」;:223,搜「Early stopping」;:225,搜「10 to 20 percent」;:227,搜「structurally preserved」)。第四道闸的原文是「the pre-trained representation is structurally preserved」。 2 3 4