Tensor Parallelism
Le parallélisme tensoriel répartit les matrices de poids d’une couche sur plusieurs GPU, afin que chaque appareil calcule une partie de chaque opération. Présentation des méthodes associées, des usages et de PyTorch.
Le parallélisme tensoriel est une technique avancée d’entraînement distribué utilisée en apprentissage automatique pour répartir de grandes structures mathématiques individuelles, ou tenseurs, sur plusieurs accélérateurs matériels comme des GPU ou des TPU. Lors de l’entraînement de modèles d’apprentissage profond de grande taille, 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 d’un réseau neuronal sur un seul GPU, le parallélisme tensoriel répartit les matrices de poids et divise les opérations mathématiques (comme les multiplications matricielles) entre plusieurs appareils d’un cluster. Le modèle peut ainsi exploiter la mémoire et la puissance de calcul cumulées de l’ensemble du matériel, en exécutant des calculs parallèles selon un paradigme à programme unique et données multiples (SPMD) tout en synchronisant les résultats via des interconnexions haut débit comme NVIDIA NVLink.
Fonctionnement du parallélisme tensoriel#
Les multiplications matricielles sont au cœur des réseaux neuronaux. Le parallélisme tensoriel répartit ces opérations en divisant les matrices par lignes ou par colonnes. 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 à l'aide d'opérations collectives All-Reduce rapides — pour agréger les résultats partiels avant de transmettre le tenseur complet à la couche suivante. De nouvelles avancées universitaires en 2025 optimisent davantage ce processus en introduisant des activations partiellement synchronisées afin de réduire la surcharge de communication qui limite généralement les grands clusters de calcul.
Distinguer les techniques de parallélisme connexes#
Pour comprendre la place du parallélisme tensoriel dans l’ensemble de l’informatique distribuée, il faut le distinguer d’autres stratégies courantes :
- Parallélisme tensoriel et parallélisme de modèle : le parallélisme tensoriel est une sous-catégorie très spécifique du parallélisme de modèle. Le parallélisme de modèle désigne de manière générale toute répartition d’un modèle entre plusieurs appareils, tandis que le parallélisme tensoriel consiste précisément à répartir les tenseurs individuels au sein d’une même couche.
- Parallélisme tensoriel vs parallélisme par pipeline : Le parallélisme par pipeline est une autre forme de parallélisme de modèle, qui partitionne le réseau en profondeur : les premières couches sont placées sur le GPU 0, les suivantes sur le GPU 1, et ainsi de suite. Cela crée des dépendances séquentielles appelées bulles de pipeline. Le parallélisme tensoriel divise les couches elles-mêmes pour les exécuter simultanément, sans délai séquentiel, mais nécessite une bande passante réseau bien plus élevée.
- Parallélisme tensoriel et parallélisme des données : avec le parallélisme des données, le modèle entier est répliqué sur chaque GPU, et seul le jeu de données d’entraînement est réparti entre les appareils. Pour des architectures très optimisées comme Ultralytics YOLO26, qui tiennent aisément sur les GPU modernes, le parallélisme des données via
DistributedDataParallelde PyTorch est la méthode par défaut. Le parallélisme tensoriel n’est généralement nécessaire que lorsque les paramètres d’une seule couche dépassent la VRAM disponible, ce qui entraîne des erreurs de mémoire insuffisante (OOM).
Applications concrètes#
Le parallélisme tensoriel est indispensable dans les infrastructures modernes d’IA, en particulier pour les architectures de pointe qui nécessitent une puissance de calcul considérable :
- Entraînement des grands modèles de langage (LLM) : Les grands modèles de fondation comme Llama 3 de Meta reposent sur le parallélisme tensoriel, souvent mis en œuvre avec des frameworks comme NVIDIA Megatron-LM, même si DeepSeek V3 a notablement été entraîné sans cette méthode, en s'appuyant sur le parallélisme par pipeline et le parallélisme des experts. Les dimensions cachées et les têtes d'attention de ces modèles étant très grandes, leur répartition sur un nœud de 8 GPU est indispensable pour les entraîner efficacement et maintenir une faible latence lors de 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 de grande envergure, les chercheurs combinent le parallélisme tensoriel au parallélisme par pipeline sur des services comme AWS SageMaker pour entraîner d'immenses transformeurs de vision (ViT). Cette technique permet de traiter des images haute résolution et de générer des vidéos, opérations qui nécessitent d'énormes blocs de mémoire contigus.
Mettre en œuvre le parallélisme tensoriel dans PyTorch#
Jusqu’à récemment, les ingénieurs devaient écrire une logique distribuée personnalisée complexe pour répartir les tenseurs. PyTorch a récemment introduit DTensor (Distributed Tensor), qui simplifie nativement ce workflow. Voici un exemple de création d’un tenseur réparti par lignes à l’aide de 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}")Pour les tâches de vision optimisées pour la périphérie et le déploiement rapide de modèles, les développeurs s'appuient généralement sur la plateforme Ultralytics pour gérer automatiquement l'utilisation optimale du matériel. Alors que les modèles de fondation comptant des milliards de paramètres nécessitent une configuration manuelle du parallélisme tensoriel, tu peux facilement faire évoluer l'entraînement de modèles comme YOLO26 à l'aide de simples commandes CLI, directement prêtes à l'emploi. Cela garantit un débit maximal en tirant parti de techniques natives de parallélisme des données, ainsi que de conseils robustes pour l'entraînement des modèles.










