View a markdown version of this page

Verwenden Sie die PyTorch Framework-Schätzer im SageMaker Python-SDK - Amazon SageMaker KI

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden Sie die PyTorch Framework-Schätzer im SageMaker Python-SDK

Sie können ein verteiltes Training starten, indem Sie das distribution Argument zu den SageMaker KI-Framework-Schätzern hinzufügen, PyTorchoder TensorFlow. Für weitere Informationen wählen Sie aus den folgenden Optionen eines der Frameworks aus, die von der SageMaker AI Distributed Data Parallelism (SMDDP) -Bibliothek unterstützt werden.

PyTorch

Die folgenden Launcher-Optionen sind für den Start von verteilten Schulungen verfügbar. PyTorch

  • pytorchddp— Diese Option führt Umgebungsvariablen aus mpirun und richtet sie ein, die für die Durchführung PyTorch verteilter Schulungen auf SageMaker KI erforderlich sind. Um diese Option zu verwenden, übergeben Sie das folgende Wörterbuch an den Parameter distribution.

    { "pytorchddp": { "enabled": True } }
  • torch_distributed— Mit dieser Option werden Umgebungsvariablen ausgeführt torchrun und eingerichtet, die für die Durchführung PyTorch verteilter Schulungen auf SageMaker KI benötigt werden. Um diese Option zu verwenden, übergeben Sie das folgende Wörterbuch an den Parameter distribution.

    { "torch_distributed": { "enabled": True } }
  • smdistributed— Diese Option läuft ebenfallssmddprun, richtet mpirun aber damit Umgebungsvariablen ein, die für die Durchführung PyTorch verteilter Schulungen auf SageMaker KI benötigt werden.

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

Wenn Sie NCCL AllGather durch SMDDP AllGather ersetzen möchten, können Sie alle drei Optionen verwenden. Wählen Sie eine Option aus, die zu Ihrem Anwendungsfall passt.

Wenn Sie NCCL AllReduce durch SMDDP AllReduce ersetzen möchten, sollten Sie eine der mpirun-basierten Optionen wählen: smdistributed oder pytorchddp. Sie können auch zusätzliche MPI-Optionen hinzufügen.

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

Das folgende Codebeispiel zeigt die grundlegende Struktur eines PyTorch Schätzers mit verteilten Trainingsoptionen.

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

PyTorch Lightning und seine Hilfsbibliotheken wie Lightning Bolts sind in den SageMaker PyTorch AI-DLCs nicht vorinstalliert. Erstellen Sie die folgende requirements.txt Datei und speichern Sie sie in dem Quellverzeichnis, in dem Sie das Trainingsskript speichern.

# requirements.txt pytorch-lightning lightning-bolts

Die Verzeichnisstruktur sollte wie folgt aussehen:

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

Weitere Informationen zur Angabe des Quellverzeichnisses, in dem die requirements.txt Datei zusammen mit Ihrem Schulungsskript und einer Jobübermittlung platziert werden soll, finden Sie unter Verwenden von Bibliotheken von Drittanbietern in der Amazon SageMaker AI Python SDK-Dokumentation.

Überlegungen zur Aktivierung kollektiver SMDDP-Operationen und zur Verwendung der richtigen Launcher-Optionen für verteiltes Training
  • SMDDP AllReduce und SMDDP AllGather sind derzeit nicht miteinander kompatibel.

  • SMDDP AllReduce ist standardmäßig aktiviert, wenn die mpirun-basierten Launcher smdistributed oder pytorchddp und NCCL AllGather verwendet werden.

  • SMDDP AllGather ist standardmäßig aktiviert, wenn der torch_distributed-Launcher verwendet wird und AllReduce auf NCCL zurückgreift.

  • SMDDP AllGather kann auch aktiviert werden, wenn die mpirun-basierten Launcher mit einer zusätzlichen Umgebungsvariablen wie folgt verwendet werden.

    export SMDATAPARALLEL_OPTIMIZE_SDP=true
TensorFlow
Wichtig

Die SMDDP-Bibliothek hat die Unterstützung für DLCs eingestellt TensorFlow und ist ab Version 2.11.0 nicht mehr in DLCs verfügbar TensorFlow . Informationen zu früheren TensorFlow DLCs, auf denen die SMDDP-Bibliothek installiert war, finden Sie unter. TensorFlow (veraltet)

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