看到论文里「蒸馏」两个字就默认是同一回事,结果读方法部分越读越乱:这边教师学生模型来回传,那边却在讲数据集怎么筛。其实两者压的东西根本不同,一个是把大模型的判断挪进小模型,一个是把大数据的分布缩成小数据集。这篇用一张对照表和一套判断顺序,帮你在读论文、选方案时先分清是哪一路。
读论文时看到「蒸馏」两个字就默认是同一回事,是很多人踩过的坑。结果方法部分越读越乱:这边在讲教师学生模型怎么传信号,那边却在讲数据集怎么筛、怎么合成。其实两者压的东西根本不同,一个是把大模型的判断挪进小模型,一个是把大数据的分布缩成小数据集。
这篇不给你下定义,而是给你一套对照和判断顺序。下次拿到一篇论文或一个方案,先问清楚:它省下来的是参数,还是样本?答案出来,方向就不会串。下面逐节拆。
先搞清楚:两者各自在「压」什么
知识蒸馏压的是模型。大模型学到的输出分布、中间特征、样本之间的对齐关系,被当成监督信号迁移到参数更小的模型上。产物是一份更小的模型权重,以后推理就用它。它的核心动作是「找人教」,老师是谁很关键。
数据蒸馏压的是数据。把大训练集的训练效果浓缩进一个更小的合成数据集或筛选子集,产物是一批样本。模型结构可以完全不变,换不同架构来训都行。它的核心动作是「把教材变薄」,薄到还能考出差不多的分数。
- 一句话判断:问「省下来的是参数还是样本」,答案立刻分明
- 知识蒸馏的产物是模型权重,通常绑定特定学生结构
- 数据蒸馏的产物是数据集,可以复用到不同模型上
- 两者经常被组合使用,论文里同时出现时别急着二选一,先看作者把哪个当主贡献
- 不适用的情况:任务本身很小、数据也不多,两种蒸馏的收益都可能被准备工作吃回去
对照表:目标、输入、输出、评价方式
把两者放在同一张表里,按行对号入座,读论文时定位会快很多。下面这张表把目标、输入、输出和评价方式列在一起,遇到新方法就往里填。
| 维度 | 知识蒸馏 | 数据蒸馏 |
|---|---|---|
| 目标 | 算力或延迟受限时保住效果 | 省训练时间与存储,让下游模型照样学到东西 |
| 输入 | 教师模型 + 学生模型 + 同一批样本 | 大训练集 + 一套合成或筛选流程 |
| 输出 | 小模型权重 | 小规模数据集,可复用给不同模型 |
| 评价 | 师生准确率差距、推理开销 | 在小数据上训出的模型与原数据训出的差距 |
| 复用性 | 一般绑定学生结构 | 跨模型、跨架构复用更灵活 |
表格里最容易看错的是「评价」这一行。知识蒸馏拿教师当参照,差距越小越好;数据蒸馏拿原数据训出的模型当参照,比的是下游效果有没有掉。参照物不同,结论就不能直接横比。
什么时候用哪一种:一份排查顺序
选方案前先做排除,再谈偏好。下面这套顺序按「先看瓶颈、再看资源、最后看复用」排列,照着走不容易跑偏。
- 第一步 定位瓶颈部署端内存和延迟紧,优先考虑知识蒸馏;训练一次太久、存储扛不住,优先考虑数据蒸馏。
- 第二步 看有没有现成教师没有可信的大模型做老师,知识蒸馏的收益很难保证,这时数据蒸馏更现实。
- 第三步 看下游是否频繁换模型数据集能跨模型复用,蒸馏出来的学生模型一般绑定特定结构,换架构就得重做。
- 第四步 算准备成本合成或筛选数据集本身要花时间,教师模型也要先训好,两边的准备工作都得计入。
- 第五步 先试简单基线规模小、任务简单的场景,两者可能都不划算,常规正则化加更小模型往往更省事。
想深挖术语本身的定义,可以到 基础术语库(/ai-dict/category/basics) 逐条核对,那里按概念分类整理,适合先建立词汇表再读论文。涉及具体效果数字,论文之间口径差异很大,别直接横比。
容易被混淆的几组说法
下面几组词经常被当成同义词用,实际差得挺远。分清它们,能少绕很多弯路。
- 蒸馏 vs 剪枝量化
- 剪枝量化直接删参数或降精度,蒸馏靠另一个模型的监督信号,来源不同
- 合成数据 vs 数据蒸馏
- 合成数据只是手段,只有以匹配原训练效果为目标的那一类才算蒸馏
- 微调 vs 知识蒸馏
- 微调改变模型适应任务,蒸馏改变谁来教这个模型,维度不一样
- 教师模型规模
- 别把它当判断依据,关键看监督信号迁移的方向
还有一个常见误区:把「用了大模型生成的数据」一律叫数据蒸馏。如果生成的数据只是做增广、没瞄准压缩训练集这个目标,那叫数据合成更合适。命名不重要,重要的是目标函数有没有对齐。
问清楚省下来的是参数还是样本,比背十页定义都管用。下一步想继续把相关术语和方案串起来,可以到站内工具与指南目录按主题浏览,结合当时的模型与价格资料一起看,判断会更稳。→
常见问题
知识蒸馏和数据蒸馏,哪个更适合我现在的项目?
先定位瓶颈。部署时显存和响应时间卡得紧,选知识蒸馏;训练一轮耗时长、数据存不下,选数据蒸馏。若下游模型经常换,数据集能复用,优先数据蒸馏。若已有现成且效果好的大模型当老师,知识蒸馏更直接。两者也可以先后使用。
数据蒸馏得到的小数据集,能直接替代原始数据吗?
在多数公开实验里它能在特定评测上接近原数据训练的效果,但覆盖面和鲁棒性通常不如原始数据。真实业务里更稳妥的做法是把它当加速手段,用于快速试验和迭代,正式上线前仍用原数据做一次完整训练或至少在关键子集上验证。
看论文时怎么快速判断作者用的是哪一类?
翻到方法部分先找「产物是什么」:给出学生模型结构和训练损失的,是知识蒸馏;给出合成或筛选后样本集合的,是数据蒸馏。再看实验表格对比对象是模型规模还是数据规模,基本不会判断错。拿不准时对照 ai-dict/category/tech 里的底层概念页逐条核对。