Utilisation des estimateurs du cadre PyTorch dans le kit SageMaker Python SDK - 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.

Utilisation des estimateurs du cadre PyTorch dans le kit SageMaker Python SDK

Vous pouvez lancer un entraînement distribué en ajoutant l’argument distribution aux estimateurs du cadre SageMaker AI, PyTorch ou TensorFlow. Pour plus de détails, choisissez l’un des cadres pris en charge par la bibliothèque SageMaker AI de parallélisme des données distribués (SMDDP) parmi les sélections suivantes.

PyTorch

Les options de lanceurs suivantes sont disponibles pour lancer l’entraînement distribué PyTorch.

  • pytorchddp : cette option exécute mpirun et définit les variables d’environnement nécessaires à l’exécution de l’entraînement distribué PyTorch sur SageMaker AI. Pour utiliser cette option, transmettez le dictionnaire suivant au paramètre distribution.

    { "pytorchddp": { "enabled": True } }
  • torch_distributed : cette option exécute torchrun et définit les variables d’environnement nécessaires à l’exécution de l’entraînement distribué PyTorch sur SageMaker AI. Pour utiliser cette option, transmettez le dictionnaire suivant au paramètre distribution.

    { "torch_distributed": { "enabled": True } }
  • smdistributed : cette option exécute également mpirun, mais avec smddprun qui définit les variables d’environnement nécessaires à l’exécution de l’entraînement distribué PyTorch sur SageMaker AI.

    { "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 estimateur PyTorch avec des options d’entraînement distribué.

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 comme Lightning Bolts ne sont pas préinstallés dans les conteneurs de deep learning (DLC) SageMaker PyTorch. 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 où placer le fichier requirements.txt avec votre script d’entraînement et une soumission de tâche, consultez Utilisation des bibliothèques tierces dans la documentation du kit Amazon SageMaker AI Python SDK.

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 ne prend plus en charge TensorFlow et n’est plus disponible dans les DLC pour TensorFlow ultérieurs à la version 2.11.0. Pour rechercher les DLC TensorFlow précédents sur lesquels la bibliothèque SMDDP est installée, consultez TensorFlow (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 AI data parallel library: # ml.p4d.24xlargeml.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")