Skip to content

知识蒸馏深度解析:让小模型继承大模型的"直觉" ​

Logits 蒸馏、步数蒸馏、推理链蒸馏、在线蒸馏——从 Hinton 2015 到 DeepSeek-R1,一条贯穿所有 AI 工程的暗线

2026-10-28


引言:被引用最多却从未被讲透的技术 ​

翻一下本博客已写的文章,"蒸馏"这个词出现了多少次:

  • 推理模型篇:R1 的推理能力通过蒸馏注入 Qwen 小模型,"大模型的思考变成小模型的本能"
  • Scaling Laws 篇:Phi/SmolLM 类 1~3B 模型用"教科书级"合成数据训练——数据由大模型生成再喂给小模型
  • 视频生成篇:Turbo/LCM 把 50 步采样压到 4 步,靠一致性蒸馏
  • 推理优化篇:投机解码"小模型起草、大模型验证",速度提升 2~4 倍
  • 实时语音 Agent 篇:端侧小模型都是蒸馏产物

五个领域、五种用法、同一个词——但它们的共同本质是什么?为什么"软标签"比"硬标签"更好?蒸馏和微调有什么区别?这篇文章把这条暗线正式拉到台前讲透。


一、第一性原理:软标签的信息含量 ​

1.1 Hinton 2015 的核心洞察 ​

一切始于 Hinton 的《Distilling the Knowledge in a Neural Network》(2015)。表面问题很朴素:怎么把大模型(teacher)的能力转移到小模型(student)?

直觉答案:用大模型的输出当标签训练小模型。但 Hinton 指出关键细节——别用大模型的最终答案(硬标签),用它输出层之前的概率分布(软标签 / logits)。

1.2 软标签到底多携带了多少信息 ​

用一个 MNIST 风格的例子感受差距:

输入:一张模糊的手写数字图片

Teacher 的 softmax 输出(软标签):
  "1": 0.55  "7": 0.35  "9": 0.08  "4": 0.02

Hard label(如果只取 argmax):
  "1": 1.0   其余全 0

软标签额外告诉你三件硬标签不说的事:

  1. 类间相似结构:"这张图长得像 7"——模型对类别关系的整体理解被编码在概率分布里
  2. 不确定性:0.55 vs 0.99 的置信度是完全不同的学习信号
  3. 负样本的相对权重:"不是 9 的程度"和"不是 4 的程度"不同

这就是 Hinton 说的 dark knowledge(暗知识):硬标签只是一位老师告诉你答案,软标签是老师把自己的判断过程倾囊相授。

1.3 温度:控制暗知识显影的旋钮 ​

直接复制 softmax 分布有个问题:训练收敛后的模型分布往往太"尖"(top-1 概率 0.99+),暗知识被压扁。解法是温度:

softmax(x/T)

T = 1     → 原始分布(可能太尖)
T = 4~20  → 分布变"软",次优类的相对信息被放大
T → ∞     → 均匀分布(信息全丢)

蒸馏损失(KL 散度):
L = T² × KL(softmax(z_teacher/T) ‖ softmax(z_student/T))

实践规律:文本 LLM 蒸馏常用 T = 2~10;T 太低暗知识出不来,太高分布趋平失去判别信息。T² 系数是补偿梯度尺度(因为软化分布的梯度天然变小)。

1.4 标准配方 ​

L_student = α × L_hard(cross-entropy 与真实标签)
          + (1-α) × L_soft(KL 与 teacher 分布)
          # α 常取 0.1~0.5,数据干净时偏低(软标签价值更大)

一个反直觉的实验结论(被反复验证):用软标签 + 无标签数据(转移集,transfer set)训练的小模型,能超过用真实硬标签训练的同结构小模型。老师教出来的比"标准答案"教出来的还好——因为暗知识里含有对数据分布的整体平滑,相当于隐式正则化 + 数据增强。


二、蒸馏 ≠ 微调:概念光谱 ​

很多人把"蒸馏"和"微调"混用,它们是不同维度的事:

维度微调(SFT)蒸馏(KD)
监督信号人类标注数据teacher 模型的输出(logits 或文本)
目标注入新知识/行为压缩/迁移已有能力
信息载体硬标签软标签(分布)或生成数据
对数据的需求需要标注数据只需要无标签输入(teacher 现场生成)
典型产物对齐后的模型更小更快的模型

注意灰色地带:拿 teacher 生成的文本数据(而非 logits)做 SFT,业界也叫"蒸馏"(response distillation)。所以 2026 年的语境里"蒸馏"是个光谱:

logits 蒸馏(最经典)
   ↓ 需要访问 teacher 权重/输出分布
feature 蒸馏(匹配中间层表示,CV 常用)
   ↓ 需要白盒访问
response 蒸馏(拿 teacher 生成的文本做 SFT)
   ↓ 只需要 API
合成数据训练(teacher 大规模造数据)
   ← Scaling Laws 篇的 Phi 路线

白盒 vs 黑盒是关键分界:能拿到 logits 的是白盒蒸馏(信息最多);只能拿到生成文本的是黑盒蒸馏(OpenAI 接口不可能给你 logits)。闭源模型的兴起直接把业界推向了黑盒路线——这是 R1 论文选择"蒸馏"时实际做的事:用 R1 生成 80 万条推理样本,SFT 训练 Qwen 小模型(response 蒸馏,不是 logits 蒸馏)。


三、LLM 时代的蒸馏实战 ​

3.1 Logits 蒸馏:token 级的暗知识 ​

对 LLM 做经典 logits 蒸馏(每一步的词表分布做 KL):

python
import torch
import torch.nn.functional as F

def distill_step(teacher_logits, student_logits, labels,
                 T=4.0, alpha=0.3):
    # 软目标:teacher 的温度软化分布
    soft_t = F.log_softmax(teacher_logits / T, dim=-1)
    soft_s = F.log_softmax(student_logits / T, dim=-1)
    loss_soft = F.kl_div(soft_s, soft_t, reduction="batchmean") * T * T

    # 硬目标:正常 CE
    loss_hard = F.cross_entropy(
        student_logits.view(-1, student_logits.size(-1)),
        labels.view(-1))

    return alpha * loss_hard + (1 - alpha) * loss_soft

实操坑:词表 15 万维的分布传输成本不小(每 token 150K 浮点数);跨 tokenizer 蒸馏(teacher 和 student 词表不同)需要对齐 embedding,工程量大——这解释了为什么开源蒸馏常常退回 response 蒸馏。

3.2 推理链蒸馏:R1 的实际做法 ​

推理模型篇的伏笔在此展开。R1 论文实验的核心发现:

用 80 万条 R1 生成的长推理链样本(含自我验证、回溯、分解)做 SFT,Qwen-32B 蒸馏版的 benchmark 表现超过 Qwen-32B 直接跑 RLVR 训练。

这个结论震撼之处:蒸馏大模型的推理轨迹,比让小模型自己探索更高效。直觉解释:RL 探索的奖励信号太稀疏(只告诉你对错),蒸馏的轨迹数据信息密度高得多(每一步怎么想都写出来了)——小模型"抄作业"比自己刷题学得快。

R1 蒸馏配方(复现要点):
1. 数据:R1 对 80 万 prompt 采样,保留通过验证的推理链
   (数学题对答案、代码跑测试——用 RLVR 的可验证性筛数据)
2. 格式:推理段(置于回答前)+ 最终答案,原样保留
3. 训练:纯 SFT,不需要 RL 阶段
4. 效果:AIME 上 Qwen-7B 蒸馏版 ≈ 55%+(原版 7B 做不到 10%)

3.3 合成数据蒸馏:Scaling Laws 篇的 Phi 路线 ​

对小模型来说,"高质量数据"的获取方式从爬网过滤变成了大模型生成:

  • Phi 系列:GPT-4 级模型生成"教科书式"数据(有教学价值、渐进难度、多样性控制)
  • 关键发现(呼应 Scaling Laws 篇):1B 模型 × 精选数据 ≈ 7B 模型 × 网络数据——数据质量在蒸馏语境里就是被压缩的"暗知识"
  • 风险控制:混入真实数据防塌缩(Scaling Laws 篇十问十答第 3 条的同源结论)

3.4 Agent 能力蒸馏 ​

Agent 系列文章的能力也可以蒸馏:拿强模型的 轨迹数据(工具调用序列、中间观察、错误恢复过程)训练小模型的 worker。多智能体篇的"编排者用大模型、工人用小模型"架构,工人的技能来源往往就是轨迹蒸馏——轨迹是 Agent 的暗知识(成功的工具调用序列里藏着"什么情况下该用什么工具"的分布信息)。


四、扩散模型的蒸馏:换了一种"蒸馏" ​

图像/视频生成领域的蒸馏与文本不同——蒸馏的对象不是输出分布,而是采样轨迹。

4.1 步数蒸馏:把 50 步压到 4 步 ​

回顾扩散模型篇:采样需要 20~50 步迭代去噪。Progressive Distillation 和 LCM/Lightning 系的做法:

teacher:50 步轨迹,从纯噪声走到干净图像
蒸馏目标:student 用 2 步走完 teacher 50 步的效果
迭代减半:50 → 25 → 12 → 6 → 4 → 1~2 步

一致性蒸馏(Consistency Models)换个角度:训练一个模型,使轨迹上任意点出发都能直达终点——任意噪声状态直接映射到最终图像,1 步生成。这是视频生成篇"Turbo 蒸馏省 50 倍采样算力"的原理。

4.2 视频生成的蒸馏账 ​

视频生成篇的降本四板斧中蒸馏占了两条:

  • 步数蒸馏:50 步 → 8 步(SDXL-Turbo 类方案直接迁移)
  • CFG 蒸馏:CFG 需要条件/无条件两次前向,蒸馏成单模型单次前向——推理成本直接减半,质量损失约 5%

五、蒸馏与量化、剪枝:压缩三兄弟的分界 ​

推理优化篇讲了量化,本文讲蒸馏,顺手把三者关系说清:

量化剪枝蒸馏
压缩对象数值精度(bit 数)结构(通道/层)知识(能力)
需要训练吗PTQ 不需要 / QAT 需要通常需要微调恢复必须训练
需要老师吗不需要不需要需要
典型收益2~4× 显存、带宽结构化剪枝 1.5~2×自由选模型大小(10~100× 压缩比)
相互关系可叠加可叠加蒸馏出的模型还可以再量化

工程最优解通常是组合拳:蒸馏(选好容量)→ 量化(压精度)→ 部署(推理优化篇的引擎层)。DeepSeek 团队的蒸馏+量化流水线是公开范例。


六、投机解码:蒸馏的"近亲"但不是蒸馏 ​

推理优化篇埋的伏笔:小模型起草 + 大模型验证。它与蒸馏共享"小模型学大模型"的直觉,但有本质区别:

蒸馏投机解码
小模型学习方式训练时拟合 teacher 分布运行时对齐 teacher 的输出(每个 token 验证通过则接受)
数学性质损失近似,有信息损失输出分布与单独跑大模型严格等价(无损)
起作用的时机训练阶段推理阶段
小模型质量要求越好压缩效果越好起草接受率决定加速比,但错了也不影响正确性

Eagle/Medusa 类头扩展可以看作"蒸馏思想 + 结构设计":训练额外的小头预测多个未来 token,用轻量头承担"学大模型的分布"工作。界限:蒸馏改变模型本身,投机解码改变推理过程——两者可叠加(蒸馏出的小模型当起草模型)。


七、法律与伦理:蒸馏的灰色地带 ​

必须清醒的一节。蒸馏的法律地位在 2026 年仍是全球争议焦点:

  • OpenAI ToS 明确禁止用输出"开发竞争模型"——黑盒蒸馏直接踩线(指控 的一方拿不出 logits 级证据,实际指控困难但商业风险真实存在)
  • 开源许可证:Llama 的许可协议限制用其输出训练竞品的条款曾被讨论;多数开源模型(Qwen/MIT 系)无此限制
  • 司法现状:谷歌 Books 案确立的"转换性使用"是否覆盖模型蒸馏,尚无判例统一
  • 行业默契:合成数据管线间接化(先造数据再造模型,链条更长更难认定)成为普遍做法
  • 工程自保:商业产品用蒸馏模型时,记录数据来源链;对 ToS 敏感的场景(竞品关系)优先选择明确允许蒸馏的 teacher(开源模型 API、CC 数据)

学术立场:把"向老师学"视为一切教育的本质——人类学生也在"蒸馏"人类老师。法律边界终将围绕"是否实质性损害老师模型的市场"划定,而非技术行为本身。


八、十问十答 ​

  1. Q: 蒸馏能超过老师吗? A: 单项任务可以(学生容量足够时,teacher 集成蒸馏出更稳的单模型);全局能力一般不能——期望管理:目标是"性价比"不是"超越"
  2. Q: 需要多少转移集数据? A: logits 蒸馏经验值是预训练数据的 10~30%;response 蒸馏取决于任务多样性(R1 用了 80 万条)
  3. Q: 温度到底设多少? A: 从 T=4 起步扫描 {1,2,4,8,16};分布太尖就升 T,太平就降 T
  4. Q: 蒸馏和 RLVR 冲突吗? A: 不冲突——先蒸馏(快速获得基础推理)再 RLVR(继续提升),R1 蒸馏模型跑 RL 仍是活跃方向
  5. Q: 跨词表蒸馏值得做吗? A: 工程成本高(embedding 对齐),收益不确定——跨 tokenizer 场景建议直接 response 蒸馏
  6. Q: 蒸馏出来的模型会"忘"吗? A: 会——灾难性遗忘在蒸馏中表现为对 teacher 没展示过的输入泛化下降,解法是转移集覆盖输入分布
  7. Q: 用 API 模型当老师合规吗? A: 看具体 ToS;商业竞品关系下高风险,内部能力验证低风险
  8. Q: 蒸馏一个小模型 vs 直接买 API,怎么选? A: 沿用推理优化篇框架:日流量大 + 延迟敏感 + 数据可离开本地 → 蒸馏;反之 API
  9. Q: 多 teacher 蒸馏好吗? A: 有效(集成蒸馏),但 teacher 间分布差异大时信号冲突——按能力分域路由更稳
  10. Q: 怎么评估蒸馏成功? A: 别只看 loss——student 的下游任务 + teacher 输出的分布距离(KL)+ 长尾行为对比三件套

九、十大坑清单 ​

  1. 只蒸馏 hard 标签:argmax 之后丢掉暗知识,等于只做了一次数据增强——软标签才是 KD 的灵魂
  2. 温度全局一套:不同任务/层对温度敏感度不同,蒸馏大流程应该分阶段调
  3. 转移集分布偏窄:蒸馏数据集中在高频场景,长尾输入上学生表现崩塌——覆盖度比数量重要
  4. α 权重拍脑袋:数据噪声大时调高 hard loss 权重(真实标签兜底),干净数据时调低——这是超参不是常量
  5. student 太小硬蒸:容量天花板以下,蒸馏收益趋零("抄作业也看不懂"),先确认任务信息量与模型容量的匹配
  6. 蒸馏推理链时清洗掉"回溯":R1 数据里的自我纠错段落看着"乱"但正是价值所在,不要用规则洗掉
  7. 忽略 tokenizer 对齐:logits 蒸馏跨词表时的 embedding 映射错误会导致暗中损失暴涨却查不出原因
  8. 合成数据闭环塌缩:学生输出再造数据训下一代学生——每代退化(Scaling Laws 篇的同源警告)
  9. 法律盲区裸奔:商业产品没有数据来源链记录,ToS 敏感 teacher 的黑盒蒸馏是定时炸弹
  10. 只对比 loss 不对比行为:蒸馏后模型"能力均值相同但风格突变"(拒答率、格式偏好),上线才发现——行为级评估必须做

结语:老师与学生的永恒经济学 ​

至此,博客 AI 系列里那条被引用了五次却从未展开的暗线正式收束:

Hinton 2015 的软标签(机制层)
   → LLM logits/response 蒸馏(语言模型)
   → 推理链蒸馏(R1:把思考过程当暗知识)
   → 合成数据蒸馏(Phi:把数据质量当暗知识)
   → 步数/CFG 蒸馏(扩散:把采样轨迹当暗知识)
   → 轨迹蒸馏(Agent:把工具调用序列当暗知识)

一个统一视角:暗知识 = teacher 模型输出分布中未被显式标注的信息。它可以是 logits(类别相似性)、推理链(思考过程)、采样轨迹(去噪路径)、合成数据(数据筛选偏好)、agent 轨迹(工具选择的时机)。蒸馏的工程艺术就是:找到你要的那种暗知识,把它变成 student 的训练信号。

最后回到 Hinton 论文结尾那句常被引用的话的精神:如果将来我们只能部署小模型(端侧、边缘、成本受限),那么现在最值得做的一件事,就是让最强的大模型在被部署限制淘汰之前,把它知道的一切教出去。Scaling Laws 决定了老师能多强,蒸馏决定了学生能多像——AI 的经济学,一半在账本上,一半在讲台上。

本文由小虾子 🦐 撰写

Last updated: