Usa gli stimatori del PyTorch framework nell'SDK SageMaker Python - Amazon SageMaker AI

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 nell'SDK SageMaker Python

Puoi avviare un corso di formazione distribuito aggiungendo l'distributionargomento agli estimatori del framework SageMaker AI oppure. PyTorchTensorFlow Per maggiori dettagli, scegli uno dei framework supportati dalla libreria SageMaker AI 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 sull' SageMaker intelligenza artificiale. Per utilizzare questa opzione, passa il seguente dizionario al parametro distribution.

    { "pytorchddp": { "enabled": True } }
  • torch_distributed— Questa opzione esegue torchrun e imposta le variabili di ambiente necessarie per eseguire l'addestramento PyTorch distribuito sull' SageMaker intelligenza artificiale. Per utilizzare questa opzione, passa il seguente dizionario al parametro distribution.

    { "torch_distributed": { "enabled": True } }
  • smdistributed— Anche questa opzione funzionampirun, ma insieme a smddprun ciò imposta le variabili di ambiente necessarie per eseguire la formazione PyTorch distribuita sull' SageMaker intelligenza artificiale.

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

Se si sceglie di sostituire AllGather NCCL con AllGather SMDDP, è possibile utilizzare tutte le tre opzioni. Scegli un’opzione adatta al tuo caso d’uso.

Se hai scelto di sostituire AllReduce NCCL con AllReduce SMDDP, devi scegliere una delle opzioni basate su mpirun: smdistributed o pytorchddp. Puoi anche aggiungere ulteriori opzioni MPI 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 formazione 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 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")
Nota

PyTorch Lightning e le sue librerie di utilità come Lightning Bolts non sono preinstallate nell'IA. 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 di origine in cui inserire il requirements.txt file insieme allo script di formazione e all'invio di un lavoro, consulta la sezione Utilizzo di librerie di terze parti nella documentazione di Amazon AI SageMaker Python SDK.

Considerazioni sull’attivazione delle operazioni collettive SMDDP e sull’utilizzo delle opzioni idonee di avvio dell’addestramento distribuito
  • AllReduce e AllGather SMDDP non sono attualmente compatibili tra loro.

  • AllReduce SMDDP è attivato per impostazione predefinita in caso di utilizzo di smdistributed o pytorchddp, ovvero programmi di avvio basati su mpirun, e viene utilizzata l’operazione AllGather NCCL.

  • L’operazione AllGather SMDDP è attivata per impostazione predefinita in caso di utilizzo del programma di avvio torch_distributed e AllReduce ricorre a NCCL.

  • È possibile attivare AllGather SMDDP anche in caso di utilizzo dei programmi di avvio basati su mpirun con una variabile di ambiente aggiuntiva impostata come segue.

    export SMDATAPARALLEL_OPTIMIZE_SDP=true
TensorFlow
Importante

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

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