Usa gli stimatori del PyTorch framework in Python SageMaker SDK - Amazon SageMaker

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Usa gli stimatori del PyTorch framework in Python SageMaker SDK

Puoi avviare un corso di formazione distribuito aggiungendo l'distributionargomento agli estimatori del SageMaker framework, PyTorchoppure. TensorFlow Per maggiori dettagli, scegliete uno dei framework supportati dalla libreria SageMaker Distributed Data Parallelism (SMDDP) tra le seguenti selezioni.

PyTorch

Le seguenti opzioni di avvio sono disponibili per avviare la formazione distribuita. PyTorch

  • pytorchddp— Questa opzione esegue mpirun e imposta le variabili di ambiente necessarie per eseguire la formazione PyTorch distribuita su. SageMaker Per utilizzare questa opzione, passate il seguente dizionario al distribution parametro.

    { "pytorchddp": { "enabled": True } }
  • torch_distributed— Questa opzione esegue torchrun e imposta le variabili di ambiente necessarie per eseguire la formazione PyTorch distribuita su SageMaker. Per utilizzare questa opzione, passate il seguente dizionario al distribution parametro.

    { "torch_distributed": { "enabled": True } }
  • smdistributed— Anche questa opzione viene eseguitampirun, ma con smddprun essa imposta le variabili di ambiente necessarie per eseguire l'addestramento PyTorch distribuito SageMaker.

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

Se hai scelto di NCCL AllGather sostituire con SMDDPAllGather, puoi utilizzare tutte e tre le opzioni. Scegli un'opzione adatta al tuo caso d'uso.

Se hai scelto di sostituire NCCL AllReduce con SMDDPAllReduce, dovresti scegliere una delle opzioni di mpirun base: smdistributed opytorchddp. Puoi anche aggiungere MPI opzioni aggiuntive come segue.

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

Il seguente esempio di codice mostra la struttura di base di uno PyTorch stimatore con opzioni di addestramento distribuite.

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")
Nota

PyTorch Lightning e le sue librerie di utilità come Lightning Bolts non sono preinstallate in. SageMaker PyTorch DLCs Crea il seguente file requirements.txt e salvalo nella directory di origine in cui salvi lo script di addestramento.

# requirements.txt pytorch-lightning lightning-bolts

Ad esempio, la struttura di directory deve essere simile alla seguente:

├── pytorch_training_launcher_jupyter_notebook.ipynb └── sub-folder-for-your-code ├── adapted-training-script.py └── requirements.txt

Per ulteriori informazioni su come specificare la directory dei sorgenti in cui inserire il requirements.txt file insieme allo script di formazione e all'invio di un lavoro, consulta Using third party library nella documentazione di Amazon Python SageMaker . SDK

Considerazioni sull'attivazione delle operazioni SMDDP collettive e sull'utilizzo delle giuste opzioni di avvio della formazione distribuita
  • SMDDPAllReducee attualmente non SMDDP AllGather sono reciprocamente compatibili.

  • SMDDPAllReduceè attivato per impostazione predefinita quando si utilizzano smdistributed orpytorchddp, che sono lanciatori mpirun basati su o, e viene utilizzato. NCCL AllGather

  • SMDDPAllGatherè attivato per impostazione predefinita quando si utilizza il torch_distributed programma di avvio e AllReduce ritorna a. NCCL

  • SMDDPAllGatherpuò essere attivato anche quando si utilizzano i launcher mpirun basati su una variabile di ambiente aggiuntiva impostata come segue.

    export SMDATAPARALLEL_OPTIMIZE_SDP=true
TensorFlow
Importante

La SMDDP libreria ha interrotto il supporto per TensorFlow e non è più disponibile nelle TensorFlow versioni successive alla DLCs v2.11.0. Per trovare le versioni precedenti TensorFlow DLCs con la SMDDP libreria installata, vedere. TensorFlow (obsoleta)

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")