TorchDistill (anteriormente KDKIT ) ofrece varios métodos de destilación de conocimiento de última generación y le permite diseñar (nuevos) experimentos simplemente editando un archivo de configuración YAML declarativo en lugar del código Python. Incluso cuando necesite extraer representaciones intermedias en modelos de maestro/estudiante, no necesitará volver a implementar los modelos, que a menudo cambian la interfaz del avance, sino especificar las rutas del módulo en el archivo YAML. Consulte estos documentos para obtener más detalles.
Además de la destilación del conocimiento, este marco le ayuda a diseñar y realizar experimentos generales de aprendizaje profundo ( sin codificación ) para estudios reproducibles de aprendizaje profundo. es decir, le permite capacitar a modelos sin maestros simplemente excluyendo las entradas de los maestros de un archivo de configuración YAML declarativo. Puede encontrar tales ejemplos a continuación y en Configs/Sample/.
Cuando se refiera a TorchDistill en su artículo, cita estos documentos en lugar de este repositorio de GitHub.
Si usa TorchDistill como parte de su trabajo, su cita es apreciada y me motiva a mantener y actualizar este marco.
Puede encontrar los proyectos de documentación y investigación de la API que aprovechan TorchDistill en https://yoshitomo-matsubara.net/torchdistill/
Utilizando ForwardhookManager , puede extraer representaciones intermedias en el modelo sin modificar la interfaz de su función de avance.
Este cuaderno de ejemplo le dará una mejor idea del uso, como la destilación de conocimiento y el análisis de representaciones intermedias.
En TorchDistill , muchos componentes y módulos de Pytorch son abstraídos, por ejemplo, modelos, conjuntos de datos, optimizadores, pérdidas y más. Puede definirlos en un archivo de configuración Pyyaml declarativo para que pueda verse como un resumen de su experimento, y en muchos casos, no necesitará escribir el código Python en absoluto . Eche un vistazo a algunas configuraciones disponibles en Configs/. Verá qué módulos se abstraen y cómo se definen en un archivo de configuración Pyyaml declarativo para diseñar un experimento.
Si desea usar sus propios módulos (modelos, funciones de pérdida, conjuntos de datos, etc.) con este marco, puede hacerlo sin editar código en el paquete local torchdistill/ .
Vea la documentación oficial y las discusiones para obtener más detalles.
Top-1 Precisión de validación para ILSVRC 2012 (Imagenet)
El código ejecutable se puede encontrar en ejemplos/ como
Para CIFAR-10 y CIFAR-100, algunos modelos se reimplementan y están disponibles como modelos previos a la petrada en Torchdistill . Se pueden encontrar más detalles aquí.
Algunos modelos de transformadores ajustados por TorchDistill para tareas de pegamento están disponibles en Hub Model Hub. Los resultados y detalles de referencia de pegamento de muestra se pueden encontrar aquí.
Los siguientes ejemplos están disponibles en demo/. Tenga en cuenta que estos ejemplos son para usuarios de Google Colab y compatibles con Amazon Sagemaker Studio Lab. Por lo general, los ejemplos/ serían una mejor referencia si tiene sus propias GPU (s).
Estos ejemplos escriben archivos de predicción de prueba para que vea el rendimiento de la prueba en el sistema de placas de clasificación.
Si encuentra modelos en Pytorch Hub o Repositorios de GitHub que admiten Pytorch Hub, puede importarlos como modelos de maestro/estudiante simplemente editando un archivo de configuración YAML declarativo.
Por ejemplo, si utiliza un resnest-50 previamente disponible en Huggingface/Pytorch-Image-Models (también conocido como TIMM ) como modelo de maestro para el conjunto de datos de Imagenet, puede importar el modelo a través de Pytorch Hub con la siguiente entrada en su archivo de configuración YAML declarativo.
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 ."
No dude en crear un problema si encuentra un error.
Si tiene una pregunta o solicitud de función, comience una nueva discusión aquí. Busque en cuestiones y discusiones y asegúrese de que su problema/pregunta/solicitud aún no se haya abordado.
Las solicitudes de extracción son bienvenidas. Comience con un problema y discuta soluciones conmigo en lugar de comenzar con una solicitud de extracción.
Si usa TorchDistill en su investigación, cite los siguientes documentos:
[Documento] [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 }
} Este proyecto ha sido respaldado por los créditos OSS de Travis CI y los programas de licencia gratuita de JetBrain (código abierto) desde noviembre de 2021 y junio de 2022, respectivamente.