5.2 知识蒸馏
理解经典知识蒸馏范式、LLM 时代的蒸馏实践(DeepSeek-R1-Distill、Qwen3 思考模式融合),以及蒸馏与 RL 训练的权衡
经典知识蒸馏(Hinton et al., 2015)
知识蒸馏(Knowledge Distillation, KD)的核心思想非常直观:用一个大的教师模型(Teacher)来指导一个小的学生模型(Student)学习。学生不仅要学习正确答案(hard label),还要学习教师对所有选项的置信度分布(soft label)。
软标签中的"暗知识"
考虑一个分类任务。教师模型对一个样本的输出可能是:
| 类别 | 硬标签 | 教师软标签(T=1) | 教师软标签(T=3) |
|---|---|---|---|
| 猫 | 1 | 0.92 | 0.58 |
| 狗 | 0 | 0.05 | 0.23 |
| 兔子 | 0 | 0.02 | 0.14 |
| 鸟 | 0 | 0.01 | 0.05 |
硬标签只告诉学生"这是猫";而软标签还传递了教师的暗知识(dark knowledge)——"这个样本有点像狗,不太像鸟"。这种类间相似性信息对学生模型非常有价值。
蒸馏损失函数
经典蒸馏使用温度(temperature)参数 来软化教师的输出分布:
其中 是 logits(未归一化的输出), 越大,分布越平滑。
学生模型的总损失由两部分组成:
为什么乘以 ? 当温度 升高时,softmax 输出的梯度量级会缩小为 。乘以 是为了补偿这个效应,使蒸馏损失的梯度量级与温度无关,方便调节 。
蒸馏的形式分类
| 蒸馏类型 | 方法 | 教师信号 | 适用场景 |
|---|---|---|---|
| Logits 蒸馏 | KL 散度匹配输出分布 | 全词表的概率分布 | 需要访问教师 logits |
| 特征蒸馏 | 匹配中间层表征 | 隐藏层激活 | 需要访问教师内部结构 |
| 黑盒蒸馏 | 用教师的文本输出做 SFT | 仅文本回复 | 仅需 API 访问 |
| 自蒸馏 | 模型蒸馏自身的推理链 | 自生成的思维链 | 无需外部教师 |
在 LLM 时代,黑盒蒸馏是最常用的形式——因为我们通常只能通过 API 获取大模型的文本输出,无法访问其 logits 或中间层。
LLM 时代的蒸馏实践
DeepSeek-R1-Distill 系列
DeepSeek-R1(2025 年 1 月发布)是一个里程碑式的推理模型。它不仅自身能力强大,还通过蒸馏创建了一系列小模型:
蒸馏方案:将 DeepSeek-R1(671B MoE)的推理能力蒸馏到多个基座模型上。
| 蒸馏模型 | 基座 | 参数量 | AIME 2024 | MATH-500 | GSM8K | 蒸馏数据量 |
|---|---|---|---|---|---|---|
| R1-Distill-Qwen-1.5B | Qwen2.5-1.5B | 1.5B | 28.9% | 83.9% | 83.5% | ~800K |
| R1-Distill-Qwen-7B | Qwen2.5-7B | 7B | 55.5% | 92.9% | 89.7% | ~800K |
| R1-Distill-Qwen-14B | Qwen2.5-14B | 14B | 69.7% | 93.9% | 92.1% | ~800K |
| R1-Distill-Qwen-32B | Qwen2.5-32B | 32B | 72.6% | 94.3% | 93.4% | ~800K |
| R1-Distill-Llama-8B | Llama-3.1-8B | 8B | 50.4% | 89.1% | 87.2% | ~800K |
| R1-Distill-Llama-70B | Llama-3.3-70B | 70B | 70.0% | 94.5% | 94.2% | ~800K |
蒸馏数据的构造方法:DeepSeek 使用 R1 模型在大量数学、代码和推理问题上生成包含完整思维链的回复。这些带有 <think>...</think> 标签的长推理链成为蒸馏数据,学生模型通过 SFT 学习模仿教师的推理过程。
蒸馏的本质:一种特殊的后训练
从后训练的视角看,黑盒蒸馏本质上就是用强模型生成的高质量数据对弱模型做 SFT:
蒸馏 ≈ 数据生成(教师模型 → 高质量回复)+ SFT(学生模型学习这些回复)这解释了为什么蒸馏如此有效——它同时解决了后训练中最关键的数据质量问题。教师模型生成的回复自然具有高质量,包含正确的推理步骤和良好的表达方式。
# 黑盒蒸馏的典型流程
# Step 1: 用教师模型生成蒸馏数据
from openai import OpenAI
client = OpenAI(
base_url="https://api.deepseek.com",
api_key="your-api-key",
)
def generate_distillation_data(prompt):
"""用 DeepSeek-R1 生成带思维链的回复"""
response = client.chat.completions.create(
model="deepseek-reasoner",
messages=[{"role": "user", "content": prompt}],
)
return {
"prompt": prompt,
"thinking": response.choices[0].message.reasoning_content,
"response": response.choices[0].message.content,
}
# Step 2: 收集蒸馏数据
math_problems = [...] # GSM8K, MATH 等数据集的问题
distill_data = [generate_distillation_data(p) for p in math_problems]
# Step 3: 格式化为 SFT 训练数据
def format_for_sft(sample):
return {
"messages": [
{"role": "user", "content": sample["prompt"]},
{"role": "assistant", "content": (
f"<think>\n{sample['thinking']}\n</think>\n\n"
f"{sample['response']}"
)},
]
}
sft_dataset = [format_for_sft(s) for s in distill_data]
# Step 4: 用 SFTTrainer 对学生模型进行微调
# (与标准 SFT 完全相同,只是数据来源不同)蒸馏 vs RL 训练的权衡
DeepSeek-R1 论文中一个重要发现:蒸馏在小模型上的效率远高于 RL 训练。
| 维度 | 蒸馏(Distillation) | RL 训练(如 GRPO) |
|---|---|---|
| 训练效率 | 高(标准 SFT 流程) | 低(需要大量在线采样) |
| 训练稳定性 | 高(监督学习) | 中等(奖励信号稀疏) |
| 能力上限 | 受教师模型制约 | 可能超越教师(探索新策略) |
| 数据需求 | 需要教师模型的输出 | 需要可验证的奖励函数 |
| 适合模型规模 | 1.5B - 14B(小模型) | 7B+(较大模型) |
| 计算成本 | 教师推理 + 学生 SFT | 大量在线采样 + RL 优化 |
蒸馏的局限性:
- 能力天花板——学生模型的能力不可能真正超越教师模型。如果教师在某类问题上犯错,学生也会学到错误的推理模式。
- 风格模仿 vs 能力获得——蒸馏有时只是让学生模型学会了"看起来像推理"的输出格式,但没有真正获得推理能力。
- 泛化性——蒸馏数据的分布有限,学生模型在分布外任务上的泛化可能不如 RL 训练的模型。
DeepSeek 的实验结果表明:
- 对于 1.5B-7B 模型:蒸馏效果远优于直接 RL 训练(小模型难以通过 RL 发展出复杂推理)
- 对于 14B+ 模型:RL 训练有可能发现教师模型没有的推理策略,但需要更多计算资源
- 最佳实践:蒸馏 + RL 的组合——先用蒸馏建立推理基础,再用 RL 进一步优化
Qwen3 的思考模式融合:蒸馏思想的工业级应用
Qwen3 的四阶段后训练流程中,**第三阶段"思考模式融合"**本质上是一种自蒸馏:
Stage 1 — 冷启动 SFT:用长思维链数据训练模型获得初步推理能力
Stage 2 — 推理 RL:用 GRPO 在数学/代码任务上强化推理能力。此时模型是"纯思考模型",始终输出思维链
Stage 3 — 思考模式融合(蒸馏):将 Stage 2 的推理能力"蒸馏"回一个统一模型,使其同时支持 thinking mode(带 <think> 标签)和 non-thinking mode(直接回答)。具体方法是用 Stage 2 模型生成的思维链作为训练数据,与不带思维链的通用数据混合训练
Stage 4 — 通用 RL:对融合后的模型做最终 RL 训练,全面提升各项能力
Stage 2 模型(纯推理)──→ 生成思维链数据 ──→ 与通用数据混合
│
▼
Stage 3 统一模型
├── /think → 带思维链推理
└── /no_think → 直接回答这种"将 RL 训练的能力通过数据方式迁移回统一模型"的方法,正是蒸馏思想在 Qwen3 工业级实践中的体现。
蒸馏在后训练中的定位
将蒸馏放在后训练的整体技术图谱中:
| 后训练方法 | 训练信号来源 | 核心作用 | 蒸馏的角色 |
|---|---|---|---|
| SFT | 人工标注数据 | 教模型说话 | 蒸馏数据可替代人工标注 |
| DPO/RLHF | 人类偏好对 | 教模型选择 | 可用强模型生成偏好对 |
| GRPO/RLVR | 可验证奖励 | 教模型思考 | 蒸馏可传递推理能力 |
| 蒸馏 | 强模型输出 | 能力迁移 | 贯穿所有阶段 |
蒸馏是后训练的"万金油":在数据准备阶段,可以用强模型生成 SFT 数据(如 MAGPIE);在偏好学习阶段,可以用强模型标注偏好对(如 UltraFeedback 使用 GPT-4 评分);在推理强化阶段,可以直接蒸馏教师的推理链。可以说,现代后训练的每一步都或多或少地使用了蒸馏。
性能对比:蒸馏 vs 其他后训练方法
以 Qwen2.5-1.5B 为基座,对比不同后训练路径的效果:
| 方法 | GSM8K | MATH-500 | 训练成本 | 说明 |
|---|---|---|---|---|
| Qwen2.5-1.5B(基座) | ~35% | ~25% | — | 原始预训练模型 |
| + SFT(通用数据) | ~50% | ~35% | $ | 学会了回答格式 |
| + SFT + DPO | ~53% | ~37% | $$ | 偏好对齐小幅提升 |
| + SFT + GRPO(课堂实验级别) | ~55% | ~38% | $$$ | 有限步数的 RL 训练 |
| R1-Distill-Qwen-1.5B(蒸馏) | ~83.5% | ~83.9% | $$ | 从 671B 教师蒸馏 |
蒸馏模型的性能远超同等参数量的 RL 训练模型,但请注意——这个对比并不完全公平,因为蒸馏模型间接利用了教师模型的巨大计算投入。在"单位计算投入"的视角下,蒸馏的效率仍然非常高。
本节小结
- 经典蒸馏通过软标签传递教师的"暗知识",温度参数 控制分布的平滑程度
- LLM 时代的蒸馏以黑盒蒸馏(用教师文本输出做 SFT)为主流,DeepSeek-R1-Distill 系列是代表案例
- 蒸馏 vs RL:蒸馏在小模型上效率更高、更稳定;RL 在大模型上有潜力超越教师
- Qwen3 的思考模式融合是蒸馏思想的工业级应用——将 RL 训练的推理能力蒸馏回统一模型
- 蒸馏贯穿后训练全流程:数据生成、偏好标注、推理能力迁移都可以借助蒸馏