

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
<a name="distributed-training-get-started"></a>

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é](distributed-training.md#distributed-training-basic-concepts).

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
<a name="distributed-training-before-getting-started"></a>

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 ](https://sagemaker.readthedocs.io/en/stable/api/sagemaker_train.html) et [ TensorFlow ](https://sagemaker.readthedocs.io/en/stable/api/sagemaker_train.html) 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'`CreateTrainingJob`API 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. ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html) 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
<a name="availability-zones"></a>

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
<a name="optimized-GPU"></a>

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 ](https://aws.amazon.com/about-aws/whats-new/2021/05/amazon-sagemaker-supports-elastic-fabric-adapter-distributed-training/) 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. ](https://aws.amazon.com/ec2/instance-types/p4/) 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](https://docs.aws.amazon.com/fsx/latest/LustreGuide/what-is.html), 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 ](https://docs.aws.amazon.com/sagemaker/latest/dg/data-parallel-modify-sdp-pt.html) : parallèle de données [ PyTorch distribué (DDP)](https://pytorch.org/docs/stable/notes/ddp.html), parallélisme de données [ PyTorch entièrement partagé (FSDP), et. ](https://pytorch.org/docs/stable/fsdp.html) [ DeepSpeed ](https://github.com/microsoft/DeepSpeed) [ Megatron-DeepSpeed ](https://github.com/microsoft/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, consultez[Organisez une formation distribuée avec la bibliothèque de parallélisme de données distribué basée sur l' SageMaker IA](data-parallel.md).

**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](model-parallel-core-features.md).

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 ](https://sagemaker.readthedocs.io/en/stable/api/sagemaker_train.html) et [ TensorFlow](https://sagemaker.readthedocs.io/en/stable/api/sagemaker_train.html). 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 ](model-parallel.md) (voir également les API de formation [ distribuée ](https://sagemaker.readthedocs.io/en/stable/api/training/distributed.html#the-sagemaker-distributed-model-parallel-library) 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) ](https://pytorch.org/docs/master/generated/torch.nn.parallel.DistributedDataParallel.html) dans l' SageMaker IA avec le `mpirun` backend, ajoutez-le `distribution={"pytorchddp": {"enabled": True}}` à votre PyTorch estimateur. Pour plus d'informations, consultez également l'`distribution`argument de [ PyTorch Distributed Training ](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/using_pytorch.html#distributed-pytorch-training) and [ SageMaker AI PyTorch Estimator ](https://sagemaker.readthedocs.io/en/stable/api/sagemaker_train.html) 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 ](https://pytorch.org/docs/stable/elastic/run.html) 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](https://aws.amazon.com/machine-learning/trainium/) 

  Pour utiliser [ PyTorch DistributedDataParallel (DDP) ](https://pytorch.org/docs/master/generated/torch.nn.parallel.DistributedDataParallel.html) 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'`distribution`argument de [ Distributed PyTorch Training ](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/using_pytorch.html#distributed-pytorch-training) and [ SageMaker AI PyTorch Estimator ](https://sagemaker.readthedocs.io/en/stable/api/sagemaker_train.html) 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 ](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/general/arch/neuron-hardware/neuroncores-arch.html#neuroncores-v2-arch) Pour les spécifications des appareils AWS Trainium, consultez la section Architecture [ Trainium ](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/general/arch/neuron-hardware/trn1-arch.html#id2) 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_type`argument de la classe d' PyTorch estimateur SageMaker AI. Pour trouver les types d'instances Trn1 disponibles, consultez [Architecture AWS Trn1](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/general/arch/neuron-hardware/trn1-arch.html#aws-trn1-arch) 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 ](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#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 ](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#neuron-containers) 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 ](https://pytorch.org/xla/release/1.12/index.html) 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`) ](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/frameworks/torch/torch-neuronx/programming-guide/training/pytorch-neuron-programming-guide.html) dans la documentation *AWS Neuron. *

  Pour plus d'informations, consultez la section Entraînement [ distribué avec PyTorch Neuron sur les instances Trn1 ](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/using_pytorch.html#id24) et l'`distribution`argument d'[SageMaker AI PyTorch Estimator dans ](https://sagemaker.readthedocs.io/en/stable/api/sagemaker_train.html) 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. *  
[Argument de MXNet Distributed Training ](https://sagemaker.readthedocs.io/en/stable/frameworks/mxnet/using_mxnet.html#distributed-training) et [ SageMaker AI MXNet Estimator ](https://sagemaker.readthedocs.io/en/stable/api/sagemaker_train.html) `distribution`
[PyTorch Argument de la formation distribuée ](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/using_pytorch.html#distributed-pytorch-training) et de [ SageMaker l' PyTorch estimateur d'](https://sagemaker.readthedocs.io/en/stable/api/sagemaker_train.html)IA `distribution`
[TensorFlow Argument de Distributed Training ](https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/using_tf.html#distributed-training) et [ SageMaker AI TensorFlow Estimator](https://sagemaker.readthedocs.io/en/stable/api/sagemaker_train.html). `distribution`