Glossaire

Formation distribuée

Accélère la formation à l'IA avec la formation distribuée ! Apprends à réduire le temps de formation, à mettre à l'échelle les modèles et à optimiser les ressources pour les projets ML complexes.

Entraîne les modèles YOLO simplement
avec Ultralytics HUB

En savoir plus

La formation distribuée est une technique utilisée dans l'apprentissage automatique (ML) pour accélérer considérablement le processus de formation des modèles, en particulier ceux qui sont grands et complexes et qui sont courants dans l'apprentissage profond (DL). À mesure que les ensembles de données deviennent massifs et que les modèles tels que les transformateurs ou les grands réseaux convolutifs prennent de l'ampleur, leur formation sur un seul processeur, tel qu'un CPU ou même un puissant GPU, peut prendre un temps excessivement long - des jours, des semaines, voire des mois. La formation distribuée permet de surmonter ce goulot d'étranglement en divisant la charge de travail informatique entre plusieurs unités de traitement. Ces unités (souvent des GPU) peuvent résider dans une seule machine puissante ou être réparties sur plusieurs machines connectées en réseau, en utilisant fréquemment les ressources de l'informatique en nuage.

Comment fonctionne la formation distribuée

Le principe fondamental de la formation distribuée est le parallélisme, c'est-à-dire la décomposition de la tâche de formation de façon à ce que plusieurs parties puissent s'exécuter simultanément. Au lieu qu'un processeur traite toutes les données et tous les calculs de façon séquentielle, le travail est partagé entre plusieurs processeurs, souvent appelés "travailleurs". Il existe deux stratégies principales pour y parvenir :

  • Parallélisme des données : C'est l'approche la plus courante. Une copie complète du modèle est placée sur chaque employé. L'ensemble de données d'apprentissage est divisé en morceaux plus petits, et chaque employé traite le morceau qui lui est attribué en utilisant sa copie locale du modèle. Les travailleurs calculent les mises à jour des poids du modèle en fonction de leur sous-ensemble de données. Ces mises à jour (gradients) sont ensuite agrégées pour tous les travailleurs (souvent en faisant la moyenne) et utilisées pour mettre à jour le modèle principal ou synchroniser toutes les copies du modèle. Cela permet de traiter efficacement des lots plus importants. Des frameworks comme PyTorch proposent le parallélisme de données distribué (DDP) et TensorFlow fournit diverses stratégies d'entraînement distribué qui mettent en œuvre le parallélisme de données. Une communication efficace entre les travailleurs est cruciale, souvent gérée par des bibliothèques comme la bibliothèque de communication collective deNVIDIA (NCCL).
  • Parallélisme de modèle : Cette stratégie est généralement employée lorsqu'un modèle est si grand qu'il ne tient pas dans la mémoire d'un seul GPU. Au lieu de reproduire l'intégralité du modèle, les différentes parties (par exemple, les couches) du modèle sont placées sur différents travailleurs. Les données circulent séquentiellement à travers ces parties sur les travailleurs pendant les passes avant et arrière. Cette approche est plus complexe à mettre en œuvre que le parallélisme des données, mais elle est nécessaire pour former des modèles vraiment énormes. Certains frameworks proposent des outils pour aider, comme les approches deTensorFlow pour le parallélisme de modèle, et des techniques comme le parallélisme de pipeline sont souvent utilisées.

Applications dans le monde réel

La formation distribuée est indispensable pour de nombreuses applications d'intelligence artificielle (IA) de pointe :

  • Formation de grands modèles linguistiques (LLM) : Les modèles tels que le GPT-4 d'OpenAI ou le Gemini de Google ont des milliards ou des trillions de paramètres. Pour les entraîner, il faut répartir les calculs sur des milliers de GPU pendant de longues périodes. Cela est essentiel pour des tâches telles que le traitement du langage naturel (NLP), la traduction automatique et la construction de chatbots avancés.
  • Modèles avancés de vision par ordinateur : Entraîne-toi à utiliser des modèles de vision artificielle de pointe, tels que Ultralytics YOLO pour la détection d'objets ou des modèles complexes pour la segmentation d'images, sur de grands ensembles de données comme ImageNet ou COCO bénéficie énormément de l'entraînement distribué. Par exemple, l'entraînement d'un modèle de détection d'objets pour les véhicules autonomes implique de grandes quantités de données d'images et exige une grande précision, ce qui fait de l'entraînement distribué sur plusieurs GPU une nécessité pour obtenir des résultats dans un délai raisonnable. Cela s'applique également à des domaines spécialisés comme l'analyse d'images médicales.
  • Systèmes de recommandation : Des entreprises comme Netflix ou Amazon entraînent des modèles complexes sur les données d'interaction des utilisateurs pour générer des recommandations personnalisées. L'échelle de ces données nécessite souvent des approches distribuées.
  • Informatique scientifique : Les simulations à grande échelle dans des domaines tels que la modélisation climatique, la physique et la découverte de médicaments s'appuient souvent sur des principes de calcul distribué similaires à ceux utilisés dans la formation distribuée en ML.

Formation distribuée vs. autres méthodes de formation

Il est important de différencier les formations distribuées des concepts connexes :

  • Apprentissage fédéré : Bien que les deux impliquent plusieurs appareils, l'apprentissage fédéré est conçu pour les scénarios où les données sont décentralisées et ne peuvent pas (ou ne doivent pas) être déplacées vers un emplacement central en raison de préoccupations liées à la confidentialité des données (par exemple, la formation de modèles sur les données de l'utilisateur détenues sur les téléphones mobiles). Dans l'apprentissage fédéré, les mises à jour des modèles sont calculées localement sur les appareils et renvoyées à un serveur central pour agrégation, mais les données brutes ne quittent jamais l'appareil. L'apprentissage distribué suppose généralement que les données peuvent être déplacées et réparties sur le cluster de calcul (par exemple, dans un centre de données ou un cloud). Jette un coup d'œil à TensorFlow Federated pour un exemple de cadre.
  • Formation sur un seul appareil : Il s'agit de la méthode traditionnelle où l'ensemble du processus de formation s'exécute sur une seule CPU ou un seul GPU. Elle est plus simple à mettre en place(voir Ultralytics Quickstart) mais devient infaisable pour les modèles ou les ensembles de données de grande taille en raison des contraintes de temps et de mémoire.

Outils et mise en oeuvre

La mise en œuvre de la formation distribuée est facilitée par divers outils et plateformes :

  • Cadres de ML : Cadres de base tels que PyTorch et TensorFlow offrent une prise en charge intégrée des API de formation distribuées.
  • Bibliothèques spécialisées : Des bibliothèques comme Horovod, développée par Uber, offrent une approche agnostique du cadre pour l'apprentissage profond distribué.
  • Plateformes cloud : Les principaux fournisseurs de cloud comme AWS, Google Cloud et Microsoft Azure proposent des services de ML gérés et une infrastructure optimisée pour la formation distribuée à grande échelle.
  • Plateformes MLOps : Les plateformes comme Ultralytics HUB simplifient le processus en fournissant des interfaces pour gérer les ensembles de données, sélectionner les modèles et lancer les tâches de formation, y compris les options de formation dans le nuage qui gèrent l'infrastructure distribuée sous-jacente. De bonnes pratiques MLOps sont essentielles pour gérer efficacement la formation distribuée.

La formation distribuée est une technique fondamentale permettant le développement des modèles d'IA les plus puissants d'aujourd'hui en rendant la formation à grande échelle faisable et efficace.

Tout lire