跳到主要内容

知识蒸馏

问题

什么是知识蒸馏?如何用大模型训练小模型?

答案

知识蒸馏(Knowledge Distillation) 是将大模型(Teacher)的能力迁移到小模型(Student)的技术。

一、蒸馏方式

方式原理优缺点
数据蒸馏用 Teacher 生成训练数据,SFT Student简单易用,最常用
软标签蒸馏Student 学习 Teacher 的输出概率分布效果更好,但需要 Teacher 的 logits
特征蒸馏Student 模仿 Teacher 的中间层表示效果最好,但实现复杂

二、数据蒸馏实践

# 1. 用 Teacher 模型为种子数据生成高质量回答
def generate_distillation_data(questions: list, teacher_model):
data = []
for question in questions:
response = teacher_model.generate(
question,
temperature=0.7, # 适当的多样性
max_tokens=2048,
)
data.append({
"instruction": question,
"output": response,
})
return data

# 2. 用生成的数据 SFT 训练 Student 模型
# 与普通 SFT 流程相同

三、典型案例

案例TeacherStudent方法
AlpacaGPT-3.5LLaMA-7B数据蒸馏(52K 指令)
VicunaGPT-4LLaMA-13BShareGPT 对话蒸馏
OrcaGPT-4LLaMA-13B推理过程蒸馏
DeepSeek-R1-DistillDeepSeek-R1Qwen/LLaMA推理链蒸馏
Phi-3大模型合成3.8B高质量合成数据
DeepSeek R1 蒸馏

DeepSeek 用 R1 大模型(671B MoE)的推理输出蒸馏到 Qwen-32B、LLaMA-70B 等小模型,蒸馏后的 32B 模型在数学推理上接近原始 671B 模型的能力。这表明推理能力可以通过蒸馏传递

四、蒸馏 vs 微调 vs RAG

维度蒸馏微调RAG
目标压缩大模型能力适应特定任务注入外部知识
数据Teacher 生成人工标注知识库文档
成本中(调用 Teacher)高(训练)低(无需训练)
延迟低(小模型推理快)取决于模型大小高(检索+生成)

常见面试问题

Q1: 蒸馏出来的小模型能超过 Teacher 吗?

答案

  • 通常不能在整体上超过 Teacher
  • 但在特定任务上可能接近甚至超过(因为蒸馏数据更集中)
  • DeepSeek R1 蒸馏的案例表明,推理链蒸馏可以让小模型获得远超同尺寸模型的推理能力

Q2: 蒸馏有什么法律风险吗?

答案: 许多商业模型(如 GPT-4、Claude)的使用条款禁止用其输出训练竞品模型。需要注意:

  1. 检查 Teacher 模型的 License 和使用条款
  2. 开源模型(LLaMA、Qwen)通常允许蒸馏
  3. 商业模型的 API 输出可能有限制

相关链接