Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Présentation de la bibliothèque de parallélisme de données SageMaker distribué
La bibliothèque SMDDP ( SageMaker Distributed Data Parallelism) est une bibliothèque de communication collective qui améliore les performances informatiques de l'entraînement parallèle aux données distribuées. La bibliothèque SMDDP permet de réduire la surcharge de communication liée aux principales opérations de communication collective en proposant les éléments suivants.
-
La bibliothèque propose des offres
AllReduce
optimisées pour AWS.AllReduce
est une opération clé utilisée pour synchroniser les dégradés entre les GPU à la fin de chaque itération d'entraînement pendant l'entraînement aux données distribuées. -
La bibliothèque propose des offres
AllGather
optimisées pour AWS.AllGather
est une autre opération clé utilisée dans le cadre de l'apprentissage parallèle des données partagées, une technique de parallélisme de données économe en mémoire proposée par des bibliothèques populaires telles que la bibliothèque SageMaker Model Parallelism (SMP), DeepSpeed Zero Redundancy Optimizer (Zero) et Fully Sharded Data Parallelism (FSDP). PyTorch -
La bibliothèque optimise la node-to-node communication en utilisant pleinement l'infrastructure AWS réseau et la topologie d'instance Amazon EC2.
La bibliothèque SMDDP peut augmenter la vitesse d'entraînement en améliorant les performances à mesure que vous adaptez votre cluster d'entraînement, avec une efficacité de mise à l'échelle quasi linéaire.
Note
Les bibliothèques de formation SageMaker distribuées sont disponibles via les conteneurs d'apprentissage AWS profond PyTorch et Hugging Face de SageMaker la plateforme de formation. Pour utiliser les bibliothèques, vous devez utiliser le SDK SageMaker Python ou les SageMaker API via SDK for Python (Boto3) ou. AWS Command Line Interface Tout au long de la documentation, les instructions et les exemples se concentrent sur l'utilisation des bibliothèques de formation distribuées avec le SDK SageMaker Python.
Opérations de communication collective SMDDP optimisées pour les ressources AWS informatiques et l'infrastructure réseau
La bibliothèque SMDDP fournit des implémentations des AllReduce
opérations AllGather
collectives optimisées pour les ressources AWS informatiques et l'infrastructure réseau.
Opération collective SMDDP AllReduce
La bibliothèque SMDDP permet un chevauchement optimal des AllReduce
opérations avec le retour en arrière, ce qui améliore considérablement l'utilisation du GPU. Il atteint une efficacité de mise à l'échelle quasi linéaire et une vitesse d'entraînement plus rapide en optimisant les opérations du noyau entre les processeurs et les GPU. La bibliothèque fonctionne AllReduce
en parallèle pendant que le GPU calcule les dégradés sans supprimer de cycles GPU supplémentaires, ce qui permet à la bibliothèque d'accélérer l'entraînement.
-
Exploite les processeurs : la bibliothèque utilise des processeurs pour effectuer des
AllReduce
dégradations, déchargeant ainsi cette tâche des GPU. -
Utilisation améliorée des GPU : les GPU du cluster se concentrent sur le calcul des gradients, améliorant leur utilisation tout au long de l'entraînement.
Voici le flux de travail de haut niveau de l'opération SMDDP. AllReduce
-
La bibliothèque affecte des classements aux GPU (employés).
-
À chaque itération, la bibliothèque divise chaque lot global par le nombre total d'employés (taille mondiale) et affecte de petits lots (partitions de lots) aux employés.
-
Le lot global a une taille de
(number of nodes in a cluster) * (number of GPUs per node) * (per batch shard)
. -
Une partition de lot (petit lot) est un sous-ensemble du jeu de données affecté à chaque GPU (employé) par itération.
-
-
La bibliothèque lance un script d'entraînement sur chaque employé.
-
La bibliothèque gère les copies des poids et des gradients des modèles reçus des employés à la fin de chaque itération.
-
La bibliothèque synchronise les poids et les gradients des modèles entre les employés afin d'agréger un seul modèle entraîné.
Le diagramme d'architecture qui suit est un exemple de la façon dont la bibliothèque configure le parallélisme des données pour un cluster de 3 nœuds.
Opération collective SMDDP AllGather
AllGather
est une opération collective dans laquelle chaque travailleur commence par un tampon d'entrée, puis concatène ou rassemble les tampons d'entrée de tous les autres travailleurs dans un tampon de sortie.
Note
L'opération AllGather
collective SMDDP est disponible dans AWS Deep Learning Containers (DLC) pour les versions 2.0.1 smdistributed-dataparallel>=2.0.1
et ultérieures PyTorch .
AllGather
est largement utilisé dans les techniques de formation distribuées telles que le parallélisme de données fragmenté où chaque collaborateur détient une fraction d'un modèle, ou une couche fragmentée. Les ouvriers appellent AllGather
avant les passes avant et arrière pour reconstruire les couches fragmentées. Les passes avant et arrière se poursuivent une fois que tous les paramètres sont collectés. Pendant le passage en arrière, chaque utilisateur appelle également ReduceScatter
pour collecter (réduire) les dégradés et les diviser (disperser) en fragments de dégradé afin de mettre à jour la couche fragmentée correspondante. Pour plus de détails sur le rôle de ces opérations collectives dans le parallélisme des données fragmentées, consultez l'implémentation du parallélisme des données partitionnées par la bibliothèque SMP, Zero
Comme AllGather les opérations collectives de ce type sont appelées à chaque itération, elles sont les principaux responsables de la surcharge de communication du GPU. L'accélération du calcul de ces opérations collectives se traduit directement par un temps d'entraînement plus court, sans aucun effet secondaire sur la convergence. Pour ce faire, la bibliothèque SMDDP propose des solutions AllGather
optimisées pour les instances P4d
SMDDP AllGather
utilise les techniques suivantes pour améliorer les performances de calcul sur les instances P4d.
-
Il transfère les données entre les instances (inter-nœuds) via le réseau Elastic Fabric Adapter (EFA) avec une topologie
maillée. EFA est la solution AWS réseau à faible latence et à haut débit. Une topologie maillée pour la communication réseau entre nœuds est mieux adaptée aux caractéristiques de l'EFA et de l'infrastructure AWS réseau. Par rapport à la topologie en anneau ou en arbre NCCL qui implique plusieurs sauts de paquets, le SMDDP évite d'accumuler de la latence due à plusieurs sauts car il n'en a besoin que d'un seul. Le SMDDP met en œuvre un algorithme de contrôle du débit réseau qui équilibre la charge de travail de chaque homologue de communication dans une topologie maillée et permet d'obtenir un débit réseau global plus élevé. -
Il adopte une bibliothèque de copie de mémoire GPU à faible latence basée sur la technologie NVIDIA GPUDirect RDMA (GDRCopy)
pour coordonner le trafic réseau local NVLink et EFA. GDRCopy, une bibliothèque de copie de mémoire GPU à faible latence proposée par NVIDIA, fournit une communication à faible latence entre les processus du processeur et les noyaux CUDA du GPU. Grâce à cette technologie, la bibliothèque SMDDP est capable de canaliser le mouvement de données intra-nœud et inter-nœud. -
Il réduit l'utilisation des multiprocesseurs de streaming GPU afin d'augmenter la puissance de calcul pour exécuter les noyaux des modèles. Les instances P4d et P4de sont équipées de GPU NVIDIA A100, dotés chacun de 108 multiprocesseurs de streaming. Alors que le NCCL utilise jusqu'à 24 multiprocesseurs de streaming pour exécuter des opérations collectives, le SMDDP utilise moins de 9 multiprocesseurs de streaming. Les noyaux de calcul modélisés récupèrent les multiprocesseurs de streaming enregistrés pour accélérer les calculs.