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.
Commencez par une formation distribuée sur Amazon SageMaker AI
La page suivante fournit des informations sur les étapes nécessaires pour démarrer avec la formation distribuée 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 de formation distribuées basées sur l' SageMaker IA sont optimisées pour l'environnement de SageMaker formation, aident à adapter vos tâches de formation distribuées à l' SageMaker IA et améliorent la vitesse et le débit de formation. Les offrent des stratégies d'entraînement parallèle de données et de modèles. Ils combinent des technologies logicielles et matérielles pour améliorer les communications entre GPU et entre nœuds, et étendent les capacités de formation de l' SageMaker IA grâce à des options intégrées qui nécessitent des modifications de code minimales dans vos scripts d'entraînement.
Avant de commencer
SageMaker La formation prend en charge la formation distribuée sur une seule instance ainsi que sur plusieurs instances, afin que vous puissiez exécuter des formations de toutes tailles à grande échelle. Nous vous recommandons d'utiliser les classes d'estimateur du framework telles que PyTorchCreateTrainingJobAPI dans le backend, trouve la région dans laquelle s'exécute votre session en cours et extrait l'un des conteneurs d'apprentissage AWS profond prédéfinis, préemballés avec un certain nombre de bibliothèques, notamment des cadres d'apprentissage profond, des cadres de formation distribués et le pilote EFA. Si vous souhaitez monter un système de FSx fichiers sur les instances de formation, vous devez transmettre votre sous-réseau VPC et votre ID de groupe de sécurité à l'estimateur. Avant d'exécuter votre tâche de formation distribuée dans le domaine de l' SageMaker IA, 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 de formation parallèle aux données distribuée, un certain nombre de facteurs, tels que la communication entre les nœuds d'un cluster de calcul pour exécuter l'AllReduceopération et le transfert de données entre les nœuds et le stockage des données dans Amazon Simple Storage Service ou Amazon FSx for Lustre, jouent un rôle crucial pour optimiser l'utilisation des ressources informatiques 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 VPC et le stockage des données dans la même Région AWS 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ées sur plusieurs nœuds pour entraîner de grands modèles, tels que les grands modèles de langage (LLMs) et les modèles de diffusion, qui nécessitent une commutation inter-nœuds plus rapide, nous recommandons les instances GPU compatibles EFA prises en charge par l'IA
Utiliser la bibliothèque de parallélisme distribué des données (SMDDP) basée sur l' SageMaker IA
La bibliothèque SMDDP améliore la communication entre les nœuds grâce à des implémentations AllReduce et à des opérations de communication AllGather collective optimisées pour l'infrastructure AWS réseau et la topologie des instances Amazon SageMaker AI ML. Vous pouvez utiliser la bibliothèque SMDDP comme backend de modules de formation distribués PyTorch basés sur : distributed PyTorch 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 savoir comment préparer votre script de formation et lancer une tâche de formation parallèle aux données distribuée sur l' SageMaker IA, consultezOrganisez une formation distribuée avec la bibliothèque de parallélisme de données distribué basée sur l' SageMaker IA.
Utiliser la bibliothèque de parallélisme des modèles d' SageMaker IA (SMP)
SageMaker L'IA fournit la bibliothèque SMP et prend en charge diverses techniques de formation distribuées, telles que le parallélisme des données fragmentées, le pipeline, le parallélisme des tenseurs, le partitionnement de l'état de l'optimiseur, etc. Pour en savoir plus sur ce que la bibliothèque SMP propose, consultez Principales fonctionnalités de la bibliothèque de parallélisme des SageMaker modèles.
Pour utiliser la bibliothèque de parallélisme des modèles d' SageMaker IA, configurez le distribution paramètre des estimateurs du framework d' SageMaker IA. 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 savoir comment adapter votre script d'entraînement, configurer les paramètres de distribution dans la estimator classe et lancer une tâche de formation distribuée, consultez la bibliothèque de modèles de parallélisme de l'SageMaker IA (voir également Formation distribuée APIs
Utilisation des frameworks d'entraînement distribué open source
SageMaker L'IA prend également en charge les options suivantes pour le fonctionnement mpirun et torchrun dans le backend.
-
Pour utiliser PyTorch DistributedDataParallel (DDP)
dans l' SageMaker IA avec le mpirunbackend, ajoutez-ledistribution={"pytorchddp": {"enabled": True}}à votre PyTorch estimateur. Pour plus d'informations, consultez également l'distributionargument de PyTorch Distributed Traininget SageMaker AI PyTorch Estimator dans la documentation du SDK SageMaker Python. Note
Cette option est disponible pour les versions PyTorch 1.12.0 et ultérieures.
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 L'IA prend en charge le PyTorch
torchrunlanceurpour la formation distribuée sur des instances Amazon EC2 basées sur un GPU, telles que P3 et P4, ainsi que sur Trn1 alimenté par le dispositif Trainium.AWS Pour utiliser PyTorch DistributedDataParallel (DDP)
dans l' SageMaker IA avec le torchrunbackend, ajoutez-ledistribution={"torch_distributed": {"enabled": True}}à l' PyTorch estimateur.Note
Cette option est disponible pour les versions PyTorch 1.13.0 et ultérieures.
L'extrait de code suivant montre un exemple de création d'un PyTorch estimateur d' SageMaker IA pour exécuter un entraînement distribué sur deux
ml.p4d.24xlargeinstances avec l'option de distribution.torch_distributedfrom 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 l'
distributionargument de Distributed PyTorch Trainingand SageMaker AI PyTorch Estimator dans la documentation du SDK SageMaker Python. Notes pour l'entrainement distribué sur Trn1
Une instance Trn1 comprend jusqu'à 16 appareils Trainium, et chaque appareil Trainium en comprend deux. NeuronCores
Pour les spécifications des appareils AWS Trainium, voir Architecture Trainium dans la documentation AWS Neuron. Pour vous entraîner sur les instances alimentées par Trainium, il vous suffit de spécifier le code d'instance Trn1
ml.trn1.*, sous forme de chaîne à côté de l'instance_typeargument de la SageMaker classe d'estimateur AI. PyTorch Pour trouver les types d'instances Trn1 disponibles, consultez Architecture AWS Trn1dans la Documentation AWS Neuron (langue française non garantie). Note
SageMaker La formation sur les instances Amazon EC2 Trn1 est actuellement disponible uniquement pour le PyTorch framework AWS Deep Learning Containers for PyTorch Neuron à partir de la version 1.11.0. Pour obtenir la liste complète des versions prises en charge de PyTorch Neuron, consultez Neuron Containers
dans le référentiel AWS Deep Learning Containers GitHub . Lorsque vous lancez une tâche de formation sur des instances Trn1 à l'aide du SDK SageMaker Python, l' SageMaker IA sélectionne et exécute automatiquement le conteneur approprié à partir des conteneurs Neuron
fournis par AWS Deep Learning Containers. Les conteneurs Neuron sont préemballés avec les paramètres et les dépendances de l'environnement de formation pour faciliter l'adaptation de votre tâche de formation à la plateforme de SageMaker formation et aux instances Amazon EC2 Trn1. Note
Pour exécuter votre tâche de PyTorch formation sur des instances Trn1 avec SageMaker AI, vous devez modifier votre script d'entraînement pour initialiser les groupes de processus avec le
xlabackend et utiliser /XLA. PyTorchPour soutenir le processus d'adoption de XLA, le SDK AWS Neuron fournit PyTorch Neuron qui utilise XLA pour convertir les opérations en instructions Trainium. PyTorch Pour savoir comment modifier votre script d'entraînement, consultez le guide du développeur pour l'entraînement avec PyTorch Neuron ( torch-neuronx)dans la documentation de AWS Neuron. Pour plus d'informations, consultez la section Entraînement distribué avec PyTorch Neuron sur les instances Trn1
et l'argument d'SageMaker AI PyTorch Estimator distributiondans la documentation du SDK PythonSageMaker . -
Pour utiliser MPI dans l' SageMaker IA, ajoutez-le
distribution={"mpi": {"enabled": True}}à votre estimateur. L'option de distribution MPI est disponible pour les frameworks suivants : MXNet, PyTorch, et TensorFlow. -
Pour utiliser un serveur de paramètres dans SageMaker AI, ajoutez-le
distribution={"parameter_server": {"enabled": True}}à votre estimateur. L'option de serveur de paramètres est disponible pour les frameworks suivants : MXNet, PyTorch, et TensorFlow.Astuce
Pour plus d'informations sur l'utilisation du MPI et des options du serveur de paramètres par framework, utilisez les liens suivants vers la documentation du SDK SageMaker Python.