View a markdown version of this page

Utiliser les estimateurs du PyTorch framework dans le SDK Python SageMaker - 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.

Utiliser les estimateurs du PyTorch framework dans le SDK Python SageMaker

Vous pouvez lancer une formation distribuée en ajoutant l'distributionargument à l'estimateur SageMaker AI PyTorch Framework. La bibliothèque SageMaker AI Distributed Data Parallelism (SMDDP) prend en charge la formation distribuée. PyTorch

Note

Le TensorFlow support de SMDDP a cessé après la version 2.11.0. Pour une formation distribuée avec TensorFlow, utilisez d'autres stratégies de distribution.

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 s'exécute égalementmpirun, mais elle configure smddprun les variables d'environnement nécessaires à l'exécution d'un entraînement PyTorch distribué 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 ModelTrainer avec des options de formation distribuées.

from sagemaker.train import ModelTrainer from sagemaker.train.configs import SourceCode, Compute, InputData from sagemaker.core import image_uris # Retrieve the training image for the desired PyTorch version training_image = image_uris.retrieve( framework="pytorch", region="us-west-2", version="2.0.1", py_version="py310", instance_type="ml.p4d.24xlarge", image_scope="training" ) source_code = SourceCode( source_dir="subdirectory-to-your-code", entry_script="adapted-training-script.py" ) compute = Compute( # 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" ) pt_model_trainer = ModelTrainer( training_image=training_image, base_job_name="training_job_name_prefix", source_code=source_code, role="SageMakerRole", compute=compute, # 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_model_trainer.train(input_data_config=[ InputData(channel_name="training", data_source="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 les PyTorch DLC SageMaker AI. 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 de formation et la soumission d'une tâche, consultez la section Utilisation de bibliothèques tierces 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