2 pontos por GN⁺ 2024-04-25 | 1 comentários | Compartilhar no WhatsApp

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
  • mlx_example: exemplos para executar modelos do CoreNet com eficiência no Apple Silicon
  • corenet/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, data etc.

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

 
GN⁺ 2024-04-25
Opiniões do Hacker News
  • O CoreNet evoluiu a partir do CVNets para abranger aplicações mais amplas além de visão computacional. Isso facilita o treinamento de modelos de base, incluindo LLMs.
  • Ao olhar o default_trainer.py do 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.
  • Em vez de colaborar com frameworks existentes, construir tudo do zero é uma escolha interessante (e provavelmente muito no estilo Apple).
  • Parece que os exemplos em MLX atualmente só permitem inferência. Isso pode servir como uma base inicial para uma implementação específica em MLX.
  • Considerando as aquisições recentes da Datakalab e da DarwinAI, é interessante ver como isso vai evoluir no próximo ano.
  • A Apple também está desenvolvendo ativamente a biblioteca axlearn, construída sobre Jax. Parece que metade da equipe de ML da Apple usa PyTorch, e a outra metade usa Jax.
  • O README também mencionava um novo modelo chamado CatLIP, mas o link está quebrado.
  • O CoreNet é construído com base em PyTorch.
  • Entendo que o MLX seja algo equivalente ao PyTorch, otimizado para Apple Silicon. Fico me perguntando se o CoreNet serve para treinamento distribuído de modelos em MLX, ou qual exatamente seria esse objetivo.
  • Seria ótimo se houvesse neste repositório um agente de LLM capaz de gerar pequenos exemplos de API para vários modelos e formas de uso.
  • Que biblioteca vocês recomendam para treinamento e inferência de redes neurais em Apple M1? Quero usar em C++ ou Rust, e a rede neural terá no máximo 5M de parâmetros.
  • Qual seria a vantagem de usar isto em vez do Huggingface Transformers com backend MPS?
  • Não está claro se há suporte para treinamento em Apple Silicon, a menos que eu tenha deixado passar algo no README.
  • É interessante que a Apple esteja promovendo informações abertas sobre treinamento de LLMs. O mundo está mudando.