Day 23 · 后训练第一步
SFT:把「接龙狂魔」调教成「听话助手」
刚预训练完的大模型是一个满腹经纶的“疯子”:你问它「北京的首都在哪?」,它可能会接着往下编「第二题:法国的首都在哪?」。要让它懂得「我是用户,你是助手,你要听懂指令并回答」,就需要经历监督微调(SFT,Supervised Fine-Tuning) 。今天看清 SFT 的本质——它不是在学新知识,而是在给模型戴上对话面具。
学完你能回答
为什么预训练基座模型不会主动回答问题?
学完你能回答
什么是「表面对齐假说」(LIMA 核心论断)?
学完你能回答
SFT 训练时为什么只对回答计算损失(Loss Masking)?
1 起点:这些你早就会了
SFT 的角色转变,就像刚毕业的博士生进入职场进行「岗前培训」:
你已经会的 AI 世界里对应的东西
博览群书但不懂职场礼仪的书呆子 Base 模型(预训练基座) :懂全世界的知识,但只会盲目自回归补全文本
新员工培训指南:学习「如何礼貌回答客户咨询」 SFT 指令数据集 :由高质量【Instruction / Input / Output】组成的示范问答
背台词只要背自己的,考官的台词不用背 Loss Masking :用户 Prompt 处的交叉熵损失置为 0,只对 Assistant 回复求导
新员工的本事在大学里就学完了,入职培训只教职场规矩 表面对齐假说 :能力在预训练已定型,SFT 只教交互格式与语气
老师傅把完整工作流程示范一遍,录下来给徒弟照着学 数据轨迹合成 :让领域专用的「老师傅模型」示范解题全过程,录成示范样本
学霸只要做 100 道高质量例题就能融会贯通 少而精原则 :几千条高保真精准对话数据,远胜几百万条低质爬虫数据
2 预训练模型的「接龙怪圈」与 SFT 对齐
预训练的目标是无差别预测互联网上的下一个 token 。如果你在网页上看到「请写一首关于春天的诗」,后面很可能跟着「请写一首关于秋天的诗(这是一张试卷)」或者「作者:张三(这是一篇作业)」。
SFT 做了什么?
SFT 使用成千上万条标准格式的对话数据:
<|user|>请写一首关于春天的诗<|end|><|assistant|>春风拂绿柳,花开满庭芳……<|end|>
通过在这些高质量示范样本上微调:
• 模型迅速建立起了
特殊的角色感知(Role Playing) ;
• 它明白了只要出现
<|user|>,自己就必须扮演专业、诚恳、有条理的 AI 助手,在
<|assistant|> 后面输出解答,并在回答完毕时主动吐出结束符
<|end|> 停机。
严格来说 ,真实的岗前培训多少也会教点新技能,而按表面对齐假说(下一节就讲),SFT 几乎不给模型灌输新知识——它主要是把预训练已有的能力「格式化成」对话行为。而且这张「面具」是直接写进参数里的,一旦训完就摘不下来。
3 表面对齐假说(Superficial Alignment Hypothesis)
Meta 在著名论文 LIMA(Less Is More for Alignment)中提出了一个轰动业界的论断:模型的绝大部分能力与世界知识在预训练阶段就已经彻底学完了,SFT 阶段几乎没有教会模型任何新知识!
LIMA 核心论断:SFT 只是在调教交互风格
SFT 的作用,仅仅是教会模型如何把预训练里学到的知识以符合人类习惯的「问答格式」提取出来 。
• 只需要 1000 条人工精心打磨的极高水准问答,模型就能表现得像一个全能助手;
• 盲目塞入几百万条充满拼写错误、逻辑混乱的垃圾 SFT 数据,反而会严重损伤基座模型固有的推理和常识能力(产生遗忘与幻觉)。
4 Loss Masking:为什么只对回答计算梯度?
在 SFT 训练代码中,有一个关键的工程细节:Prompt 部分不计算 Loss(Loss Masking) 。
SFT 训练中的 Loss Masking 机制
Prompt 区域的 token 标签设置为 -100 忽略损失,仅对 Assistant Response 部分计算梯度
SFT 训练的 Loss Masking 掩码机制
User Prompt 区域
Label = -100 (Loss Mask = 0)
不计算损失,不强求模型背诵用户问题
Assistant Response 区域
Label = Target Token (Loss = CE)
正常计算交叉熵梯度,学习优质回答
图 23.1:SFT 的 Loss Masking。 模型不需要浪费参数去背诵千奇百怪的用户提问,只需专注优化回答的准确度。
5 面试视角
面试视角 · 高频考点
面试官可能会问:「什么是 SFT(监督微调)?它与预训练的关系是什么?为什么 SFT 数据讲究『少而精』?」
八股答 「SFT 是用人工标注的高质量问答数据微调模型,让它学会遵守指令。表面对齐假说认为知识在预训练就学完了,SFT 只是激发交互格式,所以数据少而精比海量低质数据更好。」——回答非常完整,若能点出 Loss Masking 与幻觉风险则更完美。
本课答 「核心是知识沉淀与行为对齐(Behavioral Alignment)的边界分工 :① 本质 :预训练以绝大部分算力将世界知识和推理逻辑压缩进参数空间,但输出未受约束;SFT 通过注入带有特殊角色标记(如 <|user|>、<|assistant|>)的示范样本,建立单向指令遵循与多轮对话行为分布;② 表面对齐假说(LIMA) :SFT 并未引入新的先验知识,而是调校回答的格式、语气与结构。低质噪声 SFT 数据会破坏预训练已学成的隐式概率流并引发严重幻觉;③ 工程细节 :SFT 训练时对 Prompt 输入执行 Loss Masking(标签置 -100),仅对模型输出的 Response 计算交叉熵损失,保证了梯度更新完全集中在回答生成的质量与格式规范上。」
6 映射到原文:K3 报告 §4.1.1
K3 原文(§4.1.1 监督微调)
「SFT 阶段为后续 RL 阶段建立高质量的冷启动策略。在此前 Kimi 模型 SFT 管线的基础上,我们扩展了 Kimi K3 的 SFT 数据集,大幅拓宽了对复杂智能体任务的覆盖。具体而言,我们使用 Kimi 上一代系列中的领域专用模型合成数据轨迹,随后进行多阶段验证与人机回环(human-in-the-loop)标注。」
逐词翻译:
「冷启动策略」 :RL(强化学习,明天 Day 24 讲)相当于让新员工直接在真实客户身上练兵,得先有一套像样的工作习惯打底——SFT 训出的模型就是这套「打底习惯」,行话叫冷启动。
「领域专用模型合成数据轨迹」 :训练教材不全靠人手写,而是让上一代 Kimi 模型里各领域的「老师傅模型」亲自示范干活(比如调用工具完成一个任务的全过程),把过程录下来当示范样本——正是锚点表里那一行。
「多阶段验证与人机回环标注」 :录下来的教材要层层质检:先自动验证,再由人抽查标注(human-in-the-loop 就是「人留在流程里」),不合格就淘汰。这就是今天「少而精」原则的工业级落地。
Label=-100
PyTorch 中忽略 Prompt 损失的标志
进阶小注: K3 从 SFT 阶段起就同步做量化感知训练(QAT) ——训练时就把低精度(权重 MXFP4、激活 MXFP8)带来的误差算进去,让模型提前适应部署时的量化环境,避免「训练时高精度、上线后掉精度」。MXFP4 / MXFP8 是低精度数值格式,知道有这个词即可(详见报告 §4.1.4)。
7 自测题(先自己答,再点开看解析)
Q1 为什么未经 SFT 的 Base 模型很难直接当成聊天机器人使用?
解析: Base 模型的目标只是盲目补全后续文本,它不知道自己处于「问答交互」模式,遇到问题往往会续写出更多问题、虚构对话或引用试卷排版。
Q2 什么是「表面对齐假说」?
解析: 该假说认为大模型的世界知识和绝大部分能力在预训练时已基本定型,SFT 只是教会模型学习与人类交互的特定风格、格式与指令遵循子分布。
Q3 为什么 SFT 训练时要把 Prompt 部分的损失 Mask 掉(设为 -100)?
解析: 因为模型的目标是学会「根据输入产生优质回答」,而不是「去预测用户会问什么奇怪的问题」。Mask 掉 Prompt 避免了无意义的梯度震荡。
Q4 SFT 的示范答案是怎么造出来、又怎么筛出来的?
解析: 先用上一代系列里的领域专用模型合成数据轨迹(让更强的「老师模型」把解题过程完整走一遍),再经过多阶段验证与人机回环标注——机器先自动校验,人再抽查把关,只有高质量的轨迹才进 SFT 训练集(报告 §4.1.1)。
Q5 如果 SFT 训练数据包含了大量错误的事实,会导致什么严重后果?
解析: 会导致模型破坏预训练中形成的真实知识概率分布,在面对类似问题时过度自信地编造谎言,引发严重的幻觉(Hallucination)。
明天 · Day 24强化学习 RL:深度推理与长链条思考的觉醒 从 PPO、GRPO 到推理力度 max,为什么强化学习能让大模型学会「慢思考」和自发纠错?
进入 Day 24 →