Tensor Parallelism
Apprends comment le parallélisme de tenseur fragmente les matrices de poids entre les GPU pour entraîner des modèles massifs. Explore en quoi il diffère du parallélisme de données avec Ultralytics.
Le parallélisme de tenseur est une technique avancée d'entraînement distribué utilisée en apprentissage automatique pour diviser de grandes structures mathématiques individuelles, ou tenseurs, entre plusieurs accélérateurs matériels tels que des GPU ou des TPU. Lors de l'entraînement de modèles massifs d'apprentissage profond, le nombre de paramètres peut facilement dépasser la capacité mémoire d'un seul appareil. Au lieu de placer une couche entière de réseau de neurones sur un seul GPU, le parallélisme de tenseur fragmente les matrices de poids et divise les opérations mathématiques (comme les multiplications de matrices) entre plusieurs appareils dans un cluster. Cela permet au modèle de tirer parti de la mémoire et de la puissance de calcul combinées de toute l'installation matérielle, en exécutant des calculs parallèles selon le paradigme Single-Program Multiple-Data (SPMD) tout en synchronisant les résultats via des interconnexions à haute vitesse comme NVIDIA NVLink.
Link to this sectionComment fonctionne le parallélisme de tenseur#
Au cœur d'un réseau de neurones se trouvent des multiplications de matrices. Le parallélisme de tenseur distribue ces opérations en divisant les matrices soit par ligne, soit par colonne. Par exemple, dans une couche entièrement connectée ou un mécanisme d'attention de Transformer, un GPU peut calculer la moitié gauche de la matrice tandis qu'un autre calcule la moitié droite. Une fois les calculs parallèles terminés, les appareils communiquent — souvent en utilisant des opérations collectives All-Reduce rapides — pour agréger les résultats partiels avant de passer le tenseur complet à la couche suivante. Les avancées académiques récentes en 2025 optimisent davantage ce processus en introduisant des activations partiellement synchronisées pour réduire la surcharge de communication qui crée généralement des goulots d'étranglement dans les grands clusters de calcul.
Link to this sectionDistinction des techniques de parallélisme connexes#
Comprendre comment le parallélisme de tenseur s'inscrit dans le paysage plus large de l'informatique distribuée nécessite de le différencier d'autres stratégies courantes :
- Parallélisme de tenseur vs parallélisme de modèle : Le parallélisme de tenseur est une sous-catégorie très spécifique du parallélisme de modèle. Alors que le parallélisme de modèle général désigne le fait de diviser un modèle entre plusieurs appareils de quelque manière que ce soit, le parallélisme de tenseur se réfère strictement au partitionnement des tenseurs individuels au sein d'une même couche.
- Parallélisme de tenseur vs parallélisme de pipeline : Le parallélisme de pipeline est une autre forme de parallélisme de modèle qui partitionne le réseau par profondeur — en plaçant les premières couches sur le GPU 0, les suivantes sur le GPU 1, et ainsi de suite. Cela crée des dépendances séquentielles connues sous le nom de « bulles de pipeline ». Le parallélisme de tenseur divise les couches elles-mêmes, en les exécutant simultanément sans délai séquentiel, mais nécessite une bande passante réseau beaucoup plus élevée.
- Parallélisme de tenseur vs parallélisme de données : Dans le parallélisme de données, le modèle entier est entièrement répliqué sur chaque GPU, et seul le jeu de données d'entraînement est divisé entre les appareils. Pour des architectures hautement optimisées comme Ultralytics YOLO26, qui tiennent facilement sur les GPU modernes, le parallélisme de données via
DistributedDataParallelde PyTorch est la méthode par défaut. Le parallélisme de tenseur n'est généralement nécessaire que lorsque les paramètres d'une seule couche dépassent la VRAM du matériel, provoquant des erreurs de dépassement de mémoire (OOM).
Link to this sectionApplications concrètes#
Le parallélisme de tenseur est indispensable dans les infrastructures IA modernes, en particulier pour les architectures de pointe nécessitant une échelle de calcul massive :
- Entraînement de grands modèles de langage (LLM) : des modèles de fondation massifs comme Llama 3 de Meta et DeepSeek V3 utilisent des frameworks tels que NVIDIA Megatron-LM pour implémenter le parallélisme de tenseur. Comme les dimensions cachées et les têtes d'attention de ces modèles sont si vastes, les diviser sur un nœud à 8 GPU est obligatoire pour s'entraîner efficacement et maintenir une faible latence pendant l'inférence en temps réel.
- Grands modèles de vision (LVM) et génération 3D : à mesure que la vision par ordinateur évolue vers des systèmes de raisonnement multimodal massifs, les chercheurs utilisent le parallélisme de tenseur combiné au parallélisme de pipeline sur des services comme AWS SageMaker pour entraîner des vision transformers (ViT) gigantesques. Cette technique permet de traiter l'imagerie haute résolution et la génération de vidéo qui nécessitent d'énormes blocs de mémoire contigus.
Link to this sectionImplémentation du parallélisme de tenseur dans PyTorch#
Historiquement, les ingénieurs devaient écrire une logique distribuée personnalisée complexe pour fragmenter les tenseurs. Récemment, PyTorch a introduit DTensor (Distributed Tensor), simplifiant nativement ce flux de travail. Voici un exemple de création d'un tenseur fragmenté par ligne en utilisant l'API officielle PyTorch Distributed Tensor :
import torch
from torch.distributed.device_mesh import init_device_mesh
from torch.distributed.tensor import Shard, distribute_tensor
# Initialize a 1D device mesh across 2 GPUs
mesh = init_device_mesh("cuda", (2,))
# Create a standard PyTorch tensor (e.g., representing a layer's weights)
local_tensor = torch.randn(1024, 1024)
# Distribute the tensor across the GPUs by sharding along the first dimension (row-wise)
# Each GPU now holds a (512, 1024) chunk of the original tensor
distributed_tensor = distribute_tensor(local_tensor, mesh, [Shard(0)])
print(f"Global shape: {distributed_tensor.shape}, Local shape: {distributed_tensor.to_local().shape}")For edge-optimized vision tasks and rapid model deployment, developers typically rely on the Ultralytics Platform to automatically handle optimal hardware utilization. While multi-billion parameter foundation models require manual tensor parallelism configurations, you can efficiently scale training for models like YOLO26 using simple CLI commands out-of-the-box. This ensures maximum throughput by seamlessly utilizing native data parallelism techniques alongside robust model training tips.






