View a markdown version of this page

Schritt 2: Starten Sie einen Trainingsjob mithilfe des 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.

Schritt 2: Starten Sie einen Trainingsjob mithilfe des SageMaker Python-SDK

Das SageMaker Python-SDK unterstützt das verwaltete Training von Modellen mit ML-Frameworks wie TensorFlow und PyTorch. Um einen Trainingsjob mit einem dieser Frameworks zu starten, definieren Sie einen Schätzer, einen SageMaker TensorFlow Schätzer oder einen SageMaker generischen SageMaker PyTorch Estimator, um das modifizierte Trainingsskript und die Konfiguration der Modellparallelität zu verwenden.

PyTorch Verwenden der und Estimators SageMaker TensorFlow

Die Klassen TensorFlow und PyTorch Estimator enthalten den distribution Parameter, mit dem Sie Konfigurationsparameter für die Verwendung verteilter Trainingsframeworks angeben können. Die SageMaker Modellparallelbibliothek verwendet intern MPI für Hybriddaten und Modellparallelität, daher müssen Sie die MPI-Option zusammen mit der Bibliothek verwenden.

Die folgende Vorlage eines TensorFlow PyTorch OR-Schätzers zeigt, wie der distribution Parameter für die Verwendung der SageMaker Modellparallelbibliothek mit MPI konfiguriert wird.

import sagemaker from sagemaker.train import ModelTrainer from sagemaker.train.configs import SourceCode, Compute from sagemaker.train.distributed import Torchrun from sagemaker.core.helper.session_helper import get_execution_role from sagemaker.core import image_uris training_image = image_uris.retrieve( framework="tensorflow", region=region, version='2.6.3', py_version='py38', instance_type='ml.p3.16xlarge', image_scope="training" ) smd_mp_model_trainer = ModelTrainer( source_code=SourceCode(entry_script="your_training_script.py", source_dir="location_to_your_script"), role=get_execution_role(), compute=Compute(instance_count=1, instance_type='ml.p3.16xlarge'), training_image=training_image, distributed=Torchrun(), base_job_name="SMD-MP-demo", ) smd_mp_model_trainer.train('s3://my_bucket/my_training_data/')

Um die Bibliothek zu aktivieren, müssen Sie Konfigurationswörterbücher über das distribution Argument der "smdistributed" Schätzkonstruktoren an die "mpi" Schlüssel und übergeben. SageMaker

Konfigurationsparameter für Modellparallelität SageMaker
  • Übergeben Sie für den "smdistributed" Schlüssel ein Wörterbuch mit dem "modelparallel" Schlüssel und den folgenden inneren Wörterbüchern.

    Anmerkung

    Die Verwendung von "modelparallel" und "dataparallel" in einem Trainingsjob wird nicht unterstützt.

    • "enabled" – Erforderlich. Um die Modellparallelität zu aktivieren, legen Sie "enabled": True fest.

    • "parameters" – Erforderlich. Geben Sie eine Reihe von Parametern für die SageMaker Modellparallelität an.

  • Übergeben Sie für den "mpi" Schlüssel ein Wörterbuch, das Folgendes enthält:

    • "enabled" – Erforderlich. True ist so eingestellt, dass der verteilte Trainingsjob mit MPI gestartet wird.

    • "processes_per_host" – Erforderlich. Geben Sie die Anzahl der Prozesse an, die MPI auf jedem Host starten soll. In SageMaker AI ist ein Host eine einzelne Amazon EC2 ML-Instance. Das SageMaker Python-SDK sorgt für eine Eins-zu-Eins-Zuordnung zwischen Prozessen und GPUs über Modell- und Datenparallelität hinweg. Das bedeutet, dass SageMaker KI jeden Prozess auf einer einzelnen, separaten GPU plant und keine GPU mehr als einen Prozess enthält. Wenn Sie es verwenden PyTorch, müssen Sie jeden Prozess auf sein eigenes Gerät beschränkentorch.cuda.set_device(smp.local_rank()). Weitere Informationen hierzu finden Sie unter Automatisiertes Teilen mit PyTorch.

      Wichtig

      process_per_hostdarf nicht größer als die Anzahl der GPUs pro Instance sein und entspricht in der Regel der Anzahl der GPUs pro Instance.

    • "custom_mpi_options" (optional) – Verwenden Sie diesen Schlüssel, um alle benutzerdefinierten MPI-Optionen zu übergeben, die Sie möglicherweise benötigen. Wenn Sie dem Schlüssel keine benutzerdefinierten MPI-Optionen übergeben, ist die MPI-Option standardmäßig auf das folgende Flag gesetzt.

      --mca btl_vader_single_copy_mechanism none
      Anmerkung

      Sie müssen dieses Standardflag nicht explizit für den Schlüssel angeben. Wenn Sie es explizit angeben, schlägt Ihr paralleles Trainingsjob für verteilte Modelle möglicherweise mit dem folgenden Fehler fehl:

      The following MCA parameter has been listed multiple times on the command line: MCA param: btl_vader_single_copy_mechanism MCA parameters can only be listed once on a command line to ensure there is no ambiguity as to its value. Please correct the situation and try again.
      Tipp

      Wenn Sie einen Trainingsjob mit einem EFA-enabled Instanztyp wie ml.p4d.24xlarge und starten, verwenden Sie das folgende Kennzeichenml.p3dn.24xlarge, um die beste Leistung zu erzielen:

      -x FI_EFA_USE_DEVICE_RDMA=1 -x FI_PROVIDER=efa -x RDMAV_FORK_SAFE=1

Um den Trainingsjob mithilfe des Schätzers und Ihres parallel konfigurierten SageMaker Modell-Trainingsskripts zu starten, führen Sie die estimator.fit() Funktion aus.

Verwenden Sie die folgenden Ressourcen, um mehr über die Verwendung der Modellparallelitätsfunktionen im Python-SDK zu erfahren: SageMaker

Erweitern Sie einen Pre-built Docker-Container, der die SageMaker Distributed Model Parallel Library enthält

Um einen vorgefertigten Container zu erweitern und die Modellparallelismus-Bibliothek zu verwenden SageMaker, müssen Sie eines der verfügbaren AWS Deep Learning Containers (DLC) -Images für oder verwenden. PyTorch TensorFlow Die SageMaker Modellparallelismus-Bibliothek ist in den DLC-Images TensorFlow (2.3.0 und höher) und (1.6.0 und höher) mit CUDA PyTorch () enthalten. cuxyz Eine vollständige Liste der DLC-Images finden Sie unter Verfügbare Deep-Learning-Container-Images im Deep-Learning-Container-Repository. AWS GitHub

Tipp

Wir empfehlen, das Image zu verwenden, das die neueste Version von TensorFlow oder den PyTorch Zugriff auf die aktuelle Version der SageMaker Modellparallelismus-Bibliothek enthält.

Ihr Dockerfile sollte beispielsweise eine FROM Anweisung wie die folgende enthalten:

# Use the SageMaker DLC image URI for TensorFlow or PyTorch FROM aws-dlc-account-id.dkr.ecr.aws-region.amazonaws.com/framework-training:{framework-version-tag} # Add your dependencies here RUN ... ENV PATH="/opt/ml/code:${PATH}" # this environment variable is used by the SageMaker AI container to determine our user code directory. ENV SAGEMAKER_SUBMIT_DIRECTORY /opt/ml/code

Wenn Sie einen PyTorch TensorFlow OR-Schätzer definieren, müssen Sie außerdem Folgendes entry_point für Ihr Trainingsskript angeben. Dies sollte derselbe Pfad sein, der in Ihrem Dockerfile mit ENV SAGEMAKER_SUBMIT_DIRECTORY angegeben ist.

Tipp

Sie müssen diesen Docker-Container in die Amazon Elastic Container Registry (Amazon ECR) übertragen und den Image-URI (image_uri) verwenden, um einen SageMaker Schätzer für das Training zu definieren. Weitere Informationen finden Sie unter Einen Pre-built Container erweitern.

Nachdem Sie den Docker-Container gehostet und die Image-URI des Containers abgerufen haben, erstellen Sie wie folgt ein SageMaker PyTorch Schätzobjekt. In diesem Beispiel wird davon ausgegangen, dass Sie bereits smp_options und mpi_options definiert haben.

smd_mp_estimator = Estimator( entry_point="your_training_script.py", role=sagemaker.get_execution_role(), instance_type='ml.p3.16xlarge', sagemaker_session=sagemaker_session, image_uri='your_aws_account_id.dkr.ecr.region.amazonaws.com/name:tag' instance_count=1, distribution={ "smdistributed": smp_options, "mpi": mpi_options }, base_job_name="SMD-MP-demo", ) smd_mp_estimator.fit('s3://my_bucket/my_training_data/')

Erstellen Sie Ihren eigenen Docker-Container mit der SageMaker Distributed Model Parallel Library

Um Ihren eigenen Docker-Container für das Training zu erstellen und die SageMaker Model-Parallelbibliothek zu verwenden, müssen Sie die richtigen Abhängigkeiten und die Binärdateien der SageMaker verteilten parallelen Bibliotheken in Ihr Dockerfile aufnehmen. Dieser Abschnitt enthält den Mindestsatz an Codeblöcken, die Sie zur ordnungsgemäßen Vorbereitung einer SageMaker Trainingsumgebung und der parallelen Modellbibliothek in Ihrem eigenen Docker-Container benötigen.

Anmerkung

Diese benutzerdefinierte Docker-Option mit der parallelen SageMaker Modellbibliothek als Binärdatei ist nur für verfügbar. PyTorch

Um ein Dockerfile mit dem SageMaker Training-Toolkit und der parallelen Modellbibliothek zu erstellen
  1. Beginnen Sie mit einem der NVIDIA CUDA-Basisimages.

    FROM <cuda-cudnn-base-image>
    Tipp

    Die offiziellen AWS Deep Learning Container (DLC) -Images werden aus den NVIDIA CUDA-Basisimages erstellt. Wir empfehlen Ihnen, in den offiziellen Dockerfiles von AWS Deep Learning Container nachzuschauen, welche Versionen der Bibliotheken Sie installieren müssen und wie Sie sie konfigurieren müssen. PyTorch Die offiziellen Dockerfiles sind vollständig, auf Benchmarks getestet und werden von den SageMaker Serviceteams von Deep Learning Container verwaltet. Wählen Sie im bereitgestellten Link die PyTorch Version aus, die Sie verwenden, wählen Sie den Ordner CUDA (cuxyz) und wählen Sie das Dockerfile, das mit oder endet. .gpu .sagemaker.gpu

  2. Um eine verteilte Trainingsumgebung einzurichten, müssen Sie Software für Kommunikations- und Netzwerkgeräte wie Elastic Fabric Adapter (EFA), NVIDIA Collective Communications Library (NCCL) und Open MPI installieren. Abhängig von der PyTorch ausgewählten CUDA-Version müssen Sie kompatible Versionen der Bibliotheken installieren.

    Wichtig

    Da die parallele SageMaker Modellbibliothek in den nachfolgenden Schritten die parallele SageMaker Datenbibliothek benötigt, empfehlen wir Ihnen dringend, die Anweisungen unter Erstellen Sie Ihren eigenen Docker-Container mit der SageMaker AI-Bibliothek für verteilte parallele Daten zu befolgen, um eine SageMaker Trainingsumgebung für verteiltes Training ordnungsgemäß einzurichten.

    Weitere Informationen zur Einrichtung von EFA mit NCCL und Open MPI finden Sie unter Erste Schritte mit EFA und MPI und Erste Schritte mit EFA und NCCL.

  3. Fügen Sie die folgenden Argumente hinzu, um die URLs der SageMaker verteilten Trainingspakete für anzugeben PyTorch. Die parallele SageMaker Modellbibliothek erfordert, dass die parallele SageMaker Datenbibliothek den knotenübergreifenden Remote Direct Memory Access (RDMA) verwendet.

    ARG SMD_MODEL_PARALLEL_URL=https://sagemaker-distributed-model-parallel.s3.us-west-2.amazonaws.com/pytorch-1.10.0/build-artifacts/2022-02-21-19-26/smdistributed_modelparallel-1.7.0-cp38-cp38-linux_x86_64.whl ARG SMDATAPARALLEL_BINARY=https://smdataparallel.s3.amazonaws.com/binary/pytorch/1.10.2/cu113/2022-02-18/smdistributed_dataparallel-1.4.0-cp38-cp38-linux_x86_64.whl
  4. Installieren Sie Abhängigkeiten, die die parallele SageMaker Modellbibliothek benötigt.

    1. Installieren Sie die METIS-Bibliothek.

      ARG METIS=metis-5.1.0 RUN rm /etc/apt/sources.list.d/* \ && wget -nv http://glaros.dtc.umn.edu/gkhome/fetch/sw/metis/${METIS}.tar.gz \ && gunzip -f ${METIS}.tar.gz \ && tar -xvf ${METIS}.tar \ && cd ${METIS} \ && apt-get update \ && make config shared=1 \ && make install \ && cd .. \ && rm -rf ${METIS}.tar* \ && rm -rf ${METIS} \ && rm -rf /var/lib/apt/lists/* \ && apt-get clean
    2. Installieren Sie die RAPIDS Memory Manager-Bibliothek. Dies erfordert CMake 3.14 oder höher.

      ARG RMM_VERSION=0.15.0 RUN wget -nv https://github.com/rapidsai/rmm/archive/v${RMM_VERSION}.tar.gz \ && tar -xvf v${RMM_VERSION}.tar.gz \ && cd rmm-${RMM_VERSION} \ && INSTALL_PREFIX=/usr/local ./build.sh librmm \ && cd .. \ && rm -rf v${RMM_VERSION}.tar* \ && rm -rf rmm-${RMM_VERSION}
  5. Installieren Sie die parallele SageMaker Modellbibliothek.

    RUN pip install --no-cache-dir -U ${SMD_MODEL_PARALLEL_URL}
  6. Installieren Sie die parallele SageMaker Datenbibliothek.

    RUN SMDATAPARALLEL_PT=1 pip install --no-cache-dir ${SMDATAPARALLEL_BINARY}
  7. Installieren Sie das Sagemaker-Training-Toolkit. Das Toolkit enthält die allgemeinen Funktionen, die erforderlich sind, um einen Container zu erstellen, der mit der SageMaker Trainingsplattform und dem SageMaker Python-SDK kompatibel ist.

    RUN pip install sagemaker-training
  8. Wenn Sie mit der Erstellung des Dockerfiles fertig sind, erfahren Sie unter Anpassen Ihres eigenen Trainingscontainers, wie Sie den Docker-Container erstellen und in Amazon ECR hosten.

Tipp

Weitere allgemeine Informationen zum Erstellen eines benutzerdefinierten Dockerfiles für das SageMaker KI-Training finden Sie unter Verwenden Sie Ihre eigenen Trainingsalgorithmen.