TorchDistill (anciennement KDKIT ) propose diverses méthodes de distillation de connaissances de pointe et vous permet de concevoir (nouvelles) expériences simplement en modifiant un fichier de configuration YAML déclaratif au lieu du code Python. Même lorsque vous avez besoin d'extraire des représentations intermédiaires dans les modèles enseignants / élèves, vous n'aurez pas besoin de réimplémenter les modèles, qui modifient souvent l'interface de l'avant, mais spécifiez plutôt le (s) chemin (s) du (s) module dans le fichier YAML. Reportez-vous à ces articles pour plus de détails.
En plus de la distillation des connaissances, ce cadre vous aide à concevoir et à effectuer des expériences générales d'apprentissage en profondeur ( sans codage ) pour des études reproductibles d'apprentissage en profondeur. IE, il vous permet de former des modèles sans enseignants simplement en excluant les entrées des enseignants d'un fichier déclaratif de configuration YAML. Vous pouvez trouver de tels exemples ci-dessous et dans des configurations / échantillons /.
Lorsque vous vous référez à TorchDistill dans votre article, veuillez citer ces papiers au lieu de ce référentiel GitHub.
Si vous utilisez TorchDistill dans le cadre de votre travail, votre citation est appréciée et me motive à maintenir et à mettre à niveau ce cadre!
Vous pouvez trouver les projets de documentation et de recherche de l'API qui exploitent TorchDistill à https://yoshitomo-matsubara.net/torchdistill/
En utilisant ForwardHookManager , vous pouvez extraire des représentations intermédiaires dans le modèle sans modifier l'interface de sa fonction avant.
Cet exemple de cahier vous donnera une meilleure idée de l'utilisation telle que la distillation des connaissances et l'analyse des représentations intermédiaires.
Dans TorchDistill , de nombreux composants et modules de pytorch sont abstraits, par exemple, modèles, ensembles de données, optimisateurs, pertes, et plus encore! Vous pouvez les définir dans un fichier de configuration PyyAml déclaratif afin que cela puisse être considéré comme un résumé de votre expérience, et dans de nombreux cas, vous n'aurez pas du tout besoin d'écrire du code Python . Jetez un œil à certaines configurations disponibles en configs /. Vous verrez quels modules sont abstraits et comment ils sont définis dans un fichier de configuration Pyyaml déclaratif pour concevoir une expérience.
Si vous souhaitez utiliser vos propres modules (modèles, fonctions de perte, ensembles de données, etc.) avec ce cadre, vous pouvez le faire sans modifier le code dans le package local torchdistill/ .
Voir la documentation officielle et les discussions pour plus de détails.
Précision de validation top-1 pour ILSVRC 2012 (ImageNet)
Le code exécutable peut être trouvé dans des exemples / tels que
Pour CIFAR-10 et CIFAR-100, certains modèles sont réimplémentés et disponibles sous forme de modèles pré-entraînés dans TorchDistill . Plus de détails peuvent être trouvés ici.
Certains modèles de transformateurs affinés par TorchDistill pour les tâches de colle sont disponibles dans Hugging Face Model Hub. Des exemples de résultats de référence de colle et de détails peuvent être trouvés ici.
Les exemples suivants sont disponibles en démo /. Notez que ces exemples concernent les utilisateurs de Google Colab et compatibles avec Amazon Sagemaker Studio Lab. Habituellement, des exemples / seraient une meilleure référence si vous avez vos propres GPU.
Ces exemples rédigent des fichiers de prédiction de test pour que vous puissiez voir les performances de test au système de classement Glue.
Si vous trouvez des modèles sur les référentiels Pytorch Hub ou GitHub prenant en charge Pytorch Hub, vous pouvez les importer en tant que modèles enseignants / étudiants simplement en modifiant un fichier de configuration YAML déclaratif.
Par exemple, si vous utilisez un RESNEST-50 pré-entraîné disponible dans HuggingFace / Pytorch-Image-Models (AKA TIMM ) en tant que modèle d'enseignant pour un ensemble de données ImageNet, vous pouvez importer le modèle via Pytorch Hub avec l'entrée suivante dans votre fichier déclaratif de configuration YAML.
models :
teacher_model :
key : ' resnest50d '
repo_or_dir : ' huggingface/pytorch-image-models '
kwargs :
num_classes : 1000
pretrained : True pip3 install torchdistill
# or use pipenv
pipenv install torchdistill
git clone https://github.com/yoshitomo-matsubara/torchdistill.git
cd torchdistill/
pip3 install -e .
# or use pipenv
pipenv install "-e ."
N'hésitez pas à créer un problème si vous trouvez un bug.
Si vous avez une question ou une demande de fonctionnalité, commencez une nouvelle discussion ici. Veuillez rechercher des questions et des discussions et assurez-vous que votre problème / question / demande n'a pas encore été résolu.
Les demandes de traction sont les bienvenues. Veuillez commencer par un problème et discuter des solutions avec moi plutôt que de commencer par une demande de traction.
Si vous utilisez TorchDistill dans vos recherches, veuillez citer les articles suivants:
[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 }
} Ce projet a été soutenu par les crédits OSS de Travis CI et les programmes de licence gratuits de Jetbrain (open source) depuis novembre 2021 et juin 2022, respectivement.