Knowledge-Distillation-Zoo
Knowledge-Distillation-Zoo 是一个基于 PyTorch 构建的开源项目,旨在为各种知识蒸馏(Knowledge Distillation, KD)方法提供清晰、标准的代码实现。在深度学习领域,大型模型虽然性能卓越但计算成本高昂,而知识蒸馏技术能将大模型(教师网络)的知识迁移到小模型(学生网络)中,从而在保持较高精度的同时显著降低推理延迟和资源消耗。
该项目主要解决了研究人员和开发者在复现经典算法时面临的痛点:无需从零编写底层逻辑或处理复杂的训练技巧,即可快速获得经过验证的基础蒸馏方案。它特别适合作为学术研究的基准参考,或作为工程师进行模型压缩与加速开发的起点。无论是希望深入理解蒸馏原理的学生,还是需要快速原型验证的算法工程师,都能从中受益。
Knowledge-Distillation-Zoo 的核心亮点在于其“纯粹性”与“全面性”。它专注于最核心的知识转移机制,排除了集成学习、在线蒸馏等复杂变体的干扰,让用户能更直观地对比不同算法的本质差异。项目收录了包括软目标(ST)、注意力转移(AT)、关系蒸馏(RKD)在内的十余种经典方法,并为每种方法提供了对应的论文链接与代码模块,极大地降低了学习与实验的门槛。
使用场景
某边缘计算团队正致力于将高精度图像分类模型部署到算力受限的无人机摄像头中,需要在极小化模型体积的同时尽可能保留识别准确率。
没有 Knowledge-Distillation-Zoo 时
- 复现成本高昂:研究人员需逐个阅读数十篇知识蒸馏论文并手动重写 PyTorch 损失函数,极易因公式理解偏差导致代码错误。
- 算法对比困难:缺乏统一的基准框架,每次尝试新策略(如从 Logits 切换到注意力转移 AT)都需要重构训练循环,难以公平评估不同方法的优劣。
- 调参盲目低效:由于缺少标准实现参考,对于温度系数、中间层对齐等关键超参数只能靠经验盲猜,耗费大量 GPU 机时却难获提升。
- 技术选型局限:受限于开发周期,团队往往只敢使用最基础的软目标(ST)方法,错失了 Fitnet、RKD 等更适合小模型的高级蒸馏技巧。
使用 Knowledge-Distillation-Zoo 后
- 即插即用高效集成:直接调用库中预实现的 ST、AT、Fitnet 等十余种损失函数模块,将算法验证周期从数周缩短至几天。
- 标准化公平评测:在完全一致的训练架构和数据流下,快速切换不同蒸馏策略,精准量化出 RKD 或 CC 方法在特定数据集上的增益。
- 权威参考加速调优:依托官方提供的标准代码逻辑,迅速定位超参数敏感区间,显著提升了小模型在大模型指导下的收敛速度。
- 挖掘性能上限:轻松尝试多种高级变体组合,最终成功将模型压缩至原体积的 1/5,同时准确率损失控制在 1% 以内,满足实时飞行需求。
Knowledge-Distillation-Zoo 通过提供标准化的算法实现库,彻底消除了知识蒸馏领域的重复造轮子现象,让开发者能专注于模型压缩策略的创新与落地。
运行环境要求
- 未说明
未说明 (基于 PyTorch 实现,通常支持 CUDA,但 README 未指定具体型号或版本)
未说明

快速开始
知识蒸馏动物园
新闻!我将对这个仓库进行重大更新。新版本将包含待办事项列表中的大多数方法。敬请关注。
各种知识蒸馏(KD)方法的 PyTorch 实现。
本仓库是一个简单的参考,主要聚焦于基础的知识蒸馏/迁移方法。因此,许多技巧和变体,如逐步训练、迭代训练、教师模型集成、知识蒸馏方法集成、无数据蒸馏、自蒸馏、在线蒸馏等,并未在此考虑。希望它对您的项目或研究有所帮助。
我会定期更新此仓库,添加新的知识蒸馏方法。如果您认为有遗漏的基础方法,请与我联系。
列表
| 名称 | 方法 | 论文链接 | 代码链接 |
|---|---|---|---|
| 基线 | 使用 softmax 损失的基本模型 | — | 代码 |
| Logits | 通过回归 logits 进行模仿学习 | 论文 | 代码 |
| ST | 软目标 | 论文 | 代码 |
| AT | 注意力迁移 | 论文 | 代码 |
| Fitnet | 针对轻量级深度网络的提示 | 论文 | 代码 |
| NST | 神经选择性迁移 | 论文 | 代码 |
| PKT | 概率知识迁移 | 论文 | 代码 |
| FSP | 解决方案流程传递 | 论文 | 代码 |
| FT | 因子迁移 | 论文 | 代码 |
| RKD | 关系知识蒸馏 | 论文 | 代码 |
| AB | 激活边界 | 论文 | 代码 |
| SP | 相似性保持 | 论文 | 代码 |
| Sobolev | 索博列夫/雅可比匹配 | 论文 | 代码 |
| BSS | 边界支持样本 | 论文 | 代码 |
| CC | 相关性一致性 | 论文 | 代码 |
| LwM | 不需记忆的学习 | 论文 | 代码 |
| IRG | 实例关系图 | 论文 | 代码 |
| VID | 变分信息蒸馏 | 论文 | 代码 |
| OFD | 特征蒸馏的全面改进 | 论文 | 代码 |
| AFD | 注意力特征蒸馏 | 论文 | 代码 |
| CRD | 对比表示蒸馏 | 论文 | 代码 |
| DML | 深度互学习 | 论文 | 代码 |
- 注意,本仓库与原始论文之间存在一些差异:
- 对于
AT:我使用 p=2 的绝对值之和作为注意力。 - 对于
Fitnet:训练过程为单阶段,没有提示层。 - 对于
NST:我采用 d=2、c=0 的多项式核。 - 对于
AB:采用两阶段训练,前 50 个 epoch 用于初始化,第二阶段仅使用交叉熵损失,不使用软目标。 - 对于
BSS:80% 的 epoch 使用交叉熵 + BSS 损失,剩余 20% 仅使用交叉熵。此外,前 10 个 epoch 进行预热。 - 对于
CC:为保持一致性,我只考虑不含实例一致性的 CC。由于双线性池化核与 PKT 类似,我选择了高斯 RBF 核,并取其 P=2 阶泰勒展开。未采用特殊的采样策略。 - 对于
LwM:我将其应用在 rb2(中间卷积层)之后,而不是 rb3(最后一层卷积层),因为基础网络是 ResNet,以 GAP 结束后接分类器。如果在 rb3 后应用,梯度-CAN 在每个通道的 H 和 W 方向上数值会相同。 - 对于
IRG:我仅使用一对一模式。 - 对于
VID:我将隐藏层通道数设置为与输出通道数相同,并移除了 μ 中的 BN。 - 对于
AFD:我发现原始的注意力实现不稳定,因此用 SE 模块替代了它。 - 对于
DML:仅使用两个网络,并同步更新,以避免多次前向传播。
- 对于
数据集
- CIFAR10
- CIFAR100
网络
- Resnet-20
- Resnet-110
这些网络与 论文 中的表 6 相同。
训练
- 创建
./dataset目录,并在其中下载 CIFAR10/CIFAR100 数据集。 - 使用脚本
example_train_script.sh来训练各种知识蒸馏方法。你可以直接指定train_xxx.py中列出的超参数,也可以手动修改它们。 - 我使用的超参数可以在 训练日志 中找到(提取码:ezed)。
- 一些注意事项:
- Sobolev/LwM 单独使用时不太稳定,建议与其他知识蒸馏方法结合使用。
- BSS 有时可能会破坏训练过程,导致效果不佳。
- 如果原始论文中没有明确说明,所有方法都可以应用于中间特征图;或者只在最后一个卷积层之后才使用多个特征图。扩展到多个特征图非常简单。
- 我假设教师模型和学生模型之间的特征图尺寸(C, H, W)相同。如果不相同,可以使用 1×1 卷积、线性变换或池化操作来调整它们。
结果
- 训练好的基线模型被用作教师模型。为了公平比较,所有学生网络都与基线模型采用相同的初始化方式。
- 初始模型、训练后的模型以及训练日志已上传至 这里(提取码:ezed)。
- 贸易-off 参数
--lambda_kd以及其他超参数并未经过仔细调优。因此,以下结果并不能反映哪种方法优于其他方法。 - 一些基于关系的方法,例如 PKT、RKD 和 CC,在 CIFAR100 数据集上的效果较差。这可能是因为 CIFAR100 数据集中类间差异较大,而每个批次内的类内差异较小。你可以尝试增大批次大小、构建记忆库,或者设计更先进的批次采样方法。
| 教师 | 学生 | 名称 | CIFAR10 | CIFAR100 |
| - | resnet-20 | 基线 | 92.37% | 68.92% |
| resnet-20 | resnet-20 | Logits | 93.30% | 70.36% |
| resnet-20 | resnet-20 | ST | 93.12% | 70.27% |
| resnet-20 | resnet-20 | AT | 92.89% | 69.70% |
| resnet-20 | resnet-20 | Fitnet | 92.73% | 70.08% |
| resnet-20 | resnet-20 | NST | 92.79% | 69.21% |
| resnet-20 | resnet-20 | PKT | 92.50% | 69.25% |
| resnet-20 | resnet-20 | FSP | 92.76% | 69.61% |
| resnet-20 | resnet-20 | FT | 92.98% | 69.90% |
| resnet-20 | resnet-20 | RKD | 92.72% | 69.48% |
| resnet-20 | resnet-20 | AB | 93.04% | 69.96% |
| resnet-20 | resnet-20 | SP | 92.88% | 69.85% |
| resnet-20 | resnet-20 | Sobolev | 92.78% | 69.39% |
| resnet-20 | resnet-20 | BSS | 92.58% | 69.96% |
| resnet-20 | resnet-20 | CC | 93.01% | 69.27% |
| resnet-20 | resnet-20 | LwM | 92.80% | 69.23% |
| resnet-20 | resnet-20 | IRG | 92.77% | 70.37% |
| resnet-20 | resnet-20 | VID | 92.61% | 69.39% |
| resnet-20 | resnet-20 | OFD | 92.82% | 69.93% |
| resnet-20 | resnet-20 | AFD | 92.56% | 69.63% |
| resnet-20 | resnet-20 | CRD | 92.96% | 70.33% |
| 教师 | 学生 | 名称 | CIFAR10 | CIFAR100 |
| - | resnet-20 | 基线 | 92.37% | 68.92% |
| - | resnet-110 | 基线 | 93.86% | 73.15% |
| resnet-110 | resnet-20 | Logits | 92.98% | 69.78% |
| resnet-110 | resnet-20 | ST | 92.82% | 70.06% |
| resnet-110 | resnet-20 | AT | 93.21% | 69.28% |
| resnet-110 | resnet-20 | Fitnet | 93.04% | 69.81% |
| resnet-110 | resnet-20 | NST | 92.83% | 69.31% |
| resnet-110 | resnet-20 | PKT | 93.01% | 69.31% |
| resnet-110 | resnet-20 | FSP | 92.78% | 69.78% |
| resnet-110 | resnet-20 | FT | 93.01% | 69.49% |
| resnet-110 | resnet-20 | RKD | 93.21% | 69.36% |
| resnet-110 | resnet-20 | AB | 92.96% | 69.41% |
| resnet-110 | resnet-20 | SP | 93.30% | 69.45% |
| resnet-110 | resnet-20 | Sobolev | 92.60% | 69.23% |
| resnet-110 | resnet-20 | BSS | 92.78% | 69.71% |
| resnet-110 | resnet-20 | CC | 92.98% | 69.33% |
| resnet-110 | resnet-20 | LwM | 92.52% | 69.11% |
| resnet-110 | resnet-20 | IRG | 93.13% | 69.36% |
| resnet-110 | resnet-20 | VID | 92.98% | 69.49% |
| resnet-110 | resnet-20 | OFD | 93.13% | 69.81% |
| resnet-110 | resnet-20 | AFD | 92.92% | 69.60% |
| resnet-110 | resnet-20 | CRD | 92.92% | 70.80% |
| 教师 | 学生 | 名称 | CIFAR10 | CIFAR100 |
| - | resnet-110 | 基线 | 93.86% | 73.15% |
| resnet-110 | resnet-110 | Logits | 94.38% | 74.89% |
| resnet-110 | resnet-110 | ST | 94.59% | 74.33% |
| resnet-110 | resnet-110 | AT | 94.42% | 74.64% |
| resnet-110 | resnet-110 | Fitnet | 94.43% | 73.63% |
| resnet-110 | resnet-110 | NST | 94.43% | 73.55% |
| resnet-110 | resnet-110 | PKT | 94.35% | 73.74% |
| resnet-110 | resnet-110 | FSP | 94.39% | 73.59% |
| resnet-110 | resnet-110 | FT | 94.30% | 74.72% |
| resnet-110 | resnet-110 | RKD | 94.39% | 73.78% |
| resnet-110 | resnet-110 | AB | 94.63% | 73.91% |
| resnet-110 | resnet-110 | SP | 94.45% | 74.07% |
| resnet-110 | resnet-110 | Sobolev | 94.26% | 73.14% |
| resnet-110 | resnet-110 | BSS | 94.19% | 73.87% |
| resnet-110 | resnet-110 | CC | 94.49% | 74.43% |
| resnet-110 | resnet-110 | LwM | 94.19% | 73.28% |
| resnet-110 | resnet-110 | IRG | 94.44% | 74.96% |
| resnet-110 | resnet-110 | VID | 94.25% | 73.63% |
| resnet-110 | resnet-110 | OFD | 94.38% | 74.11% |
| resnet-110 | resnet-110 | AFD | 94.44% | 73.90% |
| resnet-110 | resnet-110 | CRD | 94.30% | 75.44% |
| Net1 | Net2 | 名称 | CIFAR10 | CIFAR100 |
| - | resnet-20 | 基线 | 92.37% | 68.92% |
| - | resnet-110 | 基线 | 93.86% | 73.15% |
| resnet20 | resnet20 | DML | 93.07%/93.37% | 70.39%/70.22% |
| resnet110 | resnet20 | DML | 94.45%/92.92% | 74.53%/70.29% |
| resnet110 | resnet110 | DML | 94.74%/94.79% | 74.72%/75.55% |
待办事项清单
- KDSVD(目前存在一些bug)
- QuEST:用于知识迁移的量化嵌入空间
- EEL:通过大规模知识蒸馏学习进化型嵌入
- OnAdvFD:特征图级别的在线对抗性知识蒸馏
- CS-KD:通过自知识蒸馏正则化类别级预测
- PAD:基于先验信息的自适应蒸馏
- DCM:通过密集跨层互蒸馏进行知识迁移
- ESKD:关于知识蒸馏有效性的研究
- GKA:教师的作用不止于教学:压缩图像到图像模型
- KD-fn:用于图像分类的特征归一化知识蒸馏
- FSD:通过自适应实例归一化进行知识蒸馏
- CSKD:利用类别结构改进知识蒸馏
- CD & GKD:通道蒸馏:面向知识蒸馏的通道级注意力机制
- CRCD:互补关系对比蒸馏
- MGD:匹配引导蒸馏
- SSKD:知识蒸馏与自监督学习的结合
- KR:通过知识回顾进行知识蒸馏
- AFD-SAD:展示、关注并蒸馏:基于注意力的特征匹配知识蒸馏
- SRRL:通过Softmax回归表示学习进行知识蒸馏
- SemCKD:具有语义校准的跨层蒸馏
- SKD:通过球面知识蒸馏缩小师生差距
- IFDM:利用信息流建模实现异构知识蒸馏
- LKD:面向知识蒸馏的局部相关性一致性
- HKD:使用图神经网络蒸馏整体知识
- LONDON:基于利普希茨连续性的知识蒸馏
- CDD:面向密集预测的通道级知识蒸馏
- SCKD:学生定制化知识蒸馏:弥合学生与教师之间的差距
- ICKD:探索通道间相关性以保持多样性进行知识蒸馏
- DKMF:通过模仿特征进行知识蒸馏
- CRCD:互补关系对比蒸馏
- WCoRD:Wasserstein对比表示蒸馏
- LKD:面向知识蒸馏的局部相关性一致性
- KDCL:通过协作学习进行在线知识蒸馏
- ONE:通过即时原生集成进行知识蒸馏
系统要求
- Python 3.7
- PyTorch 1.3.1
- torchvision 0.4.2
致谢
本仓库部分参考了以下项目,特此感谢原作者:
- HobbitLong/RepDistiller
- bhheo/BSS_distillation
- clovaai/overhaul-distillation
- passalis/probabilistic_kt
- lenscloth/RKD
如果您在研究中使用了上述知识蒸馏方法,请引用相应的论文。
常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
n8n
n8n 是一款面向技术团队的公平代码(fair-code)工作流自动化平台,旨在让用户在享受低代码快速构建便利的同时,保留编写自定义代码的灵活性。它主要解决了传统自动化工具要么过于封闭难以扩展、要么完全依赖手写代码效率低下的痛点,帮助用户轻松连接 400 多种应用与服务,实现复杂业务流程的自动化。 n8n 特别适合开发者、工程师以及具备一定技术背景的业务人员使用。其核心亮点在于“按需编码”:既可以通过直观的可视化界面拖拽节点搭建流程,也能随时插入 JavaScript 或 Python 代码、调用 npm 包来处理复杂逻辑。此外,n8n 原生集成了基于 LangChain 的 AI 能力,支持用户利用自有数据和模型构建智能体工作流。在部署方面,n8n 提供极高的自由度,支持完全自托管以保障数据隐私和控制权,也提供云端服务选项。凭借活跃的社区生态和数百个现成模板,n8n 让构建强大且可控的自动化系统变得简单高效。
AutoGPT
AutoGPT 是一个旨在让每个人都能轻松使用和构建 AI 的强大平台,核心功能是帮助用户创建、部署和管理能够自动执行复杂任务的连续型 AI 智能体。它解决了传统 AI 应用中需要频繁人工干预、难以自动化长流程工作的痛点,让用户只需设定目标,AI 即可自主规划步骤、调用工具并持续运行直至完成任务。 无论是开发者、研究人员,还是希望提升工作效率的普通用户,都能从 AutoGPT 中受益。开发者可利用其低代码界面快速定制专属智能体;研究人员能基于开源架构探索多智能体协作机制;而非技术背景用户也可直接选用预置的智能体模板,立即投入实际工作场景。 AutoGPT 的技术亮点在于其模块化“积木式”工作流设计——用户通过连接功能块即可构建复杂逻辑,每个块负责单一动作,灵活且易于调试。同时,平台支持本地自托管与云端部署两种模式,兼顾数据隐私与使用便捷性。配合完善的文档和一键安装脚本,即使是初次接触的用户也能在几分钟内启动自己的第一个 AI 智能体。AutoGPT 正致力于降低 AI 应用门槛,让人人都能成为 AI 的创造者与受益者。
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。