Distributed Training
Découvre comment l’entraînement distribué met à l’échelle les charges de travail d’IA sur plusieurs GPU. Apprends à accélérer l’entraînement d’Ultralytics YOLO26 avec le DDP pour obtenir des résultats plus rapides et précis.
L'entraînement distribué est une méthode d'apprentissage automatique dans laquelle la charge de travail liée à l'entraînement d'un modèle est répartie entre plusieurs processeurs ou machines. Cette approche est essentielle pour gérer des jeux de données à grande échelle et des architectures de réseaux neuronaux complexes qui prendraient autrement un temps impraticable à entraîner sur un seul appareil. En exploitant la puissance de calcul combinée de plusieurs processeurs graphiques (GPUs) ou unités de traitement tensoriel (TPUs), l'entraînement distribué accélère considérablement le cycle de développement, permettant aux chercheurs et aux ingénieurs d'itérer plus rapidement et d'obtenir une meilleure précision avec leurs modèles.
Fonctionnement de l'entraînement distribué#
L'idée centrale de l'entraînement distribué est la parallélisation. Au lieu de traiter les données séquentiellement sur une seule puce, la tâche est divisée en petits blocs traités simultanément. Deux stratégies principales permettent d'y parvenir :
- Parallélisme des données : Il s'agit de l'approche la plus courante pour des tâches comme la détection d'objets. Dans cette configuration, une copie du modèle entier est placée sur chaque appareil. Les données d'entraînement globales sont réparties en lots plus petits, et chaque appareil traite un lot différent au même moment. Après chaque étape, les gradients (mises à jour du modèle) sont synchronisés sur tous les appareils afin de garantir la cohérence des poids du modèle.
- Parallélisme du modèle : Lorsqu'un réseau neuronal (NN) est trop volumineux pour tenir dans la mémoire d'un seul GPU, le modèle lui-même est réparti entre plusieurs appareils. Différentes couches ou composants du modèle résident sur différentes puces, et les données circulent entre elles. Cette approche est souvent nécessaire pour entraîner d'immenses modèles de fondation et grands modèles de langage (LLMs).
Applications concrètes#
L'entraînement distribué a transformé des secteurs entiers en permettant de résoudre des problèmes qui étaient auparavant irréalisables sur le plan du calcul.
- Conduite autonome : Le développement de véhicules autonomes sûrs nécessite l'analyse de pétaoctets de données vidéo et de données issues de capteurs. Les ingénieurs automobiles utilisent de grands clusters distribués pour entraîner des modèles de vision dédiés à la segmentation sémantique en temps réel et à la détection des voies. Cette échelle massive garantit que les systèmes d'IA dans l'automobile peuvent réagir de manière fiable à diverses conditions routières.
- Imagerie médicale : Dans le secteur de la santé, l'analyse d'images 3D haute résolution telles que les IRM nécessite une mémoire et une puissance de calcul importantes. L'entraînement distribué permet aux chercheurs de créer des outils de diagnostic performants pour la détection des tumeurs et d'autres tâches critiques. En utilisant des frameworks tels que NVIDIA MONAI, les hôpitaux peuvent entraîner des modèles sur des jeux de données variés sans se heurter à des limites de mémoire, améliorant ainsi les résultats de l'IA dans le secteur de la santé.
Utiliser l'entraînement distribué avec Ultralytics#
La bibliothèque ultralytics facilite la mise en œuvre de l'entraînement en parallélisme distribué des données (DDP). Tu peux mettre à l'échelle l'entraînement de modèles YOLO26 de pointe sur plusieurs GPUs en indiquant simplement les indices des appareils dans tes paramètres d'entraînement.
from ultralytics import YOLO
# Load a pre-trained YOLO26 model
model = YOLO("yolo26n.pt")
# Train the model using two GPUs (device 0 and 1)
# The library automatically handles the DDP communication backend
results = model.train(data="coco8.yaml", epochs=100, device=[0, 1])Concepts associés et comparaisons#
Pour comprendre leurs rôles spécifiques, il est utile de distinguer l'entraînement distribué des termes similaires utilisés dans l'écosystème de l'apprentissage automatique :
- Par rapport à l'apprentissage fédéré : Bien que les deux approches impliquent plusieurs appareils, leurs objectifs diffèrent. L'entraînement distribué centralise généralement les données dans un cluster haute performance afin de maximiser la vitesse. En revanche, l'apprentissage fédéré conserve les données de manière décentralisée sur les appareils des utilisateurs (comme les smartphones) afin de privilégier la confidentialité des données, en mettant à jour le modèle global sans que les données brutes ne quittent jamais leur source.
- Par rapport au calcul haute performance (HPC) : Le HPC est un vaste domaine qui inclut le calcul intensif pour des simulations scientifiques telles que les prévisions météorologiques. L'entraînement distribué est une application spécifique du HPC aux algorithmes d'optimisation de l'apprentissage profond. Il s'appuie souvent sur des bibliothèques de communication spécialisées telles que NVIDIA NCCL afin de réduire la latence entre les GPUs.
Mise à l'échelle avec les plateformes cloud#
La gestion de l'infrastructure nécessaire à l'entraînement distribué peut être complexe. Les plateformes modernes simplifient cette tâche en proposant des environnements gérés. Par exemple, l'Ultralytics Platform permet aux utilisateurs de gérer des jeux de données et de lancer des entraînements pouvant être déployés dans des environnements cloud ou sur des clusters locaux. Cette intégration fluidifie le workflow, de l'annotation des données au déploiement final du modèle, en garantissant que la mise à l'échelle sur plusieurs GPUs soit aussi transparente que possible. De même, des fournisseurs cloud tels que Google Cloud Vertex AI et Amazon SageMaker fournissent une infrastructure robuste pour exécuter des tâches d'entraînement distribué à l'échelle des entreprises.









