知识蒸馏和数据蒸馏区别

办公与行业

帮算法学习者分清知识蒸馏和数据蒸馏:一个压模型、一个压数据,从目标、输入输出到选用场景逐项对照。

看到论文里「蒸馏」两个字就默认是同一回事,结果读方法部分越读越乱:这边教师学生模型来回传,那边却在讲数据集怎么筛。其实两者压的东西根本不同,一个是把大模型的判断挪进小模型,一个是把大数据的分布缩成小数据集。这篇用一张对照表和一套判断顺序,帮你在读论文、选方案时先分清是哪一路。

读论文时看到「蒸馏」两个字就默认是同一回事,是很多人踩过的坑。结果方法部分越读越乱:这边在讲教师学生模型怎么传信号,那边却在讲数据集怎么筛、怎么合成。其实两者压的东西根本不同,一个是把大模型的判断挪进小模型,一个是把大数据的分布缩成小数据集。

这篇不给你下定义,而是给你一套对照和判断顺序。下次拿到一篇论文或一个方案,先问清楚:它省下来的是参数,还是样本?答案出来,方向就不会串。下面逐节拆。

先搞清楚:两者各自在「压」什么

知识蒸馏压的是模型。大模型学到的输出分布、中间特征、样本之间的对齐关系,被当成监督信号迁移到参数更小的模型上。产物是一份更小的模型权重,以后推理就用它。它的核心动作是「找人教」,老师是谁很关键。

数据蒸馏压的是数据。把大训练集的训练效果浓缩进一个更小的合成数据集或筛选子集,产物是一批样本。模型结构可以完全不变,换不同架构来训都行。它的核心动作是「把教材变薄」,薄到还能考出差不多的分数。

  • 一句话判断:问「省下来的是参数还是样本」,答案立刻分明
  • 知识蒸馏的产物是模型权重,通常绑定特定学生结构
  • 数据蒸馏的产物是数据集,可以复用到不同模型上
  • 两者经常被组合使用,论文里同时出现时别急着二选一,先看作者把哪个当主贡献
  • 不适用的情况:任务本身很小、数据也不多,两种蒸馏的收益都可能被准备工作吃回去

对照表:目标、输入、输出、评价方式

把两者放在同一张表里,按行对号入座,读论文时定位会快很多。下面这张表把目标、输入、输出和评价方式列在一起,遇到新方法就往里填。

维度知识蒸馏数据蒸馏
目标算力或延迟受限时保住效果省训练时间与存储,让下游模型照样学到东西
输入教师模型 + 学生模型 + 同一批样本大训练集 + 一套合成或筛选流程
输出小模型权重小规模数据集,可复用给不同模型
评价师生准确率差距、推理开销在小数据上训出的模型与原数据训出的差距
复用性一般绑定学生结构跨模型、跨架构复用更灵活

表格里最容易看错的是「评价」这一行。知识蒸馏拿教师当参照,差距越小越好;数据蒸馏拿原数据训出的模型当参照,比的是下游效果有没有掉。参照物不同,结论就不能直接横比。

什么时候用哪一种:一份排查顺序

选方案前先做排除,再谈偏好。下面这套顺序按「先看瓶颈、再看资源、最后看复用」排列,照着走不容易跑偏。

  1. 第一步 定位瓶颈部署端内存和延迟紧,优先考虑知识蒸馏;训练一次太久、存储扛不住,优先考虑数据蒸馏。
  2. 第二步 看有没有现成教师没有可信的大模型做老师,知识蒸馏的收益很难保证,这时数据蒸馏更现实。
  3. 第三步 看下游是否频繁换模型数据集能跨模型复用,蒸馏出来的学生模型一般绑定特定结构,换架构就得重做。
  4. 第四步 算准备成本合成或筛选数据集本身要花时间,教师模型也要先训好,两边的准备工作都得计入。
  5. 第五步 先试简单基线规模小、任务简单的场景,两者可能都不划算,常规正则化加更小模型往往更省事。

想深挖术语本身的定义,可以到 基础术语库(/ai-dict/category/basics) 逐条核对,那里按概念分类整理,适合先建立词汇表再读论文。涉及具体效果数字,论文之间口径差异很大,别直接横比。

容易被混淆的几组说法

下面几组词经常被当成同义词用,实际差得挺远。分清它们,能少绕很多弯路。

蒸馏 vs 剪枝量化
剪枝量化直接删参数或降精度,蒸馏靠另一个模型的监督信号,来源不同
合成数据 vs 数据蒸馏
合成数据只是手段,只有以匹配原训练效果为目标的那一类才算蒸馏
微调 vs 知识蒸馏
微调改变模型适应任务,蒸馏改变谁来教这个模型,维度不一样
教师模型规模
别把它当判断依据,关键看监督信号迁移的方向

还有一个常见误区:把「用了大模型生成的数据」一律叫数据蒸馏。如果生成的数据只是做增广、没瞄准压缩训练集这个目标,那叫数据合成更合适。命名不重要,重要的是目标函数有没有对齐。

问清楚省下来的是参数还是样本,比背十页定义都管用。
下一步想继续把相关术语和方案串起来,可以到站内工具与指南目录按主题浏览,结合当时的模型与价格资料一起看,判断会更稳。

常见问题

知识蒸馏和数据蒸馏,哪个更适合我现在的项目?

先定位瓶颈。部署时显存和响应时间卡得紧,选知识蒸馏;训练一轮耗时长、数据存不下,选数据蒸馏。若下游模型经常换,数据集能复用,优先数据蒸馏。若已有现成且效果好的大模型当老师,知识蒸馏更直接。两者也可以先后使用。

数据蒸馏得到的小数据集,能直接替代原始数据吗?

在多数公开实验里它能在特定评测上接近原数据训练的效果,但覆盖面和鲁棒性通常不如原始数据。真实业务里更稳妥的做法是把它当加速手段,用于快速试验和迭代,正式上线前仍用原数据做一次完整训练或至少在关键子集上验证。

看论文时怎么快速判断作者用的是哪一类?

翻到方法部分先找「产物是什么」:给出学生模型结构和训练损失的,是知识蒸馏;给出合成或筛选后样本集合的,是数据蒸馏。再看实验表格对比对象是模型规模还是数据规模,基本不会判断错。拿不准时对照 ai-dict/category/tech 里的底层概念页逐条核对。

本文依据各平台公开文档与官方公告整理,只做中文归纳;具体做法、参数与限制以官方文档为准。