微调与对齐

知识蒸馏是什么?怎么用强模型给小模型造数据?

91学AI·2026/7/26·11 阅读

考察点

蒸馏题分新旧两个世界,面试官想看你两个都知道:经典蒸馏(logits 对齐、温度参数)和应用侧更常用的数据蒸馏(强模型造数据喂小模型)。对大模型场景,重点是后者——因为多数情况下拿不到强模型的 logits。追问常往「温度参数干嘛的」「蒸馏和直接用强模型数据做 SFT 有区别吗」「蒸馏的合规问题」走。

参考答案

蒸馏要解决什么问题

大模型效果好但推理贵、延迟高;小模型便宜快但能力弱。知识蒸馏的目标是把大模型(teacher)的能力迁移到小模型(student)身上,让小模型在特定任务上逼近 teacher,同时保持小模型的部署成本。核心洞察是:teacher 的输出里藏着比硬标签更多的信息——一道分类题,teacher 输出的概率分布(猫 0.7、虎 0.25、车 0.05)里「猫和虎像、和车不像」这层类间关系,是 one-hot 标签里没有的暗知识。

经典蒸馏:logits 对齐

经典做法(Hinton 2015)用 KL 散度让 student 模仿 teacher 的输出分布,引入温度 T 软化分布:

L = α · KL( softmax(z_t/T) || softmax(z_s/T) ) · T² + (1-α) · CE(y, z_s)

T 越大分布越平滑,暗知识暴露得越多,常见取 2 到 5;损失是「软目标蒸馏损失」和「硬标签交叉熵」的加权。除了 logits,还可以对齐中间层(特征蒸馏:让 student 的 hidden states 逼近 teacher 的,通常配一个投影层解决维度不一致)和注意力矩阵。

这条路在大模型时代有个前提:拿得到 teacher 的 logits。自训 teacher(比如公司内部 70B 训 7B)完全可行,开源模型(Qwen、DeepSeek 各尺寸同族)也适合做;但对闭源 API 模型,logits 不可得或只给 top-k,经典蒸馏就施展不开了。

数据蒸馏:现在更常用的形态

应用侧的主流是数据蒸馏:不蒸 logits,直接用强模型的输出当训练数据,对小模型做 SFT。常见三种玩法:

  • 指令数据蒸馏(Self-Instruct 路线):设计种子任务和 prompt 模板,让强模型批量生成 (指令, 回复) 数据,清洗后 SFT 小模型。Alpaca、WizardLM(Evol-Instruct 逐步加难度)都是代表。
  • 推理链蒸馏(CoT 蒸馏):对数学、逻辑类任务,让强模型生成完整推理过程而不只是答案,小模型学「怎么一步步想」。DeepSeek-R1 蒸馏系列是这个路线的标志性案例:用 R1 生成的 80 万条推理数据 SFT Qwen/Llama 小模型,1.5B 的小模型数学能力能超过很多大模型。
  • 偏好/打分蒸馏:让强模型当裁判生成偏好对或质量分,用于小模型的 DPO/RLHF,即 RLAIF。

造数据的工程流程

一套可执行的流水线:明确小模型的目标场景和失败模式 → 设计覆盖这些场景的 prompt 分布(真实业务 query 优先,配比决定能力分布)→ 强模型批量生成,必要时多采样+自一致性投票挑最优 → 过滤:规则层(格式、长度)+ 验证层(代码跑测试、数学对答案)+ 模型层(另一个模型打分拣低质)→ 去重和评测集去污染 → SFT 小模型 → 用 held-out 集对比小模型与 teacher 的差距,badcase 回流补数据,迭代。

两个容易忽视的点:一是分布匹配——蒸馏数据必须贴近小模型线上真实输入分布,拿通用指令集蒸出来的小模型在自家场景照样翻车;二是风格可以定制——造数据时在 prompt 里规定输出格式和口吻,等于零成本给小模型定风格。

边界与风险

能力上,蒸馏适合「缩圈」:在特定任务分布上逼近 teacher,很难让 student 获得 teacher 的全部泛化能力——小模型的容量上限客观存在,全能是小马拉大车。合规上,用闭源 API 的输出训竞品模型通常违反服务条款,商业项目要确认授权边界,自训 teacher 或开许可的模型(注意各开源协议的蒸馏条款)更稳妥。

可能的追问

追问:温度 T 起什么作用,为什么不直接用原始 logits? T 除在 logits 上再做 softmax,T>1 时分布被拉平,原本概率极低的类别也分到可见的概率质量,类间相似度这层暗知识才暴露出来让 student 学。T=1 的原始分布过于尖锐,非目标类的信息趋近于零,蒸馏就退化成了普通监督学习。

追问:数据蒸馏和「拿强模型数据做 SFT」是一回事吗? 技术上就是一回事——数据蒸馏本质就是 SFT,区别在于视角:强调数据的来源和目的是能力迁移,且通常配合目标场景定向构造、多采样择优、可验证过滤这些提纯手段。面试里说出这层等价关系,再补一句「经典 logits 蒸馏在有条件时可以和数据蒸馏叠加」,认知就完整了。

追问:student 能超过 teacher 吗? 在蒸馏任务上偶尔可以局部反超——蒸馏数据经过筛选和验证,等于做了数据层面的去噪,student 学到的分布比 teacher 的原始输出更干净;加上学生还可以在蒸馏数据上再叠加 RL(如 GRPO),推理任务上出现学生超过教师蒸馏版本的情况不稀奇。但泛化能力整体超过 teacher 不现实。

评论 (0)

暂无评论,快来抢沙发吧!

91学AI

© 2026 91学AI · 按岗位学 AI 与大数据. All rights reserved.