For the complete documentation index, see llms.txt. This page is also available as Markdown.

本章小结

本章沿着后训练的流水线展开:先让基础模型学会应答,再把人类偏好变成训练信号,然后把更新范围压到低秩增量。最后两节转向验收:这些做法各自会在哪里坏掉,以及用来判断好坏的分数本身是怎么算出来的。

SFT 在指令-回答数据上继续训练,损失函数与预训练同形,区别只在一个掩码:只有被预测的词元属于回答时才计损失,分母是掩码之和而不是序列长度,EOS 必须计入。学习率之所以必须小,不是因为要训得慢,而是因为 SFT 见到的词元比预训练少四到五个数量级;把它理解成“接上预训练余弦调度的末端”比“比峰值小两个数量级”更可迁移。真正起作用的是数据的质量与提示词多样性,而不是条数,LIMA 的收益递减结论原本就带着“不同时扩大多样性”这个前提。

RLHF 用成对比较训练奖励模型,再用 PPO 优化策略。奖励模型只是把 LM head 换成标量头、用 Bradley-Terry 损失拟合排序,损失曲线从 $\ln 2 = 0.693$ 起步,准确率上限由标注者一致率决定。奖励模型只在末位给一个标量,中间各位的奖励由 KL 惩罚拼出,再经 GAE 折成优势,最后进裁剪目标;裁剪的行为不对称,沿优势方向越界时梯度置零,反方向越界时梯度保留。四个模型同时参与训练,7B 规模合计 252 GB,其中价值模型占 112 GB,这笔账同时是 GRPO 与 DPO 的动机。优化得越远,代理奖励与真实奖励越分道,该监控的是 KL 而不是步数。

RLVR 把奖励来源从奖励模型换成可自动验证的规则,算法骨架不变。GRPO 用组内相对分数替掉价值网络,它的两个分母各带来一类偏差:$1/|o_i|$ 是长度偏差的来源,组内标准差是难度偏差的来源,标准差为零则整组零梯度。熵坍缩、零梯度组、长度爆炸、过长截断四种病理各有对策,排查顺序是先看熵、再看有效样本比例、再看长度与 reward 的联合走势、最后才怀疑数值。

DPO 把 KL 约束下的最优策略反解成奖励,代入 Bradley-Terry 后配分函数相消,得到一个成对分类损失。省下的是奖励模型、rollout 与价值网络,7B 下从 252 GB 降到 126 GB。代价是隐式奖励在数据分布外无约束,失效形态是似然位移、长度偏好放大与确定性偏好下 KL 约束失效;学习率要比 SFT 再低约一个数量级。IPO、SimPO、KTO、ORPO、GSPO 各改了损失里的一项,Constitutional AI 换的则是偏好标签的来源。

参数高效微调冻结基座、只训练低秩增量。$d = 4096$、$r = 8$ 时可训练参数是 6.5 万,原矩阵 1,678 万,占 0.39%;压缩倍数是 $d/(2r)$,常用的 $r = 16$ 只有 128 倍。省下的是梯度与优化器状态那 14 字节,激活一点也不省。QLoRA 的 NF4 加双重量化把有效位宽压到 4.127 比特,65B 基座因此是 33.5 GB,刚好进得了 48 GB 单卡。LoRA 的学习率比全参数微调高约一个数量级。低秩增量擅长重新组织已有能力,不擅长注入新事实,这条判据同时解释了“加在哪些层”和“什么时候该换回全参数微调”。

四种失败模式——灾难性遗忘、对齐税、只学到风格、自造的数据污染——共享同一个性质:训练损失曲线看不见它们中的任何一条。遗忘量随可训练参数与步数按平移幂律增长,没有安全区;连纯良性数据微调一轮都能把 Llama-2-7b-Chat 的有害率从 0.3% 推到 16.1%,所以安全拒答必须进验收清单。对齐税靠把宽分布数据拌回训练来缓解,单纯调大 KL 系数修不好。要看见这些,就必须在训练集与目标域验证集之外,再备一份在微调开始前就固定下来的通用能力回归集,并按配对方式比较:500 道配对题的精度约等于 1,750 道独立题。停在哪里由交换比决定,不由经验轮数决定。

后训练评测本身是一条会改变分数的流水线。对数似然打分给每个选项各算一次序列对数概率,随机基线是 $1/C$,主要噪声来自选项长度与归一化口径;生成式打分贴近真实用法,主要噪声来自解码设置与答案抽取。基座与指令模型常用两套口径,两组分数不可直接相比。要让两次评测可比,题目集合、打分方式、提示模板、解码设置、抽取规则、批大小都得钉死。污染检测分三层:$n$-gram 重叠、嵌入检索加 LLM 判定、换一套没人见过的新题,强度与代价同步递增。

至此,第二部分“训练篇”结束。全章都把“生成”当成现成的一步(8.2 里 rollout 直接交给推理引擎),从未说明对齐后的权重每一步给出的词元概率,究竟怎么变成用户看到的那句话。


📝 发现错误或有改进建议? 欢迎提交 Issue 或 PR。

最后更新于