大模型蒸馏¶
什么是模型蒸馏¶
模型蒸馏是指:
核心目标不是让小模型完全等于大模型,而是在特定任务上尽量接近大模型效果,同时降低部署成本。
为什么要做蒸馏¶
主要目的:
- 降低推理成本
- 降低显存占用
- 提高推理速度
- 方便私有化部署
- 让小模型适配特定业务场景
- 把大模型的任务能力迁移给小模型
典型场景:
- 大模型效果好,但太贵、太慢、太难部署;
- 小模型便宜、快、可控,但原始能力不足。
这时可以用大模型生成高质量训练数据,训练小模型。
蒸馏中的角色¶
Teacher Model:教师模型
能力强,通常是大模型,例如 GPT、Claude、DeepSeek-R1、Qwen-72B。
Student Model:学生模型
参数更小,部署成本更低,例如 Qwen-7B、Qwen-14B、Llama-8B。
Distillation Data:蒸馏数据
由 Teacher 生成或标注的数据,用来训练 Student。
常见蒸馏方式¶
响应蒸馏¶
让 Teacher 针对问题生成答案,然后用这些问答数据训练 Student。
适合:
这是最常见、最容易落地的蒸馏方式。
过程蒸馏¶
不只学习最终答案,还学习 Teacher 的推理过程、解题步骤、工具调用过程。
适合:
注意:过程数据必须高质量,否则会把错误推理也教给小模型。
偏好蒸馏¶
用 Teacher 或人工判断多个答案哪个好,再训练 Student 偏向更好的答案。
适合:
Logits 蒸馏¶
让 Student 学习 Teacher 输出 token 的概率分布。
优点:
缺点:
在开源模型之间蒸馏时更常见。
特征蒸馏¶
让 Student 学习 Teacher 中间层的 hidden states、attention 或特征表示。
适合:
缺点:
大模型蒸馏的常用流程¶
1. 明确目标任务
例如客服、RAG、代码、数学、抽取、Agent。
2. 准备问题集
包含真实业务问题、边界问题、失败样本。
3. 使用 Teacher 生成答案
生成高质量回答、推理过程、工具调用轨迹。
4. 清洗蒸馏数据
去掉错误、幻觉、重复、格式不合格的数据。
5. 构造训练集
转成 SFT、DPO 或工具调用训练格式。
6. 训练 Student
常用 SFT、LoRA、QLoRA、DPO。
7. 离线评估
与原始 Student、Teacher、线上模型对比。
8. 灰度上线
小流量验证效果、成本和延迟。
9. 继续回流线上反馈
将失败样本加入下一轮蒸馏。
蒸馏数据最重要¶
蒸馏的效果主要取决于数据质量,而不是数据数量。
高质量蒸馏数据应具备:
- 问题真实
- 答案正确
- 推理合理
- 格式统一
- 覆盖核心场景
- 覆盖边界场景
- 没有明显幻觉
- 符合业务规则
低质量 Teacher 输出不能直接训练 Student。
错误做法:
这样会把 Teacher 的幻觉、废话和错误一起蒸馏进去。
蒸馏和微调的关系¶
蒸馏通常通过微调实现。
例如:
所以:
蒸馏和 RAG 的关系¶
蒸馏不能替代 RAG。
适合蒸馏的:
不适合蒸馏的:
企业 RAG 中更合理的做法是:
适合蒸馏的场景¶
1. 大模型 API 成本太高
2. 需要本地私有化部署
3. 小模型在特定任务上表现不够好
4. 需要统一业务话术
5. 需要稳定 JSON / 表格 / 模板输出
6. 需要让小模型学会工具调用
7. 需要让小模型模仿强模型的推理步骤
8. 需要把复杂模型能力压缩到低成本模型
不适合蒸馏的场景¶
1. 业务知识频繁变化
2. Teacher 本身答案不可靠
3. 没有高质量评估集
4. 没有人审查蒸馏数据
5. 目标任务非常宽泛
6. Student 参数太小,能力上限明显不足
7. 只是检索链路差,却想靠蒸馏解决
尤其注意:
蒸馏常用训练方式¶
| 方式 | 用途 |
|---|---|
| SFT | 学习 Teacher 的标准回答 |
| LoRA | 低成本适配 Student |
| QLoRA | 显存更低的 LoRA 训练 |
| DPO | 学习 Teacher/人工偏好 |
| ORPO | 类似 DPO,偏好优化 |
| CPT | 大规模领域语料继续预训练,严格说不等同于蒸馏 |
最常用组合:
蒸馏评估重点¶
不能只看训练 loss。
重点看:
1. Student 是否比原始模型更好
2. Student 是否接近 Teacher
3. 是否保持格式稳定
4. 是否减少幻觉
5. 是否提升任务成功率
6. 是否降低成本和延迟
7. 是否在边界问题上退化
8. 是否影响通用能力
常用对比:
评估集必须包含:
蒸馏的风险¶
1. Teacher 的错误会被 Student 学走
2. Student 容量不足,学不到复杂能力
3. 数据分布太窄,泛化差
4. 过度模仿 Teacher,失去自身能力
5. 评估集污染,指标虚高
6. 只学答案,不学依据,容易幻觉
7. 推理过程数据错误,会误导 Student
实战建议¶
1. 先明确蒸馏目标,不要泛泛蒸馏。
2. 优先蒸馏具体任务,而不是蒸馏整个大模型。
3. 先构建评估集,再生成蒸馏数据。
4. Teacher 输出必须清洗和抽检。
5. Student 不要太小,否则能力上限不够。
6. 蒸馏后必须和原始 Student 对比。
7. RAG 场景下,优先保证检索正确。
8. 小批量实验通过后,再扩大数据量。
一句话总结¶
最关键的是: