跳转至

大模型蒸馏

什么是模型蒸馏

模型蒸馏是指:

用一个能力更强的大模型 Teacher,
去训练一个更小、更便宜、更快的 Student,
让 Student 尽可能模仿 Teacher 的能力。

核心目标不是让小模型完全等于大模型,而是在特定任务上尽量接近大模型效果,同时降低部署成本。

为什么要做蒸馏

主要目的:

  1. 降低推理成本
  2. 降低显存占用
  3. 提高推理速度
  4. 方便私有化部署
  5. 让小模型适配特定业务场景
  6. 把大模型的任务能力迁移给小模型

典型场景:

  • 大模型效果好,但太贵、太慢、太难部署;
  • 小模型便宜、快、可控,但原始能力不足。

这时可以用大模型生成高质量训练数据,训练小模型。

蒸馏中的角色

Teacher Model:教师模型
能力强,通常是大模型,例如 GPT、Claude、DeepSeek-R1、Qwen-72B。

Student Model:学生模型
参数更小,部署成本更低,例如 Qwen-7B、Qwen-14B、Llama-8B。

Distillation Data:蒸馏数据
由 Teacher 生成或标注的数据,用来训练 Student。

常见蒸馏方式

响应蒸馏

让 Teacher 针对问题生成答案,然后用这些问答数据训练 Student。

输入:用户问题
Teacher 输出:高质量答案
Student 学习:同样的问题应该如何回答

适合:

客服问答RAG 回答风格代码解释领域问答结构化输出

这是最常见、最容易落地的蒸馏方式。

过程蒸馏

不只学习最终答案,还学习 Teacher 的推理过程、解题步骤、工具调用过程。

输入:复杂问题
Teacher 输出:分析步骤 + 最终答案
Student 学习:如何一步步推理

适合:

数学推理
代码推理
复杂任务拆解
Agent 规划
工具调用

注意:过程数据必须高质量,否则会把错误推理也教给小模型。

偏好蒸馏

用 Teacher 或人工判断多个答案哪个好,再训练 Student 偏向更好的答案。

同一个问题:
答案 A:好
答案 B:差

Student 学习:更偏向 A,远离 B

适合:

DPO
ORPO
RLHF
回答风格优化
拒答边界优化
减少幻觉

Logits 蒸馏

让 Student 学习 Teacher 输出 token 的概率分布。

Teacher 不只告诉 Student 正确答案,
还告诉 Student 每个 token 的概率倾向。

优点:

信息量比普通标签更丰富

缺点:

需要访问 Teacher 的 logits
大多数闭源 API 不提供
工程复杂度更高

在开源模型之间蒸馏时更常见。

特征蒸馏

让 Student 学习 Teacher 中间层的 hidden states、attention 或特征表示。

适合:

同架构或相似架构模型
压缩专用模型
研究型训练

缺点:

工程复杂
对模型结构依赖强
LLM 业务蒸馏中不如响应蒸馏常用

大模型蒸馏的常用流程

1. 明确目标任务
   例如客服、RAG、代码、数学、抽取、Agent。
2. 准备问题集
   包含真实业务问题、边界问题、失败样本。
3. 使用 Teacher 生成答案
   生成高质量回答、推理过程、工具调用轨迹。
4. 清洗蒸馏数据
   去掉错误、幻觉、重复、格式不合格的数据。
5. 构造训练集
   转成 SFT、DPO 或工具调用训练格式。
6. 训练 Student
   常用 SFT、LoRA、QLoRA、DPO。
7. 离线评估
   与原始 Student、Teacher、线上模型对比。
8. 灰度上线
   小流量验证效果、成本和延迟。
9. 继续回流线上反馈
   将失败样本加入下一轮蒸馏。

蒸馏数据最重要

蒸馏的效果主要取决于数据质量,而不是数据数量。

高质量蒸馏数据应具备:

  1. 问题真实
  2. 答案正确
  3. 推理合理
  4. 格式统一
  5. 覆盖核心场景
  6. 覆盖边界场景
  7. 没有明显幻觉
  8. 符合业务规则

低质量 Teacher 输出不能直接训练 Student。

错误做法:

Teacher 批量生成答案
不检查、不过滤、不评估
直接拿去训练 Student

这样会把 Teacher 的幻觉、废话和错误一起蒸馏进去。

蒸馏和微调的关系

蒸馏通常通过微调实现。

蒸馏:数据来源和训练目标
微调:具体训练手段

例如:

Teacher 生成 10,000 条高质量问答数据
用这些数据对 Student 做 SFT / LoRA / QLoRA
这就是一种响应蒸馏

所以:

蒸馏不是替代微调,而是微调数据的一种构造方式。

蒸馏和 RAG 的关系

蒸馏不能替代 RAG。

RAG 解决知识更新和事实来源问题
蒸馏解决模型行为、格式、风格、推理方式问题

适合蒸馏的:

回答格式
客服话术
拒答策略
工具调用
领域表达
任务拆解方式

不适合蒸馏的:

频繁变化的知识
实时数据
权限控制
最新政策
具体数据库查询结果

企业 RAG 中更合理的做法是:

RAG 提供知识
Teacher 基于 RAG 生成高质量答案
Student 学习这种回答方式

适合蒸馏的场景

1. 大模型 API 成本太高
2. 需要本地私有化部署
3. 小模型在特定任务上表现不够好
4. 需要统一业务话术
5. 需要稳定 JSON / 表格 / 模板输出
6. 需要让小模型学会工具调用
7. 需要让小模型模仿强模型的推理步骤
8. 需要把复杂模型能力压缩到低成本模型

不适合蒸馏的场景

1. 业务知识频繁变化
2. Teacher 本身答案不可靠
3. 没有高质量评估集
4. 没有人审查蒸馏数据
5. 目标任务非常宽泛
6. Student 参数太小,能力上限明显不足
7. 只是检索链路差,却想靠蒸馏解决

尤其注意:

如果 RAG 召回错了,蒸馏 Student 没有意义。

蒸馏常用训练方式

方式 用途
SFT 学习 Teacher 的标准回答
LoRA 低成本适配 Student
QLoRA 显存更低的 LoRA 训练
DPO 学习 Teacher/人工偏好
ORPO 类似 DPO,偏好优化
CPT 大规模领域语料继续预训练,严格说不等同于蒸馏

最常用组合:

Teacher 生成高质量问答
清洗数据
Student 做 LoRA / QLoRA SFT

蒸馏评估重点

不能只看训练 loss。

重点看:

1. Student 是否比原始模型更好
2. Student 是否接近 Teacher
3. 是否保持格式稳定
4. 是否减少幻觉
5. 是否提升任务成功率
6. 是否降低成本和延迟
7. 是否在边界问题上退化
8. 是否影响通用能力

常用对比:

原始 Student
蒸馏后 Student
Teacher
线上旧模型

评估集必须包含:

正常问题
困难问题
边界问题
无答案问题
拒答问题
格式约束问题
真实线上失败样本

蒸馏的风险

1. Teacher 的错误会被 Student 学走
2. Student 容量不足,学不到复杂能力
3. 数据分布太窄,泛化差
4. 过度模仿 Teacher,失去自身能力
5. 评估集污染,指标虚高
6. 只学答案,不学依据,容易幻觉
7. 推理过程数据错误,会误导 Student

实战建议

1. 先明确蒸馏目标,不要泛泛蒸馏。
2. 优先蒸馏具体任务,而不是蒸馏整个大模型。
3. 先构建评估集,再生成蒸馏数据。
4. Teacher 输出必须清洗和抽检。
5. Student 不要太小,否则能力上限不够。
6. 蒸馏后必须和原始 Student 对比。
7. RAG 场景下,优先保证检索正确。
8. 小批量实验通过后,再扩大数据量。

一句话总结

模型蒸馏就是用强模型生成高质量监督信号,
训练小模型在特定任务上接近强模型,
从而用更低成本获得接近可用的能力。

最关键的是:

蒸馏的核心不是 Teacher 有多强,
而是蒸馏数据是否高质量、任务是否清晰、评估是否可靠。