2 puntos por GN⁺ 2024-04-25 | 1 comentarios | Compartir por WhatsApp

Introducción a CoreNet, el framework de deep learning desarrollado por Apple

  • CoreNet es un framework de deep learning desarrollado por Apple que permite entrenar modelos estándar o nuevos de gran escala para diversas tareas
    • Soporta tareas como Foundation Models (CLIP, LLM), clasificación de objetos, detección de objetos, segmentación semántica, entre otras
  • La versión v0.1.0, actualizada recientemente, incluye OpenELM, CatLIP, ejemplos con MLX y más

Resultados de investigación de Apple usando CoreNet

  • OpenELM: modelo de lenguaje eficiente y de código abierto para entrenamiento e inferencia
  • CatLIP: logra un rendimiento al nivel de CLIP con un preentrenamiento 2.7 veces más rápido usando datos imagen-texto a escala web
  • FastVit: Vision Transformer híbrido rápido que aprovecha la reparametrización estructural
  • Bytes Are All You Need: Transformer que opera directamente a nivel de bytes de archivos
  • MobileOne: red backbone móvil con una latencia de 1 ms
  • RangeAugment: técnica eficiente de augmentación online que utiliza Range Learning
  • MobileViT: Vision Transformer ligero y amigable con dispositivos móviles
  • Además, se presentan muchos otros resultados de investigación

Instalación y configuración del entorno de desarrollo

  • Se requiere instalar Git LFS (necesario para pruebas, ejecutar Jupyter Notebook y contribuir)
  • En Linux se recomienda Python 3.10+ y PyTorch v2.1.0+
  • En macOS, Python 3.9+ es suficiente
  • Los paquetes de dependencias opcionales son necesarios para contribuir o ejecutar pruebas
  • Se explican métodos detallados de instalación en Linux y macOS, así como la instalación de paquetes para procesamiento de audio y video

Estructura de directorios de CoreNet

  • tutorials: ejemplos introductorios
    • Entrenar un modelo desde cero con un nuevo dataset
    • Guía para entrenamiento con SLURM y multinodo
    • Ejemplos de CLIP, segmentación semántica y detección de objetos
  • projects: ofrece recetas de entrenamiento, pesos preentrenados y checkpoints para cada tarea
    • Documentado en README.md, con enlaces a pesos preentrenados e información de citas
    • Proporciona configuraciones reproducibles de entrenamiento/evaluación mediante archivos <task_name>/<model_name>.yaml
  • mlx_example: ejemplos para ejecutar eficientemente modelos de CoreNet en Apple Silicon
  • corenet/modeling/models: implementaciones de modelos organizadas por tarea
    • Se define el nombre de la tarea y del modelo con decoradores
    • Se explica cómo especificar la clase de modelo a usar desde archivos de configuración YAML
  • corenet/data/datasets: datasets organizados por tarea
  • También se explican otros directorios de implementación de clases referenciadas desde configuraciones YAML
    • loss_fn, metrics, optims, data, etc.

Información del proyecto CoreNet

  • Sachin inició el desarrollo, y actualmente lo mantienen Sachin, Maxwell Horton, Mohammad Sekhavat y Yanzi Jin
  • Se agradecen los Pull Requests de la comunidad. Consultar la documentación de contribución.
  • CoreNet es un proyecto que evolucionó a partir de CVNets y se amplió para soportar el entrenamiento de Foundation Models como LLM, además de visión

Opinión de GN⁺

  • CoreNet parece ser un framework de deep learning integral que abarca modelos SOTA recientes. Al ofrecer implementaciones de modelos SOTA junto con pipelines de entrenamiento, parece facilitar la reproducción de resultados de investigación existentes.

  • Al ser un framework desarrollado por Apple, se puede esperar una ejecución optimizada en dispositivos Apple Silicon. En particular, los ejemplos con MLX permiten vislumbrar formas de optimización en Apple Silicon.

  • Una característica destacada es que soporta no solo tareas de visión, sino también el entrenamiento de Foundation Models como LLM. Sin embargo, la versión publicada actualmente es la 0.1.0, por lo que aún parece estar en una etapa inicial. Da curiosidad conocer los planes de actualización y la hoja de ruta futura.

  • Al estar basado en PyTorch, parece que podrá aprovechar las diversas capacidades del ecosistema de PyTorch. No obstante, dada la estructura actual del proyecto, la interoperabilidad con otros frameworks parece difícil.

  • Sería bueno que ofreciera funciones de exportación de modelos mediante ONNX o TorchScript. Además, también valdría la pena considerar formas de integración con el ecosistema de Apple, como la conversión a CoreML al desarrollar apps para iOS y macOS.

1 comentarios

 
GN⁺ 2024-04-25
Comentarios de Hacker News
  • CoreNet evolucionó a partir de CVNets y ahora abarca aplicaciones más amplias, más allá de la visión por computadora. Esto facilita el entrenamiento de modelos fundacionales, incluidos los LLM.
  • Al ver default_trainer.py de CoreNet, usa tensores de PyTorch pero implementa su propio método de entrenamiento. Implementa su propio scheduler de LR y optimizador, y quien lo llama puede usar opcionalmente Adam de PyTorch.
  • Es una decisión interesante, y quizá muy al estilo de Apple, construir desde cero en lugar de colaborar con frameworks existentes.
  • Parece que los ejemplos de MLX por ahora solo permiten inferencia. Da la impresión de que podría servir como punto de aterrizaje para una implementación especializada en MLX.
  • Considerando las adquisiciones recientes de Datakalab y DarwinAI, resulta interesante ver cómo avanzará esto durante el próximo año.
  • Apple también está desarrollando activamente la biblioteca axlearn, construida sobre Jax. Parece que la mitad de los equipos de ML de Apple usa PyTorch y la otra mitad usa Jax.
  • En el README también se menciona un modelo nuevo llamado CatLIP, pero el enlace está roto.
  • CoreNet está construido sobre PyTorch.
  • Entiendo que MLX es algo equivalente a PyTorch, optimizado para Apple Silicon. Me pregunto si CoreNet está pensado para entrenamiento distribuido de modelos MLX o cuál sería exactamente su propósito.
  • Estaría bien contar con un agente LLM en este repositorio que pudiera generar pequeños ejemplos de API para distintos modelos y formas de uso.
  • ¿Qué biblioteca recomiendan para entrenamiento e inferencia de redes neuronales en Apple M1? Quisiera usarla desde C++ o Rust, y la red tendría como máximo 5M parámetros.
  • ¿Qué ventaja tendría usar esto en lugar de Huggingface Transformers con backend MPS?
  • No queda claro si soporta entrenamiento en Apple Silicon, al menos que se me haya pasado en el README.
  • Es interesante que Apple esté impulsando información abierta sobre entrenamiento de LLM. El mundo está cambiando.