View a markdown version of this page

Commencez par une formation distribuée sur Amazon SageMaker AI - Amazon SageMaker AI

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 commencer à utiliser 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 d'entraînement. 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 les GPU et les nœuds, et étendent les capacités d'entraînement de l' SageMaker IA grâce à des options intégrées qui nécessitent un minimum de modifications du code de 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, de sorte que vous pouvez exécuter des formations de n'importe quelle taille à grande échelle.

Nous vous recommandons d'utiliser la ModelTrainer classe avec PyTorch et TensorFlow dans le SDK SageMaker Python, qui sont des lanceurs de tâches de formation proposant diverses options de formation distribuées. Lorsque vous créez un ModelTrainer objet, celui-ci configure une infrastructure de formation distribuée, exécute l'CreateTrainingJobAPI 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 contenant un certain nombre de bibliothèques, notamment des cadres de deep learning, des cadres de formation distribués et le pilote EFA. Si vous souhaitez monter un système de fichiers FSx sur les instances de formation, vous devez transmettre votre identifiant de sous-réseau VPC et de groupe de sécurité au. ModelTrainer

Avant d'exécuter votre tâche de formation distribuée en SageMaker IA, lisez les instructions générales suivantes concernant 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 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 de formation distribuées multi-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 EFA-enabled GPU prises en charge par l'IA. SageMaker En particulier, pour réaliser la tâche de formation distribuée la plus performante en matière d' SageMaker IA, nous recommandons les instances P4d et P4de équipées de GPU NVIDIA A100. Elles sont également équipées d'un stockage d'instance local à haut débit et à faible latence et d'un réseau intra-nœud plus rapide. Pour le stockage de données, nous recommandons Amazon FSx pour Lustre, qui fournit un débit élevé pour le stockage des jeux de données d'entraînement et des points de contrôle des modèles.

Utiliser la bibliothèque SageMaker AI Distributed Data Parallelism (SMDDP)

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 collectives 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 PyTorch-based distribués  : parallèle de données PyTorch distribué (DDP), parallélisme de données PyTorch entièrement partagé (FSDP), et. DeepSpeed Megatron-DeepSpeed L’exemple de code suivant montre comment définir un estimateur PyTorch pour lancer une tâche d’entraînement distribué sur deux instances ml.p4d.24xlarge.

from sagemaker.train import ModelTrainer from sagemaker.train.configs import Compute from sagemaker.train.distributed import Torchrun model_trainer = ModelTrainer( ..., compute=Compute(instance_count=2, instance_type="ml.p4d.24xlarge"), # Activate distributed training with SMDDP distributed=Torchrun() )

Pour savoir comment préparer votre script de formation et lancer une tâche de formation parallèle aux données distribuées 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 d'entraînement distribuées, telles que le parallélisme des données partitionnées, le pipelining, 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 Caractéristiques principales de la bibliothèque de parallélisme des SageMaker modèles.

Pour utiliser la bibliothèque de parallélisme des modèles d' SageMaker AI, configurez le distribution paramètre des estimateurs du framework SageMaker AI.

La ModelTrainer classe prend en charge PyTorch et TensorFlow. L'exemple de code suivant montre comment créer un programme ModelTrainer d'entraînement distribué avec la bibliothèque de parallélisme des modèles sur deux ml.p4d.24xlarge instances.

from sagemaker.train import ModelTrainer from sagemaker.train.configs import Compute from sagemaker.train.distributed import Torchrun model_trainer = ModelTrainer( ..., compute=Compute(instance_count=2, instance_type="ml.p4d.24xlarge"), distributed=Torchrun() )

Pour savoir comment adapter votre script d'entraînement, configurer les paramètres de distribution en estimator classe et lancer une tâche de formation distribuée, consultez la bibliothèque de parallélisme des modèles d'SageMaker AI (voir également les API de formation distribuée dans la documentation du SDK SageMaker Python).

Utilisation des frameworks d'entraînement distribué open source

SageMaker L'IA prend également en charge les options suivantes pour fonctionner mpirun et torchrun dans le backend.

  • Pour utiliser PyTorch DistributedDataParallel (DDP) dans l' SageMaker IA avec le mpirun backend, ajoutez-le distribution={"pytorchddp": {"enabled": True}} à votre PyTorch estimateur. Pour plus d'informations, consultez également l'distributionargument de PyTorch Distributed Training and SageMaker AI PyTorch Estimator dans la documentation du SDK SageMaker Python.

    Note

    Cette option est disponible pour la version PyTorch 1.12.0 et les versions ultérieures.

    from sagemaker.train import ModelTrainer from sagemaker.train.configs import Compute from sagemaker.train.distributed import Torchrun model_trainer = ModelTrainer( ..., compute=Compute(instance_count=2, instance_type="ml.p4d.24xlarge"), distributed=Torchrun() # runs torchrun in the backend )
  • SageMaker L'IA prend en charge le PyTorch torchrun lanceur pour la formation distribuée sur les instances GPU-based Amazon EC2, telles que P3 et P4, ainsi que sur Trn1 alimentée par l'appareil Trainium. AWS

    Pour utiliser PyTorch DistributedDataParallel (DDP) dans SageMaker AI avec le torchrun backend, ajoutez-le distribution={"torch_distributed": {"enabled": True}} à l' PyTorch estimateur.

    Note

    Cette option est disponible pour la version PyTorch 1.13.0 et les versions ultérieures.

    L'extrait de code suivant montre un exemple de construction d'un PyTorch estimateur SageMaker IA pour exécuter un entraînement distribué sur deux ml.p4d.24xlarge instances avec l'option de distribution. torch_distributed

    from sagemaker.train import ModelTrainer from sagemaker.train.configs import Compute from sagemaker.train.distributed import Torchrun model_trainer = ModelTrainer( ..., compute=Compute(instance_count=2, instance_type="ml.p4d.24xlarge"), distributed=Torchrun() # runs torchrun in the backend )

    Pour plus d'informations, consultez l'distributionargument de Distributed PyTorch Training and 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, consultez la section Architecture Trainium dans la documentation AWS Neuron.

    Pour vous entraîner sur les Trainium-powered instances, il vous suffit de spécifier le code d'instance Trn1,ml.trn1.*, dans une chaîne de caractères associée à l'instance_typeargument de la classe d' PyTorch estimateur SageMaker AI. Pour trouver les types d'instances Trn1 disponibles, consultez Architecture AWS Trn1 dans 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 dans les conteneurs AWS Deep Learning pour PyTorch Neuron à partir de la version 1.11.0. Pour obtenir la liste complète des versions prises en charge de PyTorch Neuron, voir 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, SageMaker AI sélectionne et exécute automatiquement le bon conteneur à 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 afin de 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 afin d'initialiser les groupes de processus avec le xla backend et de les utiliser. PyTorch/XLA Pour soutenir le processus d'adoption du 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 la formation avec PyTorch Neuron (torch-neuronx) dans la documentation AWS Neuron.

    Pour plus d'informations, consultez la section Entraînement distribué avec PyTorch Neuron sur les instances Trn1 et l'distributionargument d'SageMaker AI PyTorch Estimator dans la documentation du SDK Python. SageMaker

  • Pour utiliser MPI dans SageMaker AI, 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 des options MPI et du serveur de paramètres par framework, utilisez les liens suivants vers la documentation du SDK SageMaker Python.