Distributed Training
Découvre comment l'entraînement distribué fait passer les charges de travail IA à l'échelle sur plusieurs GPU. Apprends à accélérer l'entraînement d'Ultralytics YOLO26 avec DDP pour des résultats plus rapides et précis.
L'entraînement distribué est une méthode en apprentissage automatique où la charge de travail nécessaire à 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 de neurones complexes qui prendraient sinon un temps prohibitif à entraîner sur un seul appareil. En tirant parti de la puissance de calcul combinée de plusieurs Graphics Processing Units (GPUs) ou Tensor Processing Units (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 dans leurs modèles.
Link to this sectionComment fonctionne l'entraînement distribué#
L'idée centrale derrière l'entraînement distribué est la parallélisation. Au lieu de traiter les données de manière séquentielle sur une seule puce, la tâche est divisée en plus petits morceaux qui sont traités simultanément. Il existe deux stratégies principales pour y parvenir :
- Data Parallelism : C'est l'approche la plus courante pour des tâches comme la détection d'objets. Dans cette configuration, une copie du modèle complet est placée sur chaque appareil. L'ensemble des données d'entraînement est divisé en lots plus petits, et chaque appareil traite un lot différent en même temps. Après chaque étape, les gradients (mises à jour du modèle) sont synchronisés sur tous les appareils pour garantir que les poids du modèle restent cohérents.
- Model Parallelism : Lorsqu'un réseau de neurones (NN) est trop volumineux pour tenir dans la mémoire d'un seul GPU, le modèle lui-même est divisé sur plusieurs appareils. Différentes couches ou composants du modèle résident sur des puces distinctes, et les données circulent entre elles. C'est souvent nécessaire pour entraîner des modèles de fondation et des grands modèles de langage (LLMs) massifs.
Link to this sectionApplications concrètes#
L'entraînement distribué a transformé les industries en rendant possible la résolution de problèmes qui étaient auparavant informatiquement irréalisables.
- 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 capteurs. Les ingénieurs en automobile utilisent de grands clusters distribués pour entraîner des modèles de vision pour la segmentation sémantique en temps réel et la détection de 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 de scans 3D haute résolution comme les IRM nécessite une mémoire et une puissance de traitement importantes. L'entraînement distribué permet aux chercheurs de créer des outils de diagnostic haute performance pour la détection de 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 rencontrer de goulots d'étranglement mémoire, améliorant ainsi les résultats de l'IA dans la santé.
Link to this sectionUtiliser l'entraînement distribué avec Ultralytics#
La bibliothèque ultralytics rend l'implémentation de l'entraînement Distributed Data Parallel (DDP) simple. Tu peux mettre à l'échelle ton entraînement de modèles YOLO26 de pointe sur plusieurs GPUs en spécifiant simplement les indices des appareils dans tes arguments 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])Link to this sectionConcepts associés et comparaisons#
Il est utile de distinguer l'entraînement distribué de termes similaires dans l'écosystème de l'apprentissage automatique pour comprendre leurs rôles spécifiques :
- Vs. Apprentissage fédéré : Bien que les deux impliquent plusieurs appareils, leurs objectifs diffèrent. L'entraînement distribué centralise généralement les données dans un cluster haute performance pour maximiser la vitesse. À l'inverse, l'apprentissage fédéré maintient les données de manière décentralisée sur les appareils des utilisateurs (comme les smartphones) pour donner la priorité à la confidentialité des données, mettant à jour le modèle global sans que les données brutes ne quittent jamais la source.
- Vs. Calcul haute performance (HPC) : Le HPC est un vaste domaine qui inclut le supercalcul pour des simulations scientifiques comme les prévisions météorologiques. L'entraînement distribué est une application spécifique du HPC appliquée aux algorithmes d'optimisation en apprentissage profond. Il repose souvent sur des bibliothèques de communication spécialisées comme NVIDIA NCCL pour minimiser la latence entre les GPUs.
Link to this sectionMise à l'échelle avec les plateformes cloud#
Gérer l'infrastructure pour l'entraînement distribué peut être complexe. Les plateformes modernes simplifient cela en proposant des environnements gérés. Par exemple, la plateforme Ultralytics permet aux utilisateurs de gérer des jeux de données et de lancer des exécutions d'entraînement qui peuvent être déployées dans des environnements cloud ou des clusters locaux. Cette intégration rationalise le flux de travail depuis l'annotation de données jusqu'au déploiement final du modèle, garantissant que la mise à l'échelle sur plusieurs GPUs soit aussi fluide que possible. De même, les fournisseurs de cloud comme Google Cloud Vertex AI et Amazon SageMaker fournissent une infrastructure robuste pour exécuter des travaux d'entraînement distribués à l'échelle de l'entreprise.






