ArcLibrary

Knowledge Distillation(知识蒸馏)

让小模型学大模型的「输出分布」 —— 把 70B 的能力压进 7B。

DistillationCompression
核心 · Key Idea

一句话:蒸馏让小模型(student)模仿大模型(teacher)的输出 —— 不止学硬标签,还学完整概率分布。同等参数下蒸馏出的小模型比从零训练强很多。

是什么#

传统训练:    label "猫" → student 损失(一个对的)
KD 训练:    teacher 输出 [0.7 猫, 0.2 豹, 0.05 虎...] → student 模仿这个分布

学完整分布 = 学到了类间关系(猫和豹相似 > 猫和飞机),信息量大得多。

打个比方#

打个比方 · Analogy

传统训练像死记答案:只知道「这道题选 B」。
蒸馏像老师讲思路:B 最有可能、A 也合理但少了细节、C / D 直接错 —— 学生学到的是思考路径

关键概念#

Teacher / Student教师 / 学生
Teacher 通常更大 / 更强,已训练好;Student 待训。
Soft Targets软目标
teacher 完整 softmax 概率(带温度)。比硬标签信息多。
Temperature温度
softmax 除以 T,T>1 让分布更平滑,类间差异显现。
On-policy / Off-policy策略
用 teacher 在 student 自己的输出上打分(更好)vs 在固定数据集上。
Sequence Distillation序列级
让 student 的输出**整体分布**逼近 teacher,而不是逐 token loss。
Self-distillation自蒸馏
Teacher = Student 早期版本,迭代精炼。

三种主流做法#

经典 KD(Hinton 2015)
KL(student || teacher) + α·CE(student, label)。
Sequence-level KD
Teacher 生成大量样本,student 用这些样本做 SFT。最常见。
On-policy 蒸馏(DistillD)
Student 自己产 token,teacher 给反馈。质量更好但贵。

怎么工作#

只更新 student 的参数;teacher 固定。

实操要点#

  • 数据胜于损失:99% 的实战是 teacher 生成数据 → student SFT。"软标签 KL" 在工程上不如多生成 1M 高质量样本。
  • 领域选 teacher:通用问题用 GPT-4 / Claude / DeepSeek-V3 蒸;垂直领域用领域专家模型。
  • 思维链蒸馏:让 teacher 输出带推理过程,student 学整个 CoT。Phi、Orca 系列就是这思路。
  • 拒绝采样:teacher 生成多份 → 自动校验 / 评分 → 留最好的喂 student。
  • 小模型上限:再蒸也不会超过 teacher。别奢望 1.5B 完全等于 70B,但能在某些子任务接近。
  • License 注意:用商用 API 输出训自家模型,多数 ToS 禁止。开源模型(Qwen / DeepSeek / Llama)放宽得多但仍要看条款。

易混点#

Distillation
**改架构(变小)**。
需要训练。
Quantization
**改精度(更省)**。
多数无需训练。

延伸阅读#