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.
Utilisez les estimateurs du PyTorch framework en Python SageMaker SDK
Vous pouvez lancer une formation distribuée en ajoutant l'distribution
argument aux estimateurs du SageMaker framework, PyTorch
TensorFlow
- PyTorch
-
Les options de lancement suivantes sont disponibles pour lancer une formation PyTorch distribuée.
-
pytorchddp
— Cette option exécutempirun
et définit les variables d'environnement nécessaires à l'exécution de la formation PyTorch distribuée sur SageMaker. Pour utiliser cette option, transmettez le dictionnaire suivant audistribution
paramètre.{ "pytorchddp": { "enabled": True } }
-
torch_distributed
— Cette option exécutetorchrun
et définit les variables d'environnement nécessaires à l'exécution de la formation PyTorch distribuée sur SageMaker. Pour utiliser cette option, transmettez le dictionnaire suivant audistribution
paramètre.{ "torch_distributed": { "enabled": True } }
-
smdistributed
— Cette option s'exécute égalementmpirun
, mais elle permet de configurer les variables d'environnement nécessaires à l'exécution de la formation PyTorch distribuée SageMaker.smddprun
{ "smdistributed": { "dataparallel": { "enabled": True } } }
Si vous avez choisi de NCCL
AllGather
remplacer par SMDDPAllGather
, vous pouvez utiliser les trois options. Choisissez une option adaptée à votre cas d'utilisation.Si vous avez choisi de NCCL
AllReduce
remplacer par SMDDPAllReduce
, vous devez choisir l'une des optionsmpirun
basées sur :smdistributed
oupytorchddp
. Vous pouvez également ajouter des MPI options supplémentaires 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 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 le SageMaker 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 tiercesdans la SDKdocumentation Amazon SageMaker Python. Considérations relatives à l'activation des opérations SMDDP collectives et à l'utilisation des bonnes options de lancement d'entraînement distribué
-
SMDDP
AllReduce
et ne SMDDPAllGather
sont pas compatibles entre eux à l'heure actuelle. -
SMDDP
AllReduce
est activé par défaut lors de l'utilisation desmdistributed
oupytorchddp
, qui sont des lanceursmpirun
basés, et NCCLAllGather
est utilisé. -
SMDDP
AllGather
est activé par défaut lors de l'utilisation dutorch_distributed
lanceur etAllReduce
revient àNCCL. -
SMDDP
AllGather
peut également être activé lors de l'utilisation des lanceursmpirun
basés avec une variable d'environnement supplémentaire définie comme suit.export SMDATAPARALLEL_OPTIMIZE_SDP=true
-
- TensorFlow
-
Important
La SMDDP bibliothèque 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 SMDDP bibliothèque installée, voirTensorFlow (obsolète).
from sagemaker.tensorflow import TensorFlow tf_estimator = TensorFlow( base_job_name = "
training_job_name_prefix
", entry_point="
", role="adapted-training-script.py
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 data parallel library: #ml.p4d.24xlarge
,ml.p3dn.24xlarge
, andml.p3.16xlarge
instance_type="ml.p3.16xlarge
", # Training using the SageMaker data parallel distributed training strategy distribution={ "smdistributed": { "dataparallel": { "enabled": True } } } ) tf_estimator.fit("s3://bucket/path/to/training/data
")