

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.

# Utiliser les estimateurs du PyTorch framework dans le SDK Python SageMaker
<a name="data-parallel-framework-estimator"></a>

Vous pouvez lancer une formation distribuée en ajoutant l'`distribution`argument aux estimateurs du framework d' SageMaker IA, [https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/sagemaker.pytorch.html#sagemaker.pytorch.estimator.PyTorch](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/sagemaker.pytorch.html#sagemaker.pytorch.estimator.PyTorch)ou. [https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/sagemaker.tensorflow.html#tensorflow-estimator](https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/sagemaker.tensorflow.html#tensorflow-estimator) Pour plus de détails, choisissez l'un des frameworks pris en charge par la bibliothèque SageMaker AI Distributed Data Parallelism (SMDDP) parmi les sélections suivantes.

------
#### [ PyTorch ]

Les options de lancement suivantes sont disponibles pour lancer une formation PyTorch distribuée.
+ `pytorchddp`— Cette option exécute `mpirun` et configure les variables d'environnement nécessaires à l'exécution de formations PyTorch distribuées sur l' SageMaker IA. Pour utiliser cette option, transmettez le dictionnaire suivant au paramètre `distribution`.

  ```
  { "pytorchddp": { "enabled": True } }
  ```
+ `torch_distributed`— Cette option exécute `torchrun` et configure les variables d'environnement nécessaires à l'exécution de formations PyTorch distribuées sur l' SageMaker IA. Pour utiliser cette option, transmettez le dictionnaire suivant au paramètre `distribution`.

  ```
  { "torch_distributed": { "enabled": True } }
  ```
+ `smdistributed`— Cette option fonctionne également`mpirun`, mais elle permet de `smddprun` configurer les variables d'environnement nécessaires à l'exécution d'une formation PyTorch distribuée sur l' SageMaker IA.

  ```
  { "smdistributed": { "dataparallel": { "enabled": True } } }
  ```

Si vous avez choisi de remplacer la fonction `AllGather` NCCL par la fonction `AllGather` SMDDP, vous pouvez utiliser les trois options. Choisissez une option qui correspond à votre cas d’utilisation.

Si vous avez choisi de remplacer la fonction `AllReduce` NCCL par la fonction `AllReduce` SMDDP, vous devez choisir l’une des options basées sur `mpirun` suivantes : `smdistributed` ou `pytorchddp`. Vous pouvez également ajouter d’autres options MPI comme suit.

```
{ 
    "pytorchddp": {
        "enabled": True, 
        "custom_mpi_options": "-verbose -x NCCL_DEBUG=VERSION"
    }
}
```

```
{ 
    "smdistributed": { 
        "dataparallel": {
            "enabled": True, 
            "custom_mpi_options": "-verbose -x NCCL_DEBUG=VERSION"
        }
    }
}
```

L'exemple de code suivant montre la structure de base d'un PyTorch estimateur avec des options d'entraînement distribuées.

```
from sagemaker.pytorch import PyTorch

pt_estimator = PyTorch(
    base_job_name="training_job_name_prefix",
    source_dir="subdirectory-to-your-code",
    entry_point="adapted-training-script.py",
    role="SageMakerRole",
    py_version="py310",
    framework_version="2.0.1",

    # For running a multi-node distributed training job, specify a value greater than 1
    # Example: 2,3,4,..8
    instance_count=2,

    # Instance types supported by the SageMaker AI data parallel library: 
    # ml.p4d.24xlarge, ml.p4de.24xlarge
    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
)

pt_estimator.fit("s3://bucket/path/to/training/data")
```

**Note**  
PyTorch Lightning et ses bibliothèques d'utilitaires, telles que Lightning Bolts, ne sont pas préinstallés dans l' SageMaker IA PyTorch DLCs. Créez le fichier `requirements.txt` suivant et enregistrez-le dans le répertoire source où vous enregistrez le script d’entraînement.  

```
# requirements.txt
pytorch-lightning
lightning-bolts
```
Par exemple, le répertoire de type arborescence doit être similaire à ce qui suit.  

```
├── pytorch_training_launcher_jupyter_notebook.ipynb
└── sub-folder-for-your-code
    ├──  adapted-training-script.py
    └──  requirements.txt
```
Pour plus d'informations sur la spécification du répertoire source dans lequel placer le `requirements.txt` fichier avec votre script d'entraînement et la soumission d'une tâche, consultez la section [Utilisation de bibliothèques tierces](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/using_pytorch.html#id12) dans la *documentation du SDK Amazon SageMaker AI Python*.

**Considérations relatives à l’activation des opérations collectives SMDDP et à l’utilisation des bonnes options de lanceur d’entraînement distribué**
+ Les fonctions `AllReduce` et `AllGather` SMDDP ne sont actuellement pas compatibles entre elles.
+ La fonction `AllReduce` SMDDP est activée par défaut lors de l’utilisation de `smdistributed` ou de `pytorchddp`, qui sont des lanceurs basés sur `mpirun`, et la fonction `AllGather` NCCL est utilisée.
+ La fonction `AllGather` SMDDP est activée par défaut lors de l’utilisation du lanceur `torch_distributed` et `AllReduce` revient vers NCCL.
+ La fonction `AllGather` SMDDP peut également être activée lors de l’utilisation des lanceurs basés sur `mpirun` avec une variable d’environnement supplémentaire définie comme suit.

  ```
  export SMDATAPARALLEL_OPTIMIZE_SDP=true
  ```

------
#### [ TensorFlow ]

**Important**  
La bibliothèque SMDDP a cessé de prendre en charge TensorFlow et n'est plus disponible DLCs depuis la TensorFlow version 2.11.0. Pour trouver la version précédente TensorFlow DLCs avec la bibliothèque SMDDP installée, voir. [TensorFlow (obsolète)](distributed-data-parallel-support.md#distributed-data-parallel-supported-frameworks-tensorflow)

```
from sagemaker.tensorflow import TensorFlow

tf_estimator = TensorFlow(
    base_job_name = "training_job_name_prefix",
    entry_point="adapted-training-script.py",
    role="SageMakerRole",
    framework_version="2.11.0",
    py_version="py38",

    # For running a multi-node distributed training job, specify a value greater than 1
    # Example: 2,3,4,..8
    instance_count=2,

    # Instance types supported by the SageMaker AI data parallel library: 
    # ml.p4d.24xlarge, ml.p3dn.24xlarge, and ml.p3.16xlarge
    instance_type="ml.p3.16xlarge",

    # Training using the SageMaker AI data parallel distributed training strategy
    distribution={ "smdistributed": { "dataparallel": { "enabled": True } } }
)

tf_estimator.fit("s3://bucket/path/to/training/data")
```

------