CoreNet: biblioteca para treinamento de redes neurais profundas
(github.com/apple)Introdução ao CoreNet, framework de deep learning desenvolvido pela Apple
- CoreNet é um framework de deep learning desenvolvido pela Apple, capaz de treinar modelos de grande porte, tanto padrão quanto novos, para diversas tarefas
- Suporta tarefas como Foundation Models (CLIP, LLM), classificação de objetos, detecção de objetos, segmentação semântica e outras
- A versão v0.1.0, atualizada recentemente, inclui OpenELM, CatLIP, exemplos com MLX e mais
Resultados de pesquisa da Apple com o uso do CoreNet
- OpenELM: Language Model eficiente e open source para treinamento/inferência
- CatLIP: alcança desempenho no nível do CLIP com pré-treinamento 2,7 vezes mais rápido em dados de imagem-texto em escala web
- FastVit: Vision Transformer híbrido rápido que utiliza reparametrização estrutural
- Bytes Are All You Need: Transformer que opera diretamente no nível de bytes dos arquivos
- MobileOne: rede backbone para dispositivos móveis com latência de 1 ms
- RangeAugment: técnica eficiente de Online Augmentation que utiliza Range Learning
- MobileViT: Vision Transformer leve e amigável para dispositivos móveis
- Além disso, apresenta diversos outros resultados de pesquisa
Instalação e configuração do ambiente de desenvolvimento
- É necessário instalar o Git LFS (necessário para testes, execução de Jupyter Notebook e contribuições)
- No Linux, recomenda-se Python 3.10+ e PyTorch v2.1.0+
- No macOS, Python 3.9+ é suficiente
- Pacotes de dependências opcionais são necessários ao contribuir ou executar testes
- Explica métodos detalhados de instalação no Linux e macOS, além da instalação de pacotes para processamento de áudio/vídeo
Estrutura de diretórios do CoreNet
tutorials: exemplos introdutórios- Treinar um modelo do zero com um novo dataset
- Guia de treinamento com SLURM e múltiplos nós
- Exemplos de CLIP, segmentação semântica e detecção de objetos
projects: fornece receitas de treinamento por tarefa, além de pesos pré-treinados e checkpoints- Documentado em
README.md, incluindo links para pesos pré-treinados e informações de citação - Fornece configurações reproduzíveis de treinamento/avaliação por meio de arquivos
<task_name>/<model_name>.yaml
- Documentado em
mlx_example: exemplos para executar modelos do CoreNet com eficiência no Apple Siliconcorenet/modeling/models: implementações de modelos organizadas por tarefa- Define o nome da tarefa e do modelo com decorators
- Explica como especificar a classe do modelo a ser usada em arquivos de configuração YAML
corenet/data/datasets: datasets organizados por tarefa- Também descreve diretórios de implementação de classes referenciadas em outras configurações YAML
loss_fn,metrics,optims,dataetc.
Informações sobre o projeto CoreNet
- O desenvolvimento foi iniciado por Sachin, e atualmente a manutenção está a cargo de Sachin, Maxwell Horton, Mohammad Sekhavat e Yanzi Jin
- Pull Requests da comunidade são bem-vindos. Consulte a documentação de contribuição.
- CoreNet é um projeto que evoluiu a partir do CVNets e foi expandido para oferecer suporte ao treinamento de Foundation Models, como LLMs, além de Vision
Opinião do GN⁺
-
O CoreNet parece ser um framework de deep learning abrangente, cobrindo modelos SOTA recentes. Além de fornecer implementações desses modelos, também oferece o pipeline de treinamento, o que deve facilitar a reprodução de resultados de pesquisas existentes.
-
Por ser um framework desenvolvido pela Apple, dá para esperar execução otimizada em dispositivos com Apple Silicon. Em especial, os exemplos com MLX permitem vislumbrar formas de otimização nesse ambiente.
-
Um ponto de destaque é o suporte não apenas a tarefas de visão, mas também ao treinamento de Foundation Models, como LLMs. Ainda assim, a versão pública atual é a 0.1.0, então o projeto parece estar em estágio inicial. Fica a curiosidade sobre os próximos updates e o roadmap.
-
Por ser um framework baseado em PyTorch, parece possível aproveitar vários recursos do ecossistema PyTorch. No entanto, pela estrutura atual do projeto, a interoperabilidade com outros frameworks pode ser limitada.
-
Seria interessante se houvesse suporte à exportação de modelos via ONNX ou TorchScript. Além disso, vale considerar formas de integração com o ecossistema Apple, como conversão para CoreML no desenvolvimento de apps para iOS e macOS.
1 comentários
Opiniões do Hacker News
default_trainer.pydo CoreNet, ele usa tensores do PyTorch, mas implementa seu próprio método de treinamento. Implementa seu próprio agendador de LR e otimizador, e quem chama pode opcionalmente usar o Adam do PyTorch.