蒸馏是什么,什么时候值得做
区分整理经验与模型训练,用一个分类任务说明教师数据、学生训练和独立评估。
适用范围与参考来源
适用范围 / 版本基线
按 2026-09-05 官方文档核对;评估数据与成本数字仅为教学演算。模型训练与产品入口变化快,实施前重新核对可用性。
把聊天总结成笔记,不是模型蒸馏;写一份 Skill,也不会改变模型参数。它们分别解决知识保存与流程复用。
模型蒸馏用教师模型的输出或分布作为训练信号,让学生模型学习相应行为。学生往往更小或部署成本更低,但“教师一定更大”不是定义的必要条件。
三种做法,改变的是不同层
| 做法 | 改变什么 | 适合解决的问题 |
|---|---|---|
| 整理项目记忆、Skill | 运行时提供的材料和流程 | 重复交代项目事实与步骤 |
| 检索增强(RAG) | 回答时取得的外部资料 | 私有知识、经常更新的信息 |
| 模型蒸馏 | 学生模型的参数 | 稳定任务的成本、延迟或部署限制 |
“把官网资料蒸馏成一本手册”在日常语言里可能指整理压缩,但没有发生训练时,不应把它说成掌握了模型蒸馏技术。
经典蒸馏与输出蒸馏
Hinton 等人的论文使用教师的软目标:除了正确标签,还让学生学习各类别的相对概率。温度缩放可以使分布更平滑,训练时同时匹配教师分布与真实标签。
例如一个演示用分布:
开发测试:0.70
网络检测:0.25
其他: 0.05它比单独的“开发测试”标签多表达了一层相似性,但这些数字必须来自真实可访问的模型信号。让聊天模型随口写“置信度 0.70”,不等于取得了 softmax 概率。
闭源接口未提供分布时,可以在条款允许下收集教师正常输出,审核后作为输入—输出训练对。这通常称为输出蒸馏;不需要也不应索取隐藏的内部思维过程。
教学例子:给工具说明分类
假设你维护一个很大的工具目录,每条新收录都要分到固定类别。这是假设业务;本站只有少量工具,没有为它训练模型的必要。
输入和教师候选输出可以长这样:
{
"input": "查询域名的 A、AAAA 和 MX 记录",
"teacher_output": {"category": "网络检测"},
"review": "人工确认"
}这个对象是数据记录示例,不是某家微调 API 的上传格式。开始训练前,要按目标模型支持的格式转换。
另一个输入“格式化 JSON”应归开发测试;“同时提供账号管理和网络测试”可能需要多标签或人工处理。先把规则定清楚,不能让教师替你悄悄发明分类标准。
真正实施时要做的六步
- 先跑基线。 用规则、小模型加少量例子、教师模型分别分类,看错误和耗时。简单关键词规则足够时不训练。
- 先划分数据。 对获授权、已脱敏的输入去重,将同源变体放同组,再划训练、验证与留出测试集。
- 生成并审核教师答案。 检查类别合法、边界合理、无隐私泄漏;教师答错的样本不能当金标准。
- 训练学生。 选择确实支持训练、数据用途允许的模型与环境;保留数据版本和训练配置。
- 用未参与训练的样本评估。 分类别看准确性与高风险错误,比较原始学生与蒸馏学生,不只比较教师。
- 小范围试用并保留回退。 输入分布或分类规则变化后重新检查,不把旧学生当成最新业务知识。
留出答案不用于筛选训练样本、调整提示词或挑选 checkpoint。否则最终分数已经参与优化,不能再作为独立证据。
怎样判断成本值得
使用不对应真实报价的演算单位:
数据整理与训练的固定成本:1000 单位
每次调用节约的净成本:0.01 单位
忽略维护、重试与失败损失时,回本量:100000 次调用一旦计入人工审核、回退到教师的调用和后续维护,回本量还会变化。只有几十条手动分类任务,训练可能比直接处理更贵。
产品接口要单独核对
OpenAI 的 model optimization 文档目前包含 Evals 与 fine-tuning 平台迁移/退役提示。本文不沿用旧产品文章里的“一键蒸馏”操作,也不保证某个账号、模型或接口仍可训练。
实施前重新核对可用模型、训练入口、输入输出的使用条款及数据授权。对个人 AI 手册而言,先把例子、记忆、Skill 和评估做好,通常比准备训练更贴近当前问题。