Pipeline Parallelism
Découvre comment le parallélisme par pipeline répartit les modèles d’apprentissage profond entre plusieurs GPU. Apprends à éviter les erreurs de mémoire insuffisante et à optimiser l’entraînement distribué.
Le parallélisme de pipeline est une technique avancée d’entraînement distribué conçue pour répartir un grand réseau neuronal (NN) sur plusieurs dispositifs de calcul, tels que des GPU, en séparant le modèle selon sa profondeur. Lorsque les poids du modèle et les états de l’optimiseur d’une architecture moderne dépassent les limites de mémoire d’un seul accélérateur, les ingénieurs répartissent les couches séquentielles du réseau en « étapes ». Par exemple, les 10 premières couches peuvent se trouver sur le GPU 0, tandis que les 10 suivantes se trouvent sur le GPU 1. Pendant la propagation avant, les données passent d’un dispositif au suivant. En reliant ces dispositifs, les chercheurs peuvent entraîner de gigantesques algorithmes d’apprentissage profond (DL) sans rencontrer d’erreurs de mémoire insuffisante limitant le matériel.
Fonctionnement du parallélisme de pipeline#
Une implémentation naïve de la répartition des couches entre les dispositifs entraîne de graves inefficacités appelées « bulles du pipeline ». Comme les couches sont traitées séquentiellement, le GPU 1 reste complètement inactif pendant que le GPU 0 traite les premières couches. Pour maximiser l’utilisation du matériel, les ordonnanceurs modernes de pipeline divisent la taille globale du lot en lots plus petits appelés « micro-lots ».
Au lieu d’attendre la fin d’un lot entier, le GPU 0 commence immédiatement à traiter le deuxième micro-lot dès qu’il transmet le premier micro-lot au GPU 1. Des outils comme Microsoft DeepSpeed et l’API PyTorch Distributed Pipelining utilisent couramment la stratégie d’ordonnancement 1F1B (One Forward, One Backward). Cette méthode alterne les propagations avant et arrière de différents micro-lots en parallèle, réduisant considérablement les bulles du pipeline et la consommation mémoire. Les avancées récentes de 2024 et 2025 introduisent même le parallélisme de pipeline sans bulles, une stratégie de prédiction des poids tenant compte de l’optimiseur qui élimine presque totalement les temps d’inactivité dans les clusters de calcul.
Distinction entre les techniques de parallélisme associées#
Le parallélisme de pipeline s’inscrit dans un écosystème plus vaste de stratégies de calcul distribué. Comprendre leurs différences est essentiel pour mettre efficacement les modèles d’IA à l’échelle :
- Parallélisme de modèle : il s’agit du terme générique désignant la répartition d’un modèle entre plusieurs dispositifs. Le parallélisme de pipeline est une forme très spécifique de parallélisme de modèle qui répartit séquentiellement l’architecture selon sa profondeur.
- Parallélisme des tenseurs : contrairement à la répartition en profondeur du parallélisme de pipeline, le parallélisme des tenseurs partitionne horizontalement les opérations matricielles individuelles entre plusieurs GPU. Ces deux techniques sont souvent combinées pour maximiser le débit.
- Parallélisme des données : le parallélisme des données réplique le modèle entier sur chaque GPU et répartit les données d’entraînement entre eux. Pour les architectures compactes et hautement optimisées de détection d’objets et de segmentation d’image, comme le modèle Ultralytics YOLO26, qui tient nativement dans la VRAM d’un seul dispositif, le parallélisme des données via DistributedDataParallel (DDP) de PyTorch est la méthode privilégiée pour accélérer l’entraînement.
Applications concrètes dans l'IA et le ML#
La mise à l’échelle d’une infrastructure complexe est essentielle à la création de systèmes d’IA modernes à la pointe de la technologie :
- Entraînement de modèles de fondation : le développement de gigantesques grands modèles de langage (LLMs) et de modèles de fondation comme Llama 3 de Meta nécessite de combiner le parallélisme des tenseurs, le parallélisme des données et le parallélisme de pipeline. Des frameworks comme NVIDIA Megatron-LM exploitent ces stratégies pour entraîner de gigantesques architectures de mélange d’experts (MoE) sur des milliers de GPU, sur des plateformes cloud comme AWS SageMaker.
- Diagnostics médicaux haute résolution : dans le domaine de l’IA dans la santé et de la modélisation scientifique, les scanners volumiques 3D génèrent souvent des activations trop volumineuses pour un seul accélérateur. La mise en pipeline des couches du réseau entre plusieurs nœuds permet aux hôpitaux de recherche d’entraîner des réseaux profonds sur d’immenses jeux de données d’imagerie par résonance magnétique (MRI) sans compromettre la résolution des images.
Exemple de code : concept de partitionnement des couches#
Historiquement, la répartition des couches entre plusieurs dispositifs nécessitait un code complexe et personnalisé. Aujourd’hui, la logique fondamentale consiste à associer des couches spécifiques à différents identifiants de dispositifs. Voici une représentation conceptuelle de la manière dont les étapes d’un réseau sont réparties entre plusieurs dispositifs dans PyTorch, servant de base aux opérations de parallélisme de pipeline :
import torch.nn as nn
class SimplePipelineModel(nn.Module):
def __init__(self):
super().__init__()
# Stage 1 is assigned to the first GPU
self.stage1 = nn.Sequential(nn.Linear(1024, 1024), nn.ReLU()).to("cuda:0")
# Stage 2 is assigned to the second GPU
self.stage2 = nn.Sequential(nn.Linear(1024, 1024), nn.ReLU()).to("cuda:1")
def forward(self, x):
# The forward pass seamlessly crosses device boundaries
x_out = self.stage1(x.to("cuda:0"))
return self.stage2(x_out.to("cuda:1"))Bien que la création de modèles de fondation nécessite une orchestration complexe, le déploiement de projets rapides et évolutifs de vision par ordinateur (CV) est généralement plus simple. Pour simplifier le déploiement des modèles et automatiser l’utilisation de plusieurs GPU, les développeurs font confiance à l’Ultralytics Platform pour mettre automatiquement les charges de travail à l’échelle. En s’appuyant sur de solides conseils d’entraînement des modèles, la plateforme abstrait la gestion de l’infrastructure, ce qui permet aux ingénieurs de se consacrer entièrement à la création de solutions d’IA précises capables d’effectuer des inférences en temps réel.









