Présentation de la bibliothèque de parallélisme de données SageMaker distribué - Amazon SageMaker

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.

  1. La bibliothèque propose des offres AllReduce optimisées pour AWS. AllReduceest 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.

  2. La bibliothèque propose des offres AllGather optimisées pour AWS. AllGatherest 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

  3. 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

  1. La bibliothèque affecte des classements aux GPU (employés).

  2. À 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.

  3. La bibliothèque lance un script d'entraînement sur chaque employé.

  4. 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.

  5. 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.

Schéma de l'architecture SMDDP AllReduce et du parallélisme des données

Opération collective SMDDP AllGather

AllGatherest 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 .

AllGatherest 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 dans la DeepSpeed documentation, et le blog sur le parallélisme des données entièrement partitionné. PyTorch

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.

  1. 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é.

  2. 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.

  3. 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.