Utilisez les estimateurs du PyTorch framework en Python SageMaker SDK - Amazon SageMaker

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'distributionargument aux estimateurs du SageMaker framework, PyTorchou. TensorFlow Pour plus de détails, choisissez l'un des frameworks pris en charge par la bibliothèque de parallélisme de données SageMaker distribué (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 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 au distribution paramètre.

    { "pytorchddp": { "enabled": True } }
  • torch_distributed— Cette option exécute torchrun 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 au distribution 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 options mpirun 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 tierces dans 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é
  • SMDDPAllReduceet ne SMDDP AllGather sont pas compatibles entre eux à l'heure actuelle.

  • SMDDPAllReduceest activé par défaut lors de l'utilisation de smdistributed oupytorchddp, qui sont des lanceurs mpirun basés, et NCCL AllGather est utilisé.

  • SMDDPAllGatherest activé par défaut lors de l'utilisation du torch_distributed lanceur et AllReduce revient àNCCL.

  • SMDDPAllGatherpeut également être activé lors de l'utilisation des lanceurs mpirun 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="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 data parallel library: # ml.p4d.24xlargeml.p3dn.24xlarge, and ml.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")