Qu’est-ce que le machine learning distribué ?

Auteurs

Ivan Belcic

Staff writer

Cole Stryker

Staff Editor, AI Models

IBM Think

Qu’est-ce que le machine learning distribué ?

Le machine learning distribué (ML) est une approche des tâches de ML à grande échelle dans laquelle les workloads sont répartis sur plusieurs appareils ou processeurs au lieu de s’exécuter sur un seul ordinateur. Le ML distribué est le plus souvent utilisé pour entraîner des modèles complexes et volumineux, tels que les réseaux de neurones, où les exigences de calcul sont particulièrement élevées. 

À mesure que les modèles IA gagnent en taille et en complexité, les ressources de calcul nécessaires à l’entraînement peuvent dépasser la capacité d’un seul appareil. De même, les tâches complexes à grande échelle peuvent être trop exigeantes ou nécessiter plus de mémoire qu’un seul appareil ne peut en fournir. Les systèmes distribués répartissent le jeu de données ou le modèle d’IA sur plusieurs appareils, ou nœuds, afin d’améliorer les performances, la précision et l’efficacité. 

Le ML distribué est un sous-ensemble de l’informatique distribuée, qui englobe des efforts plus larges pour répartir l’informatique sur plusieurs systèmes de traitement.

Les dernières tendances en matière d’IA, vues par des experts

Obtenez des informations sur les actualités les plus importantes et les plus intrigantes en matière d’intelligence artificielle. Abonnez-vous à notre newsletter hebdomadaire Think. Lire la Déclaration de confidentialité d’IBM.

Merci ! Vous êtes abonné(e).

Vous recevrez votre abonnement en anglais. Vous trouverez un lien de désabonnement dans chaque newsletter. Vous pouvez gérer vos abonnements ou vous désabonner ici. Consultez la Déclaration de confidentialité d’IBM pour plus d’informations.

Types de machine learning distribué

Les approches de machine learning distribué comprennent : 

  • Parallélisme des données : répartition du jeu de données sur plusieurs appareils 

  • Parallélisme des modèles : partitionnement d’un modèle sur plusieurs dispositifs 

  • Parallélisme hybride : combinaison des aspects du parallélisme de données et du parallélisme de modèles

Le cadre des exigences pour le ML distribué utilise un ou plusieurs nœuds pour maintenir les mises à jour des paramètres du modèle, tandis que les nœuds gèrent les données et les calculs.

Parallélisme des données

Le parallélisme des données partitionne un grand jeu de données utilisé comme données d’entraînement en un nombre de groupes égal au nombre de nœuds du système. Chaque nœud héberge une copie des modèles IA et les alimente avec un sous-ensemble des données distribuées. Les opérations de parallélisme des données peuvent être exécutées de manière synchrone ou asynchrone. L’entraînement synchrone est plus courant avec les modèles d’apprentissage profond, car elle garantit la cohérence, mais au détriment de la vitesse. 

Comme chaque nœud exécute une copie complète du modèle, le matériel doit disposer de suffisamment de mémoire pour l’héberger. Cependant, la workload d’IA par nœud est réduite, car chaque nœud ne traite qu’une partie du jeu de données.

Apprentissage fédéré

L’apprentissage fédéré ressemble au parallélisme de données dans la mesure où plusieurs nœuds entraînent des copies d’un modèle sur des sous-ensembles de données. Cependant, les partitions de données ne sont pas créées à partir d’un pool de données centralisé, mais sont constituées de données locales vers chaque nœud. Les mises à jour des modèles sont agrégées entre les nœuds, tandis que les données ne quittent jamais leur source d’origine. 

Étant donné que chaque jeu de données est localisé, les data scientists utilisent souvent l’apprentissage fédéré pour les applications d’apprentissage profond distribuées impliquant une sécurité élevée des données ou des réglementations juridiques. Les pools de données centralisés peuvent exposer accidentellement des informations personnelles identifiables (PII) lors de la transmission. L’apprentissage fédéré atténue ce risque en isolant chaque jeu de données dans son propre nœud.

AI Academy

Devenir un expert en IA

Obtenez les connaissances nécessaires pour privilégier les investissements dans l’IA qui favorisent la croissance commerciale. Lancez-vous dès aujourd’hui avec notre AI Academy gratuite et menez l’avenir de l’IA au sein de votre organisation.

Parallélisme des modèles

Dans le parallélisme des modèles, un modèle est divisé en composants, tels que les couches de réseaux de neurones, qui peuvent s’exécuter indépendamment et simultanément sur des nœuds. Chaque partie du modèle utilise les mêmes données. Le parallélisme de modèle est également connu sous le nom de parallélisme de réseau

Lorsqu’un modèle de ML unique est trop volumineux pour être géré par une seule machine, le parallélisme des modèles lui permet de s’exécuter sur plusieurs nœuds. Chaque nœud traite une partie du modèle, de sorte que ses besoins en calcul et en mémoire sont moins importants que si une seule machine devait exécuter le modèle complet. 

Le parallélisme de modèle est généralement plus difficile à mettre en œuvre que le parallélisme de données. L’algorithme distribué sélectionné de machine learning distribué influe directement sur l’évolutivité de la méthode, certains se prêtant mieux à la technique que d’autres. Le système doit être conçu de manière à minimiser le volume de données partagées entre les nœuds. Les systèmes de parallélisme de modèles hautes performances nécessitent une conception et une optimisation de niveau expert. 

Le parallélisme des modèles est souvent associé au parallélisme des données, de sorte que chaque segment du modèle traite une partie différente des données d’entrée. Les résultats sont agrégés sur l’ensemble du réseau.

Parallélisme des pipelines 

Le parallélisme de pipeline est un type de parallélisme de modèle qui partitionne un modèle de manière séquentielle. Chaque étape du modèle est hébergée sur son propre nœud. Les lots de données sont traités dans l’ordre à travers les différentes étapes, un peu comme une brigade de seaux à l’ancienne faisait passer un seau d’eau d’une personne à l’autre, de la source d’eau à l’incendie. 

Le parallélisme du pipeline peut améliorer le débit, c’est-à-dire le volume de données qu’un modèle peut traiter en même temps. Cependant, cette augmentation s’accompagne d’une augmentation de la latence, c’est-à-dire le temps nécessaire pour générer un résultat après avoir reçu une entrée. 

L’augmentation de la latence est due à la phase de montée en puissance au cours de laquelle les premiers micro-lots de données sont transmis à travers la séquence. Les étapes suivantes dans le pipeline de machine learning ne peuvent pas s’initialiser tant que les premiers micro-lots de données n’ont pas passé par les étapes précédentes.

Parallélisme tensoriel

Le parallélisme tenseur entre en jeu lorsque même une seule couche d’un réseau neuronal profond nécessite trop de puissance de calcul ou prend trop de place pour un seul appareil. L’auto-attention et les couches d’embedding, deux pierres angulaires de l’architecture transformatrice, peuvent atteindre une taille très importante, ce qui signifie que pratiquement tous les développements de grands modèles de langage (LLM) impliquent le parallélisme tenseur. Sans parallélisme tenseur, il serait pratiquement impossible d’entraîner des modèles de LLM, car les couches sont trop volumineuses pour un seul dispositif. 

Dans le parallélisme tensoriel, les paramètres d’une seule couche sont hébergés sur plusieurs GPU (unités de traitement graphique) ou TPU (unités de traitement tensoriel). Chaque appareil calcule une partie des opérations d’une seule couche, et les résultats partiels sont agrégés pour produire la sortie de la couche. 

Par rapport au parallélisme de données et à de nombreux autres types de parallélisme de modèles, le workflow du parallélisme tensoriel nécessite beaucoup plus de communication entre les nœuds. Les réseaux à haut débit peuvent contribuer à réduire les goulots d’étranglement dans les communications.

Parallélisme hybride

Les techniques de parallélisme des modèles et des données ne sont pas souvent utilisées de manière isolée. Elles sont souvent combinées dans diverses configurations de parallélisme hybride. Les cadres d’apprentissage profond open source PyTorch et TensorFlow, qui prennent tous deux en charge Python, sont couramment utilisés pour créer des systèmes de machine learning distribués. 

La plupart des modèles linguistiques à grande échelle, y compris la famille GPT, s’appuient sur le parallélisme hybride pour s’entraîner efficacement à l’échelle.

Fonctionnement du machine learning distribué

Le ML distribué peut améliorer chaque étape du pipeline du ML : le processus de création, d’entraînement et de déploiement des modèles de machine learning. Prétraitement, entraînement, optimisation, validation, inférence et déploiement 

  • Prétraitement des données distribuées 

  • Entraînement distribué

  • Réglage fin distribué 

  • Validation distribuée 

  • Inférence distribuée 

  • Déploiement distribué 

Prétraitement des données distribuées

Le prétraitement des données distribuées utilise des réseaux de nœuds liés, les multiples processeurs ou appareils, et non les neurones individuels des réseaux de neurones, parfois appelés « nœuds » afin de préparer de grands jeux de données pour l’analyse et l’utilisation ultérieure. 

Un nœud de contrôle central gère le workflow, en divisant les données et en les affectant aux nœuds de travail. La décentralisation du travail grâce au traitement parallèle augmente l’évolutivité et l’efficacité par rapport aux modèles traditionnels qui utilisent un seul appareil.

Entraînement distribué

L’entraînement distribué tire parti de techniques de ML distribuées pour diffuser l’entraînement des modèles sur plusieurs appareils. Par exemple, cette technique est souvent utilisée pour les grands réseaux de neurones. Lorsque le réseau, le jeu de données d’entraînement ou les deux sont trop grands pour un seul processeur, l’entraînement distribué répartit le workload sur plusieurs serveurs, GPU ou machines. 

La descente de gradient stochastique (SGD) est un algorithme d’apprentissage qui divise le jeu de données en mini-lots et calcule le gradient de la fonction de perte après chaque lot. L’utilisation de mini-lots au lieu d’un jeu de données complet améliore l’efficacité de l’entraînement. 

La fonction de perte mesure l’erreur dans les prédictions du modèle, et l’objectif de SGD est de descendre le gradient pour minimiser la valeur de la fonction. Comme pour l’entraînement des modèles standard, le processus d’entraînement est considéré comme terminé lorsque le modèle atteint la convergence, c’est-à-dire lorsque l’algorithme SGD minimise avec succès la valeur de la fonction. 

Les nœuds traitent les mini-lots en parallèle, ce qui est possible, car chaque lot est traité indépendamment des autres à chaque itération. Chaque nœud calcule son gradient, puis transmet la valeur actualisée du gradient aux autres nœuds du réseau. Les autres nœuds worker intègrent les mises à jour qu’ils reçoivent dans leurs propres modèles, ce qui permet de s’assurer que toutes les copies du modèle restent identiques tout au long du processus d’entraînement. 

La fonction AllReduce est une opération de communication collective qui permet à chaque nœud de partager ses résultats et de propager les résultats agrégés à travers le réseau. AllReduce permet à tous les nœuds de synchroniser les mises à jour des paramètres du modèle et de maintenir la cohérence. AllReduce, longtemps utilisé dans le calcul à haute performance, a été popularisé dans les cadres des exigences ML tels que Horovod. 

SGD peut être exécuté de manière synchrone ou asynchrone. Le SGD synchrone met à jour tous les nœuds en même temps, ce qui maintient la cohérence au prix de retards potentiels si certains nœuds sont à la traîne. Le SGD asynchrone met à jour les paramètres dès qu’une mise à jour est prête, mais certains nœuds peuvent recevoir des mises à jour qui n’incluent pas les valeurs les plus récentes. 

En réduisant les ressources informatiques nécessaires par appareil, l’entraînement distribué peut accélérer les délais d’entraînement. En raison de sa forte intensité de calcul, l’entraînement est l’un des principaux cas d’utilisation de l’application distribuée de ML.

Réglage fin distribué 

Les mêmes principes et avantages de l’entraînement distribué s’appliquent au réglage fin distribué. Le réglage fin entraîne un modèle pré-entraîné pour lui permettre de se spécialiser dans des tâches plus spécifiques. L’application de techniques d’apprentissage automatique distribué rend le processus plus rapide, plus efficace et plus évolutif.

Validation distribuée 

La validation est le processus d’évaluation de performance d’un modèle formé. La répartition du jeu de données de validation ou d’un grand modèle sur plusieurs nœuds offre les mêmes avantages que le reste du processus d’entraînement réparti. 

Inférence distribuée

L’inférence est le processus par lequel un modèle d’IA entraîné traite de nouvelles données pour reconnaître des schémas et générer des productions ou des prédictions. Distribuer le workload sur plusieurs appareils permet d’exploiter des modèles IA trop volumineux pour une seule machine. L’inférence distribuée peut également permettre d’augmenter le débit et de réduire le temps de latence.

Déploiement distribué 

Le déploiement distribué gère les opérations d’une application à travers un réseau de nœuds. L’équilibrage de la charge entre les nœuds de travail permet d’atténuer les goulets d’étranglement et d’optimiser l’efficacité des ressources, en augmentant le débit et en réduisant la latence.

Avantages du ML distribué

Les avantages du machine learning distribué sont les suivants : 

  • Efficacité 

  • Évolutivité

  • Redondance

Efficacité

L’automatisation et la répartition du workload entre plusieurs appareils réduisent la charge sur un seul appareil. Les nœuds peuvent fonctionner en parallèle pour effectuer des tâches de longue durée plus rapidement, puis agréger leurs productions pour obtenir le résultat final. 

L’apprentissage d’un modèle de reconnaissance d’images sur ImageNet (un jeu de données comprenant plus de 14 millions d’images étiquetées) prendrait des semaines sur un seul processeur graphique. Avec le ML distribué, même une petite startup pourrait réaliser cette tâche en quelques heures.

Évolutivité

Les entreprises n’ont pas besoin d’investir dans des ordinateurs ultra-puissants pour faire fonctionner les LLM et d’autres systèmes gourmands en ressources. L’informatique distribuée permet aux fournisseurs de services cloud de coordonner une vaste infrastructure sur de nombreux serveurs et centres de données, et de la mettre à la disposition des clients d’entreprise à la demande.

Les tâches intensives en science des données, telles que traitement de données avec big data peuvent être réalisées sans investissement important en infrastructure. Le traitement de données à grande échelle permet même aux petites startups de proposer à leurs utilisateurs des services tels que des systèmes de recommandation ou des chatbots

Les centres de données à grande échelle se situent à l’autre extrémité du spectre de l’évolutivité. Lorsque les ressources le permettent, les entreprises construisent des clusters de serveurs massifs pour faire fonctionner les réseaux de neurones profonds les plus avancés. Il ne serait pas possible d’exploiter des modèles d’une telle taille sur des milliers de GPU sans ML distribué.

Redondance

De nombreux systèmes réels s’appuient sur la tolérance aux pannes, c’est-à-dire la capacité de continuer à fonctionner même en cas de défaillance de nœuds individuels. Les fournisseurs de modèles doivent s’assurer que les utilisateurs individuels ainsi que les applications connectées aux API puissent bénéficier d’un accès ininterrompu. Dans le cas du ML distribué, la redondance préserve le temps de fonctionnement en répliquant les processus sur les nœuds afin que les défaillances n’interrompent pas le service.

Défis du ML distribué

Voici les défis d’une implémentation efficace du ML distribué : 

  • Des goulots d’étranglement sur le réseau

  • Frais généraux de synchronisation 

  • Consommation d’énergie

Goulets d’étranglement du réseau

L’insuffisance de la bande passante entre les nœuds est une cause fréquente de goulots d’étranglement dans les réseaux distribués de ML. Les méthodes telles que le parallélisme tensoriel, qui nécessitent davantage de communication, sont les plus gourmandes en bande passante. Si le réseau n’est pas en mesure de fournir la largeur de bande requise, les projets de ML distribués devront faire face à des temps d’entraînement accrus et à une évolutivité réduite.

Frais généraux de synchronisation

La surcharge de synchronisation est un délai qui se produit lorsqu’une tâche ne peut pas commencer tant qu’une autre tâche n’est pas terminée. Dans un système synchrone, tous les nœuds de travail doivent télécharger des données partagées avant de passer à l’étape suivante de l’entraînement. Ce moment est connu sous le nom de barrière de synchronisation, car la phase suivante ne commence pas tant que tous les nœuds ne sont pas synchronisés. 

Les nœuds retardataires, c’est-à-dire les travailleurs qui mettent plus de temps que les autres à accomplir leur tâche, ralentissent ainsi l’ensemble du processus. Les systèmes asynchrones éliminent les barrières liées au risque de voir certains nœuds fonctionner avec des configurations de paramètres obsolètes.

Consommation d’énergie

Les réseaux distribués peuvent être de grands consommateurs d’énergie, non seulement en raison du nœud, mais aussi de la communication entre eux. La consommation d’énergie peut varier en fonction de la mise en œuvre et de l’architecture du système de ML distribué. 

  • Exigences informatiques : les GPU à performance élevée nécessaires à de nombreuses tâches de ML difficiles consomment beaucoup d’énergie. 

  • Communication : les nœuds ont besoin de réseaux à haut débit pour communiquer efficacement et minimiser le temps système de synchronisation. 

  • Cloud ou edge computing : les centres de données hyperscale centralisés qui alimentent les modèles IA consomment d’énormes quantités d’énergie. L’edge computing peut contribuer à réduire les coûts du réseau. 

  • Algorithmes et traitement des données : le choix du bon algorithme et le respect des bonnes pratiques de traitement des données, telles que l’ingénierie des fonctionnalités, peuvent rendre les modèles plus efficaces.

Cadres de machine learning distribués

Les cadres des exigences de ML distribués implémentent le machine learning tout en optimisant l’utilisation de la mémoire et des ressources de calcul. Ils peuvent également contribuer à faire évoluer les implémentations de ML, à raccourcir les délais d’entraînement et à contrôler les coûts.

Voici les cadres des exigences distribués les plus notables du ML :

  • PyTorch distribué
     

  • Apache Spark
     

  • TensorFlow distribué
     

  • Ray Train
     

  • InstructLab

PyTorch distribué

Disponible dans le cadre des exigences de ML PyTorch, PyTorch Distributed est un ensemble d’outils permettant de créer et de faire évoluer des modèles d’apprentissage profond sur plusieurs appareils. Le package torch.distribued couvre la communication intra-nœuds, par exemple avec AllReduce. La prise en charge intégrée du parallélisme des données et du parallélisme des modèles permet de recourir à diverses approches d’entraînement distribués.

Apache Spark

Apache Spark est un cadre de ML de longue date qui prend en charge l’entraînement distribué. Les utilisateurs peuvent créer des pipelines ML de bout en bout qui s’intègrent à l’écosystème Spark dans son ensemble, y compris Spark SQL pour la manipulation de base de données. Spark propose deux bibliothèques : la première MLlib et la plus récente SparkML.

TensorFlow distribué

L’API tf.distribute.Stratégie au sein de TensorFlow ouvre la porte au ML distribué et contient le support pour une gamme de schémas : plusieurs GPU sur une machine, plusieurs GPU sur plusieurs machines, etc. Par exemple, ParameterServerStrategy stocke les paramètres sur des serveurs dédiés, à partir desquels les nœuds worker y accèdent.

Formation Ray

Ray Train est la bibliothèque d’entraînement et de mise au point distribuée évolutive dans le cadre des exigences de Ray ML pour l’informatique distribuée. Ray Train est compatible avec PyTorch et TensorFlow. La bibliothèque Ray Tune prend en charge le réglage des hyperparamètres distribués sur plusieurs appareils.

InstructLab

La nouvelle approche d’InstructLab en matière de machine learning distribuée évite le cluster de GPU traditionnel au profit d’une approche communautaire, un peu comme une collecte de fonds participative. Les membres de la communauté contribuent aux mises à jour des paramètres d’un référentiel centralisé et peuvent affiner les modèles sur leurs appareils personnels.

Solutions connexes
IBM watsonx.ai

Entraînez, validez, réglez et déployez une IA générative, des modèles de fondation et des capacités de machine learning avec IBM watsonx.ai, un studio d’entreprise nouvelle génération pour les générateurs d’IA. Créez des applications d’IA en peu de temps et avec moins de données.

Découvrir watsonx.ai
Solutions d’intelligence artificielle

Mettez l’IA au service de votre entreprise en vous appuyant sur l’expertise de pointe d’IBM dans le domaine de l’IA et sur son portefeuille de solutions.

Découvrir les solutions d’IA
Conseils et services en matière d’IA

Réinventez les workflows et les opérations critiques en ajoutant l’IA pour optimiser les expériences, la prise de décision et la valeur métier en temps réel.

Découvrir les services d’IA
Passez à l’étape suivante

Bénéficiez d’un accès centralisé aux fonctionnalités couvrant le cycle de développement de l’IA. Produisez des solutions IA puissantes offrant des interfaces conviviales, des workflows et un accès à des API et SDK conformes aux normes du secteur.

Découvrir watsonx.ai Réserver une démo en direct