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.
Mise en route avec l’entraînement distribué dans Amazon SageMaker AI
La page suivante fournit des informations sur les étapes nécessaires pour commencer à utiliser l’entraînement distribué dans Amazon SageMaker AI. Si vous connaissez déjà l'entraînement distribué, choisissez l'option, parmi les suivantes, qui correspond à votre stratégie ou votre framework préférés pour commencer. Si vous souhaitez en savoir plus sur l'entraînement distribué en général, consultez Concepts d’entraînement distribué.
Les bibliothèques d’entraînement distribué SageMaker AI sont optimisées pour l’environnement d’entraînement SageMaker. Elles vous aident à adapter vos tâches d’entraînement distribué à SageMaker AI et à améliorer la vitesse et le débit d’entraînement. Les offrent des stratégies d'entraînement parallèle de données et de modèles. Elles combinent des technologies logicielles et matérielles pour améliorer les communications entre les GPU et les nœuds, et étendent les capacités d’entraînement de SageMaker AI grâce à des options intégrées qui ne nécessitent que de légères modifications du code de vos scripts d’entraînement.
Avant de commencer
L'entraînement SageMaker prend en charge l'entraînement distribué sur une seule instance ainsi que sur plusieurs instances, afin que vous puissiez exécuter des entraînements de toutes tailles à grande échelle. Nous vous recommandons d'utiliser les classes d'estimateur de framework telles que PyTorchCreateTrainingJob dans le système dorsal, trouve la région dans laquelle se déroule votre session en cours et extrait l’un des conteneurs de deep learning AWS prédéfinis, pré-empaquetés avec un certain nombre de bibliothèques, notamment des cadres de deep learning, des cadres d’entraînement distribué et le pilote EFA. Si vous souhaitez monter un système de fichiers FSx sur les instances d'entraînement, vous devez transmettre votre sous-réseau de VPC et votre ID de groupe de sécurité à l'estimateur. Avant d’exécuter votre tâche d’entraînement distribué dans SageMaker AI, lisez les instructions générales suivantes sur la configuration de base de l’infrastructure.
Zones de disponibilité et fond de panier réseau
Lorsque vous disposez de plusieurs instances (également appelées nœuds), il est important de comprendre le réseau qui les connecte et la façon dont elles lisent les données d’entraînement et partagent mutuellement les informations. Par exemple, lorsque vous exécutez une tâche d'entraînement de parallélisme de données distribué, un certain nombre de facteurs, tels que la communication entre les nœuds d'un cluster de calcul pour exécuter l'opération AllReduce et le transfert de données entre les nœuds et le stockage de données dans Amazon Simple Storage Service ou Amazon FSx pour Lustre, jouent un rôle crucial pour optimiser l'utilisation des ressources de calcul et accélérer la vitesse d'entraînement. Pour réduire les frais de communication, assurez-vous de configurer les instances, le sous-réseau du VPC et le stockage de données dans les mêmes Région AWS et zone de disponibilité.
Instances de GPU avec réseau plus rapide et stockage à haut débit
Techniquement, vous pouvez utiliser n'importe quelle instance pour un entraînement distribué. Dans les cas où vous devez exécuter des tâches d’entraînement distribué sur plusieurs nœuds pour entraîner de grands modèles, tels que les grands modèles de langage (LLM) et les modèles de diffusion, qui nécessitent une commutation inter-nœuds plus rapide, nous recommandons les instances de GPU compatibles avec EFA prises en charge par SageMaker AI
Utilisation de la bibliothèque SageMaker AI de parallélisme distribué des données (SMDDP)
La bibliothèque SMDDP améliore la communication entre les nœuds avec des implémentations d’opérations de communication collective AllReduce et AllGather optimisées pour l’infrastructure réseau AWS et la topologie d’instance de machine learning Amazon SageMaker AI. Vous pouvez utiliser la bibliothèque SMDDP comme système dorsal des packages d’entraînement distribué basés sur PyTorch : PyTorch Distributed Data Parallel (DDP)PyTorch pour lancer une tâche d’entraînement distribué sur deux instances ml.p4d.24xlarge.
from sagemaker.pytorch import PyTorch estimator = PyTorch( ..., instance_count=2, instance_type="ml.p4d.24xlarge", # Activate distributed training with SMDDP distribution={ "pytorchddp": { "enabled": True } } # mpirun, activates SMDDP AllReduce OR AllGather # distribution={ "torch_distributed": { "enabled": True } } # torchrun, activates SMDDP AllGather # distribution={ "smdistributed": { "dataparallel": { "enabled": True } } } # mpirun, activates SMDDP AllReduce OR AllGather )
Pour découvrir comment préparer votre script d’entraînement et lancer une tâche d’entraînement distribué de parallélisme des données sur SageMaker AI, consultez Exécution d’entraînements distribués avec la bibliothèque SageMaker AI de parallélisme distribué des données.
Utilisation de la bibliothèque SageMaker AI de parallélisme des modèles (SMP)
SageMaker fournit la bibliothèque SMP et prend en charge diverses techniques d’entraînement distribué, telles que le parallélisme partitionné des données, le parallélisme de pipeline, le parallélisme de tenseur, le partitionnement de l’état de l’optimiseur, etc. Pour en savoir plus sur ce que la bibliothèque SMP propose, consultez Principales fonctions de la bibliothèque de parallélisme de modèles SageMaker.
Pour utiliser la bibliothèque SageMaker AI de parallélisme des modèles, configurez le paramètre distribution des estimateurs du cadre SageMaker AI. Les estimateurs de cadre pris en charge sont PyTorchml.p4d.24xlarge.
from sagemaker.frameworkimportFrameworkdistribution={ "smdistributed": { "modelparallel": { "enabled":True, "parameters": { ... # enter parameter key-value pairs here } }, }, "mpi": { "enabled" : True, ... # enter parameter key-value pairs here } } estimator =Framework( ..., instance_count=2, instance_type="ml.p4d.24xlarge", distribution=distribution )
Pour découvrir comment adapter votre script d’entraînement, configurer les paramètres de distribution dans la classe estimator et lancer une tâche d’entraînement distribué, consultez la bibliothèque SageMaker AI de parallélisme des modèles (consultez également Distributed Training APIs
Utilisation des frameworks d'entraînement distribué open source
SageMaker AI prend également en charge les options suivantes pour faire fonctionner mpirun et torchrun dans le système dorsal.
-
Pour utiliser PyTorch DistributedDataParallel (DDP)
dans SageMaker AI avec le système dorsal mpirun, ajoutezdistribution={"pytorchddp": {"enabled": True}}à votre estimateur PyTorch. Pour plus d’informations, consultez également PyTorch Distributed Traininget l’argument distributionde SageMaker AI PyTorch Estimatordans la documentation du kit SageMaker Python SDK. Note
Cette option est disponible avec la version 1.12.0 et ultérieure de PyTorch.
from sagemaker.pytorch import PyTorch estimator = PyTorch( ..., instance_count=2, instance_type="ml.p4d.24xlarge", distribution={"pytorchddp": {"enabled": True}} # runs mpirun in the backend ) -
SageMaker AI prend en charge le lanceur
torchrunPyTorchpour l’entraînement distribué sur des instances Amazon EC2 basées sur GPU, telles que P3 et P4, ainsi que sur Trn1 alimenté par le dispositif AWS Trainium . Pour utiliser PyTorch DistributedDataParallel (DDP)
dans SageMaker AI avec le système dorsal torchrun, ajoutezdistribution={"torch_distributed": {"enabled": True}}à l’estimateur PyTorch.Note
Cette option est disponible avec la version 1.13.0 et ultérieure de PyTorch.
L’extrait de code suivant montre un exemple de construction d’un estimateur SageMaker AI PyTorch pour exécuter un entraînement distribué sur deux instances
ml.p4d.24xlargeavec l’option de distributiontorch_distributed.from sagemaker.pytorch import PyTorch estimator = PyTorch( ..., instance_count=2, instance_type="ml.p4d.24xlarge", distribution={"torch_distributed": {"enabled": True}} # runs torchrun in the backend )Pour plus d’informations, consultez Distributed PyTorch Training
et l’argument distributionde SageMaker AI PyTorch Estimatordans la documentation du kit SageMaker Python SDK. Notes pour l'entrainement distribué sur Trn1
Chaque instance Trn1 comprend jusqu'à 16 dispositifs Trainium et chaque dispositif Trainium se compose de deux NeuronCores
. Pour les spécifications des appareils AWS Trainium, consultez Trainium Architecture (Architecture Trainium) dans la documentation AWS Neuron. Pour entraîner sur les instances alimentées par Trainium, il vous suffit de spécifier le nom de code des instances Trn1,
ml.trn1.*, sous forme de chaîne correspondant à l’argumentinstance_typede la classe d’estimateur SageMaker AI PyTorch. Pour trouver les types d'instances Trn1 disponibles, consultez Architecture AWS Trn1dans la Documentation AWS Neuron (langue française non garantie). Note
L'entraînement SageMaker sur les instances Amazon EC2 Trn1 est actuellement disponible uniquement pour le framework PyTorch dans les conteneurs AWS Deep Learning pour PyTorch Neuron à partir de la version v1.11.0. Pour trouver la liste complète des versions prises en charge de PyTorch Neuron, consultez Conteneurs Neuron
dans le référentiel GitHub de conteneurs AWS Deep Learning (langue française non garantie). Lorsque vous lancez une tâche d’entraînement sur des instances Trn1 à l’aide du kit SageMaker Python SDK, SageMaker AI sélectionne et exécute automatiquement le conteneur approprié parmi les conteneurs Neuron
fournis par AWS Deep Learning Containers. Les conteneurs Neuron sont préemballés avec des paramètres d'environnement d'entraînement et des dépendances pour faciliter l'adaptation de votre tâche d'entraînement à la plateforme d'entraînement SageMaker et aux instances Amazon EC2 Trn1. Note
Pour exécuter votre tâche d’entraînement PyTorch sur des instances Trn1 avec SageMaker AI, vous devez modifier votre script d’entraînement pour initialiser les groupes de processus avec le système dorsal
xla, et utiliser PyTorch/XLA. Pour faciliter le processus d'adoption du XLA, le kit SDK AWS Neuron fournit PyTorch Neuron qui utilise XLA pour convertir les opérations PyTorch en instructions Trainium. Pour découvrir comment modifier votre script d'entraînement, consultez Guide du développeur pour l'entraînement avec PyTorch Neuron ( torch-neuronx)dans la Documentation AWS Neuron (langue française non garantie). Pour plus d’informations, consultez Distributed Training with PyTorch Neuron on Trn1 instances
et l’argument distributionde SageMaker AI PyTorch Estimatordans la documentation du kit SageMaker Python SDK. -
Pour utiliser MPI dans SageMaker AI, ajoutez
distribution={"mpi": {"enabled": True}}à votre estimateur. L'option de distribution MPI est disponible pour les cadres suivants : MXNet, PyTorch et TensorFlow. -
Pour utiliser un serveur de paramètres dans SageMaker AI, ajoutez
distribution={"parameter_server": {"enabled": True}}à votre estimateur. L'option du serveur de paramètres est disponible pour les cadres suivants : MXNet, PyTorch et TensorFlow.Astuce
Pour plus d'informations sur l'utilisation des options MPI et du serveur de paramètres par cadre, utilisez les liens suivants vers la documentation du kit SDK Python SageMaker.
-
MXNet Distributed Training
et argument distributionde SageMaker AI MXNet Estimator -
PyTorch Distributed Training
et argument distributionde SageMaker AI PyTorch Estimator -
TensorFlow Distributed Training
et argument distributionde SageMaker AI TensorFlow Estimator.
-