A Torchdistill (anteriormente KDKit ) oferece vários métodos de destilação de conhecimento de ponta e permite projetar (novos) experimentos simplesmente editando um arquivo de configuração YAML declarativo em vez do código Python. Mesmo quando você precisa extrair representações intermediárias nos modelos de professores/alunos, você não precisará reimplementar os modelos, que geralmente alteram a interface do avanço, mas, em vez disso, especificar os caminhos do módulo no arquivo YAML. Consulte esses trabalhos para obter mais detalhes.
Além da destilação do conhecimento, essa estrutura ajuda a projetar e realizar experimentos gerais de aprendizado profundo ( sem codificação ) para estudos de aprendizado profundo reprodutível. Ou seja, permite que você treine modelos sem professores simplesmente excluindo entradas de professores de um arquivo de configuração da YAML declarativo. Você pode encontrar esses exemplos abaixo e em configurações/amostra/.
Quando você se refere ao Torchdistill em seu artigo, cite esses papéis em vez deste repositório do GitHub.
Se você usa a Torchdistill como parte do seu trabalho, sua citação é apreciada e me motiva a manter e atualizar essa estrutura!
Você pode encontrar os projetos de documentação e pesquisa da API que aproveitam a Torchdistill em https://yoshitomo-matsubara.net/torchdistill/
Usando o ForwardHookManager , você pode extrair representações intermediárias no modelo sem modificar a interface de sua função avançada.
Este notebook de exemplo fornecerá uma idéia melhor do uso, como destilação de conhecimento e análise de representações intermediárias.
Em Torchdistill , muitos componentes e módulos de Pytorch são abstraídos, por exemplo, modelos, conjuntos de dados, otimizadores, perdas e muito mais! Você pode defini -los em um arquivo de configuração Pyyaml declarativo para que possa ser visto como um resumo do seu experimento e, em muitos casos, não precisará escrever o código Python . Dê uma olhada em algumas configurações disponíveis nas configurações/. Você verá quais módulos são abstraídos e como eles são definidos em um arquivo de configuração pyyaml declarativo para projetar um experimento.
Se você deseja usar seus próprios módulos (modelos, funções de perda, conjuntos de dados etc.) com essa estrutura, você pode fazê -lo sem editar o código no pacote local torchdistill/ .
Consulte a documentação e discussões oficiais para obter mais detalhes.
Precisão de validação top-1 para ILSVRC 2012 (ImageNet)
O código executável pode ser encontrado em exemplos/ como
Para CIFAR-10 e CIFAR-100, alguns modelos são reimplementados e disponíveis como modelos pré-treinados em Torchdistill . Mais detalhes podem ser encontrados aqui.
Alguns modelos de transformadores são ajustados pela Torchdistill para tarefas de cola estão disponíveis para abraçar o Hub do Modelo de Face Face. Os resultados e detalhes da referência de cola de amostra podem ser encontrados aqui.
Os exemplos a seguir estão disponíveis na demonstração/. Observe que esses exemplos são para usuários do Google Colab e compatíveis com o Amazon Sagemaker Studio Lab. Geralmente, exemplos/ seria uma referência melhor se você tiver seus próprios GPU (s).
Esses exemplos escrevem arquivos de previsão de teste para você ver o desempenho do teste no sistema de tabela de líderes de cola.
Se você encontrar modelos nos repositórios Pytorch Hub ou GitHub, que suportam o Pytorch Hub, poderá importá -los como modelos de professores/alunos simplesmente editando um arquivo de configuração YAML declarativo.
Por exemplo, se você usar um resnest-50 pré-terenciado em modelos HuggingFace/Pytorch-Image (também conhecido como Timm ) como modelo de professor para o conjunto de dados ImageNet, poderá importar o modelo via hub pytorch com a seguinte entrada no seu arquivo declarativo de configuração 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 ."
Sinta -se à vontade para criar um problema se encontrar um bug.
Se você tiver uma solicitação de pergunta ou recurso, inicie uma nova discussão aqui. Pesquise problemas e discussões e verifique se sua questão/pergunta/solicitação ainda não foi abordada.
Solicitações de tração são bem -vindas. Comece com um problema e discuta soluções comigo, em vez de começar com uma solicitação de tração.
Se você usar a Torchdistill em sua pesquisa, cite os seguintes trabalhos:
[Papel] [pré -impressão]
@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] [pré -impressão]
@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 projeto foi apoiado pelos créditos OSS da Travis CI e pelos programas de licença gratuita da JetBrain (código aberto) desde novembro de 2021 e junho de 2022, respectivamente.