Libro en línea de ingeniería de ML
(github.com/stas00)- Machine Learning Engineering Open Book es un recurso abierto que reúne metodologías, herramientas y comandos paso a paso para realizar con éxito el entrenamiento, el ajuste fino y la inferencia de modelos LLM, VLM y RAG
- Está dirigido a ingenieros y operadores de entrenamiento de LLM/VLM, e incluye muchos scripts y comandos listos para copiar y ejecutar para resolver problemas rápidamente
- El contenido se basa en conocimientos acumulados a partir de experiencias de entrenamiento del BLOOM-176B en 2022, IDEFICS-80B en 2023 y modelos RAG en Contextual.AI en 2024
- Su alcance incluye elección de nube, aceleradores, almacenamiento, red, orquestación, entrenamiento, inferencia, depuración, pruebas y recursos, y también ofrece ebooks en PDF y EPUB
- Es un repositorio público de conocimiento que permite a comunidades a las que les resulta difícil operar directamente clústeres de cómputo ML a gran escala aprender indirectamente conocimiento operativo surgido de experiencias reales de entrenamiento a gran escala
Propósito del libro y público objetivo
- Machine Learning Engineering Open Book es una colección abierta de conocimiento para el entrenamiento, ajuste fino e inferencia de modelos de lenguaje grandes y modelos multimodales
- Tiene un fuerte carácter técnico e incluye scripts y comandos listos para copiar y ejecutar para que ingenieros y operadores de entrenamiento de LLM/VLM puedan aplicarlos rápidamente
- El contenido del repositorio surgió a partir de notas personales para reencontrar rápido soluciones investigadas en el pasado y que realmente funcionaron, y luego se compartió con la comunidad de ML en general
Alcance basado en la experiencia
- Gran parte del conocimiento práctico se acumuló a partir de experiencias reales de entrenamiento de modelos a gran escala
- Entrenamiento del modelo open source BLOOM-176B en 2022
- Entrenamiento del modelo multimodal IDEFICS-80B en 2023
- Entrenamiento de modelos RAG en Contextual.AI en 2024
- Se enfoca en permitir que la comunidad aprenda de forma indirecta conocimientos de áreas difíciles de experimentar directamente debido al alto costo de alquilar clústeres de cómputo ML a gran escala
Temas organizados
-
Insights
- AI Battlefield Engineering
- Cómo elegir un proveedor de nube
-
Hardware
- Compute: aceleradores, CPU, memoria de CPU
- Storage: sistemas de archivos locales, distribuidos y compartidos
- Network: redes dentro del nodo y entre nodos
-
Orchestration
- Sistemas de orquestación para gestionar contenedores y recursos
- SLURM: Simple Linux Utility for Resource Management
-
Training / Inference
- Guías relacionadas con el entrenamiento de modelos
- Insights sobre inferencia de modelos
-
Development
- Depuración y troubleshooting para problemas fáciles y difíciles
- The Art of Debugging Open book, con recetas y metodologías relacionadas
- Consejos y herramientas para ayudar a escribir pruebas
-
Miscellaneous
- Recursos cronológicos de LLM/VLM
Tablas comparativas y herramientas para encontrar rápido
- Las tablas comparativas de aceleradores de alto rendimiento cubren los TFLOPS teóricos y el tamaño y la velocidad de la memoria del acelerador
- Las tablas comparativas de red cubren la velocidad teórica de las redes entre nodos y dentro del nodo
- Las herramientas de uso frecuente se ofrecen con accesos directos separados
all_reduce_bench.py: herramienta para medir throughput de red más fácilmente quenccl-teststorch-distributed-gpu-test.py: herramienta para probar rápidamente la conectividad entre nodosmamf-finder.py: herramienta para encontrar mediciones de TFLOPS realmente obtenibles en aceleradores
- También se ofrecen guías de uso frecuente con accesos directos separados
- Soluciones de depuración para aplicar rápidamente cuando una aplicación de PyTorch se cuelga o falla
- Cheatsheet y trucos para usuarios de SLURM
- Cómo crear modelos, datasets y tokenizers pequeños
- Colección de cuadernos de bitácora públicos de entrenamiento de LLM/VLM
Formatos de distribución y participación
- El ebook está disponible en Hugging Face Hub
- Está previsto que el ebook se reconstruya aproximadamente cada pocas semanas, y también se ofrecen instrucciones para compilar directamente la versión más reciente
- Las discusiones relacionadas con ingeniería de ML pueden hacerse en las community discussions del repositorio
- Los bugs, errores tipográficos y sugerencias de mejora pueden enviarse mediante Issue o PR
- La licencia del contenido es Attribution-ShareAlike 4.0 International
- La información de cita incluye
Machine Learning Engineering Open Book, el año2023-2026y la URL del repositorio de GitHub
1 comentarios
Opiniones en Hacker News
En mi trabajo de apoyo a investigación hago depuración de configuraciones de entrenamiento de LLM todos los días, y siento que me habría encantado tener notas como estas cuando empecé.
Actualmente, para recopilar datos de motion capture para animación de juegos/películas hay dos sistemas: inercial y óptico. El inercial es más fácil y barato, pero tiene muchos errores de captura e imprecisiones, por lo que requiere corrección manual; el óptico es más preciso y necesita menos limpieza, pero el hardware y el espacio son costosos.
La idea es usar un traje de motion capture inercial y, al mismo tiempo, grabar una sesión óptica, para luego entrenar con machine learning la corrección automática de datos de motion capture. En teoría, parecería posible pasar los datos grabados con el sistema inercial por machine learning y obtener una precisión comparable a la del sistema óptico.
Me gustaría saber si es un buen primer proyecto, cómo convendría abordarlo y si existen proyectos previos que sirvan de referencia.
Trabajo ayudando a científicos aplicados con tareas relacionadas con entrenamiento y despliegue de modelos, y me pregunto cómo podría exponerme a trabajos de ingeniería de más bajo nivel, como optimización y rendimiento.
En la empresa hay un equipo de infraestructura de ML, pero su objetivo es construir herramientas alrededor de la plataforma, no enfocarse en ejecutar las cargas de trabajo de la manera más óptima.
Ej.: https://pytorch.org/tutorials/recipes/recipes/profiler_recip...
https://www.brendangregg.com/linuxperf.html
Me gustó especialmente la parte Unsolicited Advice de la sección AI Battlefield. Trata de forma muy realista la realidad de que todo se mueve a una velocidad vertiginosa y la carga emocional de sentirse siempre como si uno se estuviera ahogando ante el avance radical e implacable del desarrollo de IA.
https://github.com/stas00/ml-engineering/blob/master/insight...
¿Qué tan ampliamente se usa Slurm?
No conozco las cifras exactas, pero estimo que la enorme mayoría de las supercomputadoras del Top 500 [3] ejecutan Slurm. Como otros dijeron, la mayoría de los centros de cómputo de investigación académica también usan Slurm, y en los laboratorios nacionales del DoE de EE. UU. Slurm también domina.
Y como dato curioso, quizá incluso una leyenda, se dice que el nombre “Simple Linux Utility for Resource Management (SLURM)” es un retroacrónimo inspirado en la bebida Slurm de Futurama [4].
[1] https://en.wikipedia.org/wiki/Oracle_Grid_Engine
[2] https://github.com/adaptivecomputing/torque
[3] https://www.top500.org/
[4] https://futurama.fandom.com/wiki/Slurm
Hice clic al azar en la sección de reproducibilidad y todavía me pregunto cómo se logra la reproducibilidad en entrenamiento distribuido. ¿No se vuelve lento si se hace sincronización determinista? Aun así, escuché que al menos en algunas grandes empresas el entrenamiento sí es reproducible.
¿Cómo se puede obtener experiencia con estas cosas sin tener un trabajo?
No es muy distinto de aprender programación sin tener ya un trabajo de programación.
Claro que eso no significa que ninguna de las dos cosas sea fácil; requiere bastante dedicación.
Comparado con áreas como desarrollo web, el mercado laboral aquí es muy pequeño, y los proyectos requieren especialistas con conocimiento muy profundo. No es el tipo de trabajo en el que ChatGPT o Stack Overflow ayuden demasiado.
Esta comunidad es relativamente pequeña, y para empezar se necesitan varias cosas: cierto nivel de machine learning, buena capacidad de programación, conocimiento de cómo funcionan los aceleradores modernos y la capacidad de leer y entender papers en esta línea.
Elegir algo “viable” suele ser complicado, así que no tengas miedo de reevaluar después de unas semanas y ajustar las expectativas si hace falta.
Lo importante es seguir avanzando.
Quiero experimentar con esto, pero no tengo una GPU decente. Me pregunto cómo lo ejecuta la gente en la práctica.
Para mantenerse al día, ¿qué cuentas de Twitter conviene seguir?
¿Hay un PDF en algún lado? Veo las instrucciones de build, pero no veo el archivo real.