Accelerate ND‑Parallel : Guide pour un entraînement multi‑GPU efficace
TL;DR
- Accelerate propose des outils ND‑Parallel pour composer plusieurs stratégies de parallélisme (DP, FSDP, TP, CP) dans un même script d’entraînement.
- L’intégration avec Axolotl fournit des configs d’exemple et des champs de configuration pour activer des combinaisons sans réécrire le code central.
- Principaux réglages : ParallelismConfig avec dp_replicate_size, dp_shard_size, tp_size (tensor_parallel_size dans Axolotl) et sharding de contexte pour des séquences très longues.
Contexte et historique
L’entraînement de très grands modèles sur plusieurs GPU impose de choisir et de composer des stratégies de parallélisme afin d’équilibrer mémoire, calcul et communication. Le parallélisme de données (DP) réplique le modèle et l’état de l’optimiseur sur chaque appareil et répartit le mini‑batch entre répliques ; les gradients sont synchronisés avant la mise à jour. DP augmente le débit mais exige que le modèle tienne sur un seul appareil. Quand le modèle est trop grand pour une seule GPU, le Fully Sharded Data Parallel (FSDP) fragmente (shard) les poids, gradients et états d’optimiseur entre les GPU, ne rassemblant les paramètres d’une couche que lorsqu’ils sont nécessaires. Le Tensor Parallelism (TP) répartit de manière permanente les paramètres de grandes couches linéaires entre appareils. Le Context Parallelism (CP) fragmente la séquence d’entrée sur la dimension temporelle pour gérer des contextes extrêmement longs. Accelerate, en collaboration avec Axolotl, offre une approche intégrée et configurable pour composer ces stratégies, permettant de passer d’un entraînement mono‑appareil à des déploiements multi‑node tout en contrôlant les compromis mémoire/communication. Le dépôt Accelerate propose un script d’entraînement end‑to‑end et Axolotl fournit des configs testées pour démarrer rapidement.
Ce qui est nouveau
- Accelerate expose un moyen simple d’utiliser n’importe quelle combinaison de stratégies de parallélisme depuis un seul script, via ParallelismConfig et des plugins.
- Axolotl intègre ces techniques ND‑Parallel afin de faciliter le fine‑tuning à grande échelle et la composition des stratégies avec diverses techniques de fine‑tuning ; il suffit d’ajouter des champs ND‑Parallel dans le fichier de config Axolotl.
- Des configs d’exemple et des scripts end‑to‑end montrent comment configurer dataloaders, optimiseurs et boucles d’entraînement tout en composant des stratégies.
Pourquoi cela compte (impact pour développeurs/entreprises)
- Itération accélérée : les développeurs peuvent expérimenter des combinaisons de DP, FSDP, TP et CP sans réécrire l’infrastructure d’entraînement.
- Monter en charge : la composition du sharding et du model‑parallel permet d’entraîner des modèles qui ne tiennent pas sur une seule GPU ou un seul nœud.
- Contrôle des coûts et des ressources : en ajustant le nombre de répliques, la taille des shards et la taille des groupes TP, les équipes peuvent échanger mémoire contre coûts de communication et aligner la configuration sur la topologie du cluster (NVLink intra‑nœud vs Infiniband inter‑nœud).
- Réutilisabilité : les champs de config Axolotl et ParallelismConfig d’Accelerate facilitent la réutilisation d’un même script pour des environnements variés.
Détails techniques ou implémentation
Principales stratégies de parallélisme
| Stratégie | Ce qu’elle fait | Quand l’utiliser | Principaux compromis |---|---|---|---| | Parallélisme de données (DP) | Réplique le modèle et l’état de l’optimiseur ; répartit les lots et synchronise les gradients | Quand le modèle tient sur un appareil et qu’on veut augmenter le débit | Faible communication par pas (all‑reduce), mais nécessite que le modèle tienne sur l’appareil ; dp_replicate_size règle le nombre de répliques |Fully Sharded Data Parallel (FSDP) | Sharde poids, gradients et état optimiseur ; rassemble les paramètres par couche | Quand le modèle est trop grand pour une seule GPU | Échange mémoire maximale contre communication (gather par couche) ; la granularité de gather influe sur mémoire vs communication ; dp_shard_size règle le degré |Tensor Parallelism (TP) | Sharde de manière permanente de grandes couches linéaires entre appareils | Quand des couches individuelles sont trop grandes pour le gather en FSDP | Réduction de mémoire proportionnelle à la taille du groupe TP, nécessite synchronisation fréquente des activations ; efficace surtout dans un nœud ; tp_size (tensor_parallel_size dans Axolotl) définit la taille |Context Parallelism (CP) | Sharde l’entrée sur la dimension séquence pour traiter des contextes très longs | Quand on entraîne sur des séquences très longues (centaines de milliers à millions de tokens) | Réduit la mémoire d’attention par appareil en divisant la matrice d’attention ; chaque query requiert encore K et V complets pour le softmax |
Composer les stratégies et considérations cluster
- DP est une stratégie de haut niveau : dp_replicate_size=2 produit deux répliques complètes, chacune pouvant être ensuite sharded par FSDP ou TP.
- FSDP peut être étendu sur plusieurs nœuds en traitant l’ensemble des appareils comme un seul domaine de sharding (ex. 4 nœuds × 8 GPUs = 32 appareils). La communication devient plus coûteuse entre nœuds, ainsi on évite souvent FSDP au‑delà d’un nœud complet.
- TP est généralement efficace au sein d’un même nœud en raison des besoins en bande passante faible latence (NVLink). TP inter‑nœuds peut être inefficace.
- Pour des contextes très longs, l’attention croît quadratiquement avec la longueur ; l’article illustre que des séquences extrêmes (p. ex. 128k tokens) peuvent rendre les activations d’attention énormes, justifiant l’usage du CP.
Réglages dans Accelerate et Axolotl
- ParallelismConfig dans Accelerate expose dp_replicate_size, dp_shard_size et tp_size pour configurer DP, FSDP et TP et leur composition.
- Dans Axolotl, des champs similaires existent (tensor_parallel_size, dp_shard_size) ; ajouter des techniques ND‑Parallel à une config Axolotl revient souvent à ajouter des champs.
- Le dépôt Accelerate contient un FullyShardedDataParallelPlugin prêt à l’emploi et des exemples end‑to‑end.
Points clés
- Accelerate + Axolotl permettent de composer DP, FSDP, TP et CP dans un seul flux d’entraînement.
- Utiliser DP si le modèle tient sur un appareil ; augmenter dp_replicate_size pour plus de débit.
- Utiliser FSDP pour sharder l’état lorsque le modèle est trop grand ; ajuster la granularité de gather.
- Utiliser TP pour sharder de grandes couches à l’intérieur d’un nœud lorsque le gather FSDP est trop coûteux.
- Utiliser CP pour entraîner sur des séquences très longues.
FAQ
-
Comment activer ND‑Parallel dans mon script d'entraînement ?
Accelerate propose ParallelismConfig et des plugins pour composer les stratégies ; Axolotl accepte des champs de config comme tensor_parallel_size et dp_shard_size. Le dépôt Accelerate contient des exemples end‑to‑end.
-
Quand privilégier FSDP plutôt que TP ?
FSDP est adapté pour sharder poids et états quand le modèle est trop grand. TP est préférable lorsque des couches individuelles sont trop grandes pour le gather de FSDP ou quand on a besoin d'une partition mémoire statique ; TP est mieux dans un même nœud.
-
Peut‑on combiner DP et TP ?
Oui. DP est une stratégie de haut niveau et peut être combinée avec TP ; par exemple dp_replicate_size=2 et tp_size=2 donne deux répliques, chacune avec shards TP.
Références
More news
NVIDIA HGX B200 réduit l’intensité des émissions de carbone incorporé
Le HGX B200 de NVIDIA abaisse l’intensité des émissions de carbone incorporé de 24% par rapport au HGX H100, tout en offrant de meilleures performances IA et une efficacité énergétique accrue. Cet article résume les données PCF et les nouveautés matérielles.
Scaleway rejoint les Fournisseurs d’Inference de Hugging Face pour une Inférence Serverless et Faible Latence
Scaleway est désormais un Fournisseur d’Inference pris en charge sur Hugging Face Hub, permettant l’inférence serverless directement sur les pages de modèles avec les SDK JS et Python. Accédez à des modèles open-weight populaires et bénéficiez d’une latence réduite.
Comment réduire les goulots d’étranglement KV Cache avec NVIDIA Dynamo
NVIDIA Dynamo déporte le KV Cache depuis la mémoire GPU vers un stockage économique, permettant des contextes plus longs, une meilleure concurrence et des coûts d’inférence réduits pour les grands modèles et les charges AI génératives.
Le Playbook des Grands Maîtres Kaggle: 7 Techniques de Modélisation pour Données Tabulaires
Analyse approfondie de sept techniques éprouvées par les Grands Maîtres Kaggle pour résoudre rapidement des ensembles de données tabulaires à l’aide d’une accélération GPU, des baselines divers à l’assemblage et à la pseudo-étiquetage.
Microsoft transforme le site Foxconn en data center Fairwater AI, présenté comme le plus puissant au monde
Microsoft dévoile des plans pour un data center Fairwater AI de 1,2 million de mètres carrés au Wisconsin, abritant des centaines de milliers de GPU Nvidia GB200. Le projet de 3,3 milliards de dollars promet un entraînement IA sans précédent.
NVIDIA RAPIDS 25.08 Ajoute un Nouveau Profiler pour cuML, Améliorations du moteur GPU Polars et Support d’Algorithmes Étendu
RAPIDS 25.08 introduit deux profils pour cuml.accel (fonctionnel et ligne), l’exécuteur streaming par défaut du moteur Polars GPU, un support de types et chaînes étendu, Spectral Embedding dans cuML et des accélérations zéro-code pour plusieurs estimateurs.