调教层 · 第 17 / 25 课 · 从会补全到会听话

SFT:教会补全机器说人话

回放 + 真计算 复用权重(首次见下载提示 28.1MB)+ 仅预计算数据 ~2KB 建议 15–30 分钟

学完这课你能

  1. 说清 base 模型是「补全机器」:它不回答问题,它续写文本。
  2. 理解 SFT 怎么教:示范对话(prompt→回答)成批喂入,只在回答段上算损失。
  3. 建立「格式与语气是练出来的」体感,并知道数据质量 > 数量。

图书馆里泡大的书虫:一屋子的书都背下来了,你随便问,他都能背出相关的一段——可让他站上客服台,他连一句「您好」都说不利索。上岗前得培训。SFT,就是模型的岗前培训。

戴圆眼镜的书虫坐在书堆上,对着一张客服耳麦和一叠话术卡片发呆
类比 书虫=base 模型,有知识没话术;话术卡片=SFT 示范数据,教的是接待格式。

01会背书 ≠ 会接待

先做个实验。你问 base 模型:「中国的首都是哪里?」——按人的预期,答案该是「北京」。但它很可能续出:「日本的首都是哪里?韩国的首都是……」。先别笑,注意它干了什么:它没在答题,它在续写一段它见过的文本。这串字像题库、像试卷、像网上某页 FAQ——对补全机器来说,「问题」后面接「更多问题」,是天经地义的续写方向。

这不是它坏了。预训练(第 12–16 课)给它的全部任务就是「猜下一个词」,它把这件事练到了极致——只是没人教过它「问题来了要接答案」。下面实验台里有一段真 base 的补全回放,你亲眼看看这台「题库复读机」。

02示范对话是教材

SFT(Supervised Fine-Tuning,监督微调)的教法朴素到像带实习生:把成千上万条示范对话喂给它——每条就是一个 prompt 配一段写好的回答。问天气的、问日程的、自我介绍的,一遍遍示范「问题该接什么样的回答」。

就像小学生跟着老师的示范句一行行跟读:老师写一句,学生抄一句,慢慢就有了「话该这么说」的手感。

小学生跟着老师的示范句一行行跟读,老师写的句子与学生抄的句子同色对齐
类比 老师示范句=SFT 数据,学生跟读=模型模仿;模仿的笔迹只落在「回答」上。

03只在回答上算 loss

教材里藏着一个关键细节:训练时,损失只在回答段上计算。「问:北京天气怎么样」这半截是提示,不是目标——我们要它学会的是「答:」之后怎么写。实现上给每个 token 挂一个 0/1 掩码(mask):回答段为 1,照常算交叉熵;提问段为 0,损失直接清零。要是不 mask 会怎样?模型会分心去学「怎么出题」——那它本来就会。

整条数据流长这样:

base 这条路(没教) prompt 问:首都在哪? base 模型 只管续写 补全:继续出题 韩国的首都是…… SFT 这条路(岗前培训) 示范对话 prompt+回答 回答段 mask=1 提问段 mask=0 只在回答上算 loss → 更新参数 同题输出对照 续写机器 vs 会答「答:」的模型 学会格式 老样子续写
结构 两条路:base 拿到问题继续出题;SFT 数据带掩码,只在回答段算损失。

04真训一遍,看格式长出来

这一步不用信我。实验台里有一只字符级微模型(几万颗参数,第 13 课同款),教材是几十对模板问答。你点「开训」,它 10 秒左右跑完训练——损失只按回答段统计。训完让它答同一道题,你会看到输出从「胡乱续写」变成「给出答:开头的回答」。格式,就是这么长出来的。

对照播放器里还有一组同题对照:左边是真 base 的补全(真实录制),右边是 SFT 想教会的那种回答。

05质量 > 数量

既然 SFT 是带实习生,教材的质量就比厚度重要。LIMA(2023)那篇著名的实验用一句话概括:一条精心手写的示范,常常赛过一千条网上捡的——千条级的高质量示范,就能训出像模像样的对话模型。脏数据教脏格式:示范里阴阳怪气,模型就学阴阳怪气。你在下一课还会看到类似的道理:喂什么,学什么。

顺手记一个事实:SFT 之后模型有时会「背答案」——把示范里的回答原样端出来。这不是理解,是模仿。模仿得足够好,用起来就够顺手——绝大多数时候,这已经够了。

交互实验:对照播放器 + 微型 SFT 实验台

引擎加载中…

组件一「同题对照播放器」:左栏是 pythia-14m base 的真实补全回放(2026-10-14 本地真跑录制,采样种子见页尾注释),右栏是 SFT 想教会的教学示范回答;「真 base 来一发」可用真权重现场补全(首次需确认下载 28.1MB)。组件二「微型 SFT 实验台」:浏览器现场真训练一只字符级微模型(loss 只按回答段统计),训后现场生成前后对照——玩具模型学的是格式,不是知识。

组件挂载点 · 对照播放器与微型 SFT 实验台需要 JavaScript