Livre en ligne sur l’ingénierie du machine learning
(github.com/stas00)- Machine Learning Engineering Open Book est une ressource ouverte qui rassemble des méthodologies, des outils et des commandes pas à pas pour mener à bien l’entraînement, le fine-tuning et l’inférence de modèles LLM, VLM et RAG
- Le public visé est celui des ingénieurs et opérateurs en entraînement LLM/VLM, et l’ouvrage inclut de nombreux scripts et commandes copiables-exécutables pour résoudre rapidement les problèmes
- Le contenu s’appuie sur un savoir-faire accumulé à partir des expériences d’entraînement de BLOOM-176B en 2022, IDEFICS-80B en 2023, puis des modèles RAG chez Contextual.AI en 2024
- Le périmètre couvre le choix du cloud, les accélérateurs, le stockage, le réseau, l’orchestration, l’entraînement, l’inférence, le débogage, les tests et diverses ressources, avec des versions ebook en PDF et EPUB
- Il s’agit d’un dépôt public de connaissances permettant aux communautés qui ont du mal à manipuler directement de grands clusters de calcul ML d’apprendre indirectement un savoir opérationnel issu d’expériences réelles d’entraînement à grande échelle
Objectif du livre et public visé
- Machine Learning Engineering Open Book est une collection ouverte de connaissances consacrée à l’entraînement, au fine-tuning et à l’inférence des grands modèles de langage et des modèles multimodaux
- Son caractère est fortement technique, avec des scripts et des commandes prêtes à copier-coller afin que les ingénieurs et opérateurs en entraînement LLM/VLM puissent l’appliquer rapidement
- Le contenu du dépôt provient à l’origine de notes personnelles destinées à retrouver rapidement des solutions déjà étudiées et testées en pratique, puis a été partagé avec l’ensemble de la communauté ML
Un périmètre fondé sur l’expérience
- Une grande partie du savoir-faire a été accumulée lors d’expériences réelles d’entraînement de modèles à grande échelle
- Entraînement du modèle open source BLOOM-176B en 2022
- Entraînement du modèle multimodal IDEFICS-80B en 2023
- Entraînement de modèles RAG chez Contextual.AI en 2024
- L’accent est mis sur la transmission à la communauté de connaissances indirectes dans un domaine difficile à expérimenter directement en raison du coût élevé de location des grands clusters de calcul ML
Thèmes couverts
-
Insights
- AI Battlefield Engineering
- Comment choisir un fournisseur cloud
-
Hardware
- Compute : accélérateurs, CPU, mémoire CPU
- Storage : systèmes de fichiers locaux, distribués et partagés
- Network : réseau intra-nœud et inter-nœuds
-
Orchestration
- Systèmes d’orchestration pour gérer les conteneurs et les ressources
- SLURM : Simple Linux Utility for Resource Management
-
Training / Inference
- Guides liés à l’entraînement des modèles
- Enseignements liés à l’inférence des modèles
-
Development
- Débogage et résolution de problèmes, des plus simples aux plus complexes
- The Art of Debugging Open book, qui rassemble des recettes et des méthodologies associées
- Conseils et outils pour aider à écrire des tests
-
Miscellaneous
- Ressources chronologiques sur les LLM/VLM
Tableaux comparatifs et outils pour aller vite
- Les tableaux comparatifs des accélérateurs haute performance couvrent les TFLOPS théoriques ainsi que la taille et la vitesse de la mémoire des accélérateurs
- Les tableaux comparatifs réseau couvrent les vitesses théoriques du réseau inter-nœuds et du réseau intra-nœud
- Des raccourcis distincts sont proposés vers les outils les plus utilisés
all_reduce_bench.py: outil pour benchmarker le débit réseau plus facilement quenccl-teststorch-distributed-gpu-test.py: outil pour tester rapidement la connectivité inter-nœudsmamf-finder.py: outil pour trouver les mesures de TFLOPS réellement obtenables sur des accélérateurs
- Des raccourcis distincts sont aussi proposés vers les guides les plus utilisés
- Solutions de débogage rapidement applicables quand une application PyTorch se bloque ou se casse
- Cheat sheet et astuces pour les utilisateurs de SLURM
- Comment créer de petits modèles, jeux de données et tokenizers
- Collection de logbooks publics d’entraînement LLM/VLM
Formats de distribution et participation
- L’ebook est disponible sur le Hugging Face Hub
- L’ebook devrait être reconstruit toutes les quelques semaines, et des instructions sont également fournies pour générer soi-même la version la plus récente
- Les discussions autour de l’ingénierie ML peuvent avoir lieu dans les community discussions du dépôt
- Les bugs, fautes de frappe et propositions d’amélioration peuvent être soumis via les Issues ou par PR
- La licence du contenu est Attribution-ShareAlike 4.0 International
- Les informations de citation incluent
Machine Learning Engineering Open Book, l’année2023-2026et l’URL du dépôt GitHub
1 commentaires
Commentaires Hacker News
Je fais tous les jours du débogage de configurations d’entraînement de LLM dans le cadre d’un travail de support à la recherche, et je me dis que j’aurais vraiment aimé avoir ce genre de notes quand j’ai commencé.
Aujourd’hui, pour collecter des données de capture de mouvement destinées à l’animation de jeux/films, il existe deux systèmes : inertiel et optique. L’inertiel est plus simple et moins coûteux, mais il génère beaucoup d’erreurs de capture et d’imprécisions qui nécessitent des corrections manuelles ; l’optique est plus précis et demande moins de nettoyage, mais le matériel et l’espace coûtent cher.
L’idée serait de porter une combinaison de motion capture inertielle tout en enregistrant simultanément une session optique, puis d’entraîner un modèle de machine learning à la correction automatique des données de capture de mouvement. En théorie, il devrait être possible de faire passer les enregistrements inertiels dans un modèle de machine learning pour obtenir une précision de niveau optique.
Je me demande si c’est un bon sujet pour un premier projet, comment l’aborder, et s’il existe des projets existants à consulter.
J’aide des scientifiques appliqués sur des tâches liées à l’entraînement et au déploiement de modèles, et je me demande comment je pourrais être exposé à des travaux d’ingénierie plus bas niveau comme l’optimisation et la performance.
Il existe bien une équipe d’infra ML dans l’entreprise, mais son objectif est plutôt de construire des outils autour de la plateforme, pas de se concentrer sur l’exécution optimale des workloads.
Exemple : https://pytorch.org/tutorials/recipes/recipes/profiler_recip...
https://www.brendangregg.com/linuxperf.html
J’ai particulièrement aimé la partie Unsolicited Advice de la section AI Battlefield. Elle aborde de façon très réaliste la réalité où tout avance à une vitesse folle, et la charge émotionnelle de se sentir constamment submergé par les progrès acharnés et radicaux du développement de l’IA.
https://github.com/stas00/ml-engineering/blob/master/insight...
À quel point Slurm est-il répandu ?
Je ne connais pas les chiffres exacts, mais je suppose que l’écrasante majorité des supercalculateurs du Top 500 [3] tournent avec Slurm. Comme d’autres l’ont dit, la plupart des centres de calcul de recherche universitaires utilisent aussi Slurm, et il domine également dans les laboratoires nationaux du DoE américain.
Et fait amusant, peut-être légendaire : le nom « Simple Linux Utility for Resource Management (SLURM) » serait un rétroacronyme inspiré de la boisson 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
J’ai cliqué au hasard sur la section reproductibilité, et je me demande toujours comment obtenir la reproductibilité en entraînement distribué. Une synchronisation déterministe ne ralentit-elle pas les choses ? Pourtant, j’ai entendu dire qu’au moins dans quelques grandes entreprises, les entraînements sont reproductibles.
Comment peut-on acquérir de l’expérience sur ce genre de choses sans avoir de travail ?
Ce n’est pas très différent d’apprendre à programmer quand on n’a pas déjà un emploi de développeur.
Bien sûr, cela ne veut pas dire que l’un ou l’autre est facile : il faut un engagement important.
Comparé à des domaines comme le développement web, le marché de l’emploi ici est très réduit, et les projets exigent des spécialistes ayant des connaissances très approfondies. Ce n’est pas le genre de travail où ChatGPT ou Stack Overflow aident énormément.
Cette communauté est relativement petite, et il faut plusieurs choses pour y entrer : un certain niveau en machine learning, de solides compétences en code, une compréhension du fonctionnement des accélérateurs modernes, et la capacité à lire et comprendre les articles de recherche dans ce domaine.
Choisir quelque chose de « réalisable » est souvent délicat, donc n’ayez pas peur de réévaluer au bout de quelques semaines et d’ajuster vos attentes si nécessaire.
L’important est de continuer à avancer.
J’aimerais expérimenter ça, mais je n’ai pas de GPU correct. Je me demande comment les autres font tourner ça en pratique.
Quels comptes Twitter vaut-il mieux suivre pour rester à jour ?
Y a-t-il un PDF quelque part ? Je vois les instructions de build, mais pas le fichier lui-même.