CoreNet: biblioteca para entrenar redes neuronales profundas
(github.com/apple)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
- Documentado en
mlx_example: ejemplos para ejecutar eficientemente modelos de CoreNet en Apple Siliconcorenet/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
Comentarios de Hacker News
default_trainer.pyde 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.