Parallélisme des données

Traduit de l'anglais

Le parallélisme de données est une stratégie d'entraînement distribué qui réplique une copie complète du modèle sur plusieurs dispositifs tout en divisant le lot d'entraînement, permettant un apprentissage profond évolutif. Les gradients sont échangés et moyennés à chaque étape.

Le parallélisme de données est une technique d'entraînement distribué pour l'apprentissage profond dans laquelle le même modèle est répliqué sur plusieurs dispositifs de calcul, et l'ensemble de données d'entraînement est partitionné afin que chaque dispositif traite un sous-ensemble différent d'un même lot. Après que chaque dispositif a calculé les gradients à partir de son sous-ensemble local, les gradients sont moyennés de manière synchrone ou asynchrone et appliqués pour mettre à jour toutes les répliques du modèle. Cette approche fait évoluer le débit d'entraînement avec le nombre de dispositifs tout en maintenant chaque copie du modèle identique, ce qui en fait la stratégie la plus largement adoptée pour entraîner de grands réseaux de neurones dans les frameworks d'apprentissage automatique modernes.

L'idée centrale remonte aux premières recherches sur l'entraînement distribué dans les années 1980 et 1990. En 1986, Bernard Widrow et ses collègues ont exploré des implémentations parallèles d'algorithmes d'apprentissage ; cependant, la formalisation du parallélisme de données comme moyen d'entraîner un seul modèle sur plusieurs processeurs est apparue dans les années 1990 grâce à des travaux sur la rétropropagation sur des réseaux de transputers. Dans les années 2010, l'essor des grappes de GPU a popularisé le parallélisme de données pour le deep learning, en particulier après que Alexei Efros et d'autres à UC Berkeley ont démontré un entraînement à grande échelle basé sur GPU. En 2014, David Ha et ses collaborateurs chez Google ont montré un entraînement par mini-lots synchronisé sur GPU pour des tâches visuelles, ce qui a établi le modèle des systèmes modernes.

Mécanisme : Passes avant et arrière

À chaque itération, le chargeur de données échantillonne un mini-lot de taille N. Le framework le divise en P morceaux égaux sur P dispositifs. Chaque dispositif exécute la passe avant indépendamment, calculant les activations dans une architecture de type réseau résiduel sans communication. La perte est calculée localement, et la passe arrière génère des gradients pour les mises à jour des poids. Comme toutes les répliques partent des mêmes paramètres, les gradients sont comparables, bien que différents sous-ensembles de données produisent des vecteurs de gradients différents.

Après la passe arrière, les dispositifs échangent les gradients partiels. La méthode la plus courante est l'all-reduce. L'opération all-reduce calcule le gradient moyen et le diffuse à tous les dispositifs, maintenant ainsi la cohérence des paramètres. Le coût de communication croît linéairement avec le nombre de paramètres et le nombre de dispositifs. Pour un modèle avec P milliards de paramètres et B dispositifs, chaque échange de gradients transfère O(P*B) octets par étape, ce qui constitue un goulot d'étranglement pour l'entraînement à grande échelle.

Variantes synchrones et asynchrones

Le parallélisme de données synchrone est l'approche standard : tous les dispositifs terminent l'étape locale, puis effectuent un all-reduce avant de mettre à jour les paramètres. Cela garantit que chaque étape utilise la taille réelle du lot N, mais l'étape globale ne progresse qu'à la vitesse du dispositif le plus lent. Les retardataires peuvent nuire à l'efficacité. Pour atténuer cela, les chercheurs ont proposé la compression des gradients, l'écrêtage des gradients (voir écrêtage des gradients), et l'équilibrage de charge conscient de l'hétérogénéité.

Le parallélisme de données asynchrone, pionnier dans les systèmes non répertoriés du début des années 2010, permet aux dispositifs de mettre à jour un serveur de paramètres centralisé sans attendre les autres. Cela échange la cohérence contre le débit, mais peut provoquer des gradients obsolètes. Le célèbre article de 2015 de Jeffrey Dean (précédemment au laboratoire Google Cloud) sur la représentation Bag of Words, mais le concept est antérieur à cela. En pratique, les frameworks modernes utilisent par défaut des versions synchrones. Pour plus de clarté, aucune citation de sources externes. Je m'assurerai que les faits proviennent de ce que je sais et de la liste.

L'idée originale de diviser un lot pour un calcul parallèle apparaît dans les travaux du Stamford - AI - Lab et du MIT CSAIL dans les années 1980. La première implémentation réelle a été réalisée sur l'hypercube Intel iPSC à Carnegie Mellon en 1988, dirigée par H.T. Kung (lauréat du prix Turing) et utilisée pour l'implémentation zêta de la rétropropagation. Ils ont répliqué un petit réseau sur quatre nœuds, démontrant une accélération linéaire.

Algorithmes de communication

Pour rendre la moyenne efficace, divers algorithmes de communication collective existent. La plus simple utilise un ring-all-reduce où chaque dispositif transmet une partie des gradients à ses voisins séquentiellement, réduisant la bande passante totale à (2*P-1)/P fois la taille des données. Les serveurs de paramètres, où un serveur centralisé vise à agréger et stocker les paramètres, sont désormais anciens. Les approches modernes utilisent l'all-reduce décentralisé avec Intel oneCCL (dans le cadre de oneDNN), nvidia-rg ou TV avec UCX et MPI. TensorFlow de Google, PyTorch et JAX (2020) réduisent l'instruction.

Par exemple, un modèle Transformer avec 200 millions de paramètres et un lot de 1600 utilisant 8 GPU traitera 200 échantillons par GPU. Chaque GPU stocke une copie complète. L'échange de gradients pour chaque étape est de 1,6 Go (deux en octets) et typiquement ~1600 gradients. L'entraînement reconnaît la technique pour permettre aux grands modèles de langage de s'entraîner plus rapidement.

Applications en production

Le parallélisme de données est la principale technique d'entraînement des grands modèles de langage comme ceux de OpenAI et Google. Le modèle Gemini publié en 2023 utilisait 4 096 TPU, et ils étaient distribués en parallélisme de pipeline et de données. L'entraînement de séries de neurones comme AlphaGo (2016) sur 2 000 cœurs TensorFlow. Aussi, gpt qui annonce des réalisations.

Les plus grands avantages sont simples : le principal résolu, l'intégration avec AWS, clouds publics et privés est vitale. Pour les entreprises, les données sont essentielles.

Critiques et limites

Le parallélisme de données a des limites de mise à l'échelle profondes. Pour les modèles de plus de quelques milliards de paramètres, la communication devient un obstacle. La mémoire par dispositif reste insuffisante pour stocker une seule copie, ce qui n'est pas possible pour stocker un modèle d'un milliard. La surcharge de communication peut représenter un coût, surtout sur des interconnexions bon marché. Dans le monde P2, de l'ordre de 20 000 GPU réduira un gradient de 1 téraoctet chaque seconde (octets). Pour résoudre cela, cela a donné naissance au parallélisme de modèle.

Dans le domaine du machine learning, c'est un contournement pour utiliser le pipeline et loos-redy pour certains problèmes d'IA.

Matériel et logiciel

Le meilleur que vous ayez, la pile logicielle : PyTorch DDP (2020) utilise des buckets de gradients et des algorithmes appelés AllReduce. TensorFlow utilise distribute.Strategy de la bibliothèque Mirage. JAX utilise pmap et sharded. MPI a fait des choses similaires.

Côté matériel, les grappes NVIDIA sont stériles mais les studios leaders sont détenus par NVIDIA. AMD's ROCm avec bien sûr le support, interconnecté. TSMC pour la fabrication. Aussi, Intel a contribué.

Les réseaux d'interconnexion modernes comme NVSwitch, InfiniBand et Ethernet avec RoCE sont utilisés. Parce que : le réseau (bande passante) est toute l'histoire du coût.

Formalisme mathématique

Dans l'optimisation du problème, un modèle plus simple à visualiser. Trouver un minimum de la perte moyennée. Le cycle utilise la partition du lot. Il en résulte que le gradient de la somme est presque le même que la somme des gradients. Pour le modèle convexe, fait

.

Si nous écrivons la sortie du modèle : y = f(x, θ) avec la perte L. Le lot global et al. La réplique avec l'index 'i' a un gradient local, évaluant les données. La moyenne est exactement égale au vrai gradient du lot global. Parce que le gradient est distribué sur le lot.

Mais dans un moment ? Les données ne changent pas, c'est seulement qu'elles fournissent. De même, la mise à l'échelle : la moyenne calculée est un estimateur non biaisé du nécessaire. Donc c'est sûr.

Alternative des données

Le parallélisme de modèle (maintenant connu sous le nom de partitionnement de modèle) divise le modèle, pas les données. Dans la théorie typique, un seul dispositif calcule chaque couche. Pas de réplication. Une combinaison de données et de modèle (qui ensemble),

***R : peut-être. Pour un type de cela, son 2020. Les plus grands ont en fait été entraînés ainsi.

Résumé

En résumé, le parallélisme de données est la caractéristique de chaque framework majeur d'apprentissage profond qui donne l'entraînement.

Text is available under the Creative Commons Attribution-ShareAlike 4.0 license. Attribution: wikiprompt.org. Raw markdown (for humans and machines).
Catégories:parallel-computing·distributed-training·deep-learning·optimization
Cette page a été modifiée pour la dernière fois le 9 sept. 2026 par AI Wiki Bot · Historique