torchdistill: 知识蒸馏的模块化、配置驱动框架
torchdistill(前身为 kdkit)提供了各种先进的知识蒸馏方法,通过编辑声明性的 yaml 配置文件来设计(新的)实验,而不是编写 Python 代码。即使您需要在教师/学生模型中提取中间表示,也不需要重新实现模型(这通常会改变前向接口),而是只需在 yaml 文件中指定模块路径。详情请参阅这些论文。
除了知识蒸馏,这个框架还帮助您设计和执行一般的深度学习实验(无需编写代码),以便可重复的深度学习研究。即,只需从声明性的 yaml 配置文件中排除教师条目,便可以训练没有教师的模型。您可以在下面以及configs/sample/中找到此类示例。
当您在论文中引用 torchdistill 时,请引用这些论文,而不是此 GitHub 存储库。
如果您将torchdistill** 用作您工作的一部分,您的引用是对我维护和升级此框架的极大鼓励!
文档
您可以在 https://yoshitomo-matsubara.net/torchdistill/ 发现 API 文档以及利用 torchdistill 的研究项目。
前向钩子管理器
使用 ForwardHookManager,您可以在不修改其前向函数接口的情况下提取模型中的中间表示。
此示例笔记本
将通过展示知识蒸馏和中间表示分析等用途,帮助您更好地了解其使用方法。
1个实验 → 1个声明性的 PyYAML 配置文件
在 torchdistill 中,许多组件和 PyTorch 模块都被抽象化了,例如模型、数据集、优化器、损失等等!您可以在声明性的 PyYAML 配置文件中定义它们,因此配置文件可以被看作是您实验的摘要,而且在许多情况下,您完全不需要编写 Python 代码。请查看 configs/ 中提供的一些配置文件。 您将看到哪些模块被抽象化了,以及如何在声明性的 PyYAML 配置文件中定义它们来设计实验。
如果您想在此框架中使用自己的模块(模型、损失函数、数据集等),可以在不编辑 torchdistill/
本地包代码的情况下实现。
详情请参阅官方文档以及讨论板。
基准测试
ILSVRC 2012(ImageNet)Top-1 验证准确率
示例
在 examples/ 中可以找到可执行代码,如
- 图像分类:ImageNet (ILSVRC 2012),CIFAR-10,CIFAR-100 等
- 目标检测:COCO 2017 等
- 语义分割:COCO 2017,PASCAL VOC 等
- 文本分类:GLUE 等
对于 CIFAR-10 和 CIFAR-100,一些模型已经重新实现并作为预训练模型在 torchdistill 中可用。 更多详情请参阅 此处。
一些通过 torchdistill 微调的 Transformer 模型用于 GLUE 任务,这些模型可在 Hugging Face Model Hub 找到。 样本 GLUE 基准测试结果和详细信息请参阅此处。
Google Colab 示例
以下示例可在 demo/ 中找到。 注意,这些示例是为 Google Colab 用户提供的,并兼容 Amazon SageMaker Studio Lab。 通常,如果您有自己的 GPU,examples/ 将是更好的参考。
CIFAR-10 和 CIFAR-100
GLUE
这些例子将写出测试预测文件,让你在 GLUE 排行榜系统上查看测试性能。
PyTorch Hub
如果你在 PyTorch Hub 或支持 PyTorch Hub 的 GitHub 仓库中找到模型,你可以通过编辑声明式 yaml 配置文件将其导入为教师或学生模型。
例如,如果你使用在 huggingface/pytorch-image-models 中可用的预训练 ResNeSt-50 作为 ImageNet 数据集的教师模型,你可以通过以下条目在你的声明式 yaml 配置文件中通过 PyTorch Hub 导入模型:
models:
teacher_model:
name: 'resnest50d'
repo_or_dir: 'huggingface/pytorch-image-models'
kwargs:
num_classes: 1000
pretrained: True
设置方法
- Python >= 3.8
- pipenv(可选)
通过 pip/pipenv 安装
pip3 install torchdistill
# 或使用 pipenv
pipenv install torchdistill
从此仓库安装(不推荐)
git clone https://github.com/yoshitomo-matsubara/torchdistill.git
cd torchdistill/
pip3 install -e .
# 或使用 pipenv
pipenv install "-e ."
问题 / 疑问 / 请求 / 拉取请求
如果你发现了 bug,请随时创建一个 issue。
如果你有疑问或功能请求,可以在这里开始新的讨论。
请搜索 Issues 和 Discussions,确保你的问题/请求还未被解决。
欢迎提交拉取请求。 请先从 issue 开始并与我讨论解决方案,而不是直接提交拉取请求。
引用
如果你在研究中使用 torchdistill,请引用以下论文:
[Paper] [Preprint]
@inproceedings{matsubara2021torchdistill,
title={{torchdistill: A Modular, Configuration-Driven Framework for Knowledge Distillation}},
author={Matsubara, Yoshitomo},
booktitle={International Workshop on Reproducible Research in Pattern Recognition},
pages={24--44},
year={2021},
organization={Springer}
}
[Paper] [OpenReview] [Preprint]
@inproceedings{matsubara2023torchdistill,
title={{torchdistill Meets Hugging Face Libraries for Reproducible, Coding-Free Deep Learning Studies: A Case Study on NLP}},
author={Matsubara, Yoshitomo},
booktitle={Proceedings of the 3rd Workshop for Natural Language Processing Open Source Software (NLP-OSS 2023)},
publisher={Empirical Methods in Natural Language Processing},
pages={153--164},
year={2023}
}
致谢
自 2021 年 11 月和 2022 年 6 月起,该项目得到了 Travis CI 的 OSS 学分和 JetBrain 的免费许可证项目(Open Source) 的支持
参考文献
- :mag: pytorch/vision/references/classification/
- :mag: pytorch/vision/references/detection/
- :mag: pytorch/vision/references/segmentation/
- :mag: huggingface/transformers/examples/pytorch/text-classification
- :mag: Geoffrey Hinton, Oriol Vinyals, Jeff Dean. "Distilling the Knowledge in a Neural Network" (Deep Learning and Representation Learning Workshop: NeurIPS 2014)
- :mag: Adriana Romero, Nicolas Ballas, Samira Ebrahimi Kahou, Antoine Chassang, Carlo Gatta, Yoshua Bengio. "FitNets: Hints for Thin Deep Nets" (ICLR 2015)
- :mag: Junho Yim, Donggyu Joo, Jihoon Bae, Junmo Kim. "A Gift From Knowledge Distillation: Fast Optimization, Network Minimization and Transfer Learning" (CVPR 2017)
- :mag: Sergey Zagoruyko, Nikos Komodakis. "Paying More Attention to Attention: Improving the Performance of Convolutional Neural Networks via Attention Transfer" (ICLR 2017)
- :mag: Nikolaos Passalis, Anastasios Tefas. "Learning Deep Representations with Probabilistic Knowledge Transfer" (ECCV 2018)
- :mag: Jangho Kim, Seonguk Park, Nojun Kwak. "Paraphrasing Complex Network: Network Compression via Factor Transfer" (NeurIPS 2018)
- :mag: Byeongho Heo, Minsik Lee, Sangdoo Yun, Jin Young Choi. "Knowledge Transfer via Distillation of Activation Boundaries Formed by Hidden Neurons" (AAAI 2019)
- :mag: Tong He, Chunhua Shen, Zhi Tian, Dong Gong, Changming Sun, Youliang Yan. "Knowledge Adaptation for Efficient Semantic Segmentation" (CVPR 2019)
- :mag: Wonpyo Park, Dongju Kim, Yan Lu, Minsu Cho. "Relational Knowledge Distillation" (CVPR 2019)
- :mag: Sungsoo Ahn, Shell Xu Hu, Andreas Damianou, Neil D. Lawrence, Zhenwen Dai. "Variational Information Distillation for Knowledge Transfer" (CVPR 2019)
- :mag: Yoshitomo Matsubara, Sabur Baidya, Davide Callegaro, Marco Levorato, Sameer Singh. "Distilled Split Deep Neural Networks for Edge-Assisted Real-Time Systems" (Workshop on Hot Topics in Video Analytics and Intelligent Edges: MobiCom 2019)
- :mag: Baoyun Peng, Xiao Jin, Jiaheng Liu, Dongsheng Li, Yichao Wu, Yu Liu, Shunfeng Zhou, Zhaoning Zhang. "Correlation Congruence for Knowledge Distillation" (ICCV 2019)
- :mag: Frederick Tung, Greg Mori. "Similarity-Preserving Knowledge Distillation" (ICCV 2019)
- :mag: Yonglong Tian, Dilip Krishnan, Phillip Isola. "Contrastive Representation Distillation" (ICLR 2020)
- :mag: Yoshitomo Matsubara, Marco Levorato. "Neural Compression and Filtering for Edge-assisted Real-time Object Detection in Challenged Networks" (ICPR 2020)
- :mag: Li Yuan, Francis E.H.Tay, Guilin Li, Tao Wang, Jiashi Feng. "Revisiting Knowledge Distillation via Label Smoothing Regularization" (CVPR 2020)
- :mag: Guodong Xu, Ziwei Liu, Xiaoxiao Li, Chen Change Loy. "Knowledge Distillation Meets Self-Supervision" (ECCV 2020)
- :mag: Youcai Zhang, Zhonghao Lan, Yuchen Dai, Fangao Zeng, Yan Bai, Jie Chang, Yichen Wei. "Prime-Aware Adaptive Distillation" (ECCV 2020)
- :mag: Pengguang Chen, Shu Liu, Hengshuang Zhao, Jiaya Jia. "Distilling Knowledge via Knowledge Review" (CVPR 2021)
- :mag: Li Liu, Qingle Huang, Sihao Lin, Hongwei Xie, Bing Wang, Xiaojun Chang, Xiaodan Liang. "Exploring Inter-Channel Correlation for Diversity-Preserved Knowledge Distillation" (ICCV 2021)
- :mag: Tao Huang, Shan You, Fei Wang, Chen Qian, Chang Xu. "Knowledge Distillation from A Stronger Teacher" (NeurIPS 2022)
- :mag: Roy Miles, Krystian Mikolajczyk. "Understanding the Role of the Projector in Knowledge Distillation" (AAAI 2024)
- :mag: Shangquan Sun, Wenqi Ren, Jingzhi Li, Rui Wang, Xiaochun Cao. "Logit Standardization in Knowledge Distillation" (CVPR 2024)