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 mit dem 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
Themen
PyTorch Verwenden Sie die und Estimators SageMaker TensorFlow
Die Klassen TensorFlow und PyTorch Estimator enthalten den distribution
Parameter, mit dem Sie Konfigurationsparameter für die Verwendung verteilter Trainings-Frameworks angeben können. Die SageMaker Modellparallelbibliothek verwendet intern MPI für Hybriddaten und Modellparallelität, daher müssen Sie die MPI-Option 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.
Um die Bibliothek zu aktivieren, müssen Sie über das distribution
Argument der Estimator-Konstruktoren Konfigurationswörterbücher an die "mpi"
Schlüssel "smdistributed"
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.-
Eine vollständige Liste der allgemeinen Parameter finden Sie unter Parameter für
smdistributed
in der SageMaker Python SDK-Dokumentation. Weitere Informationen finden Sie unter TensorFlow-spezifische Parameter
. TensorFlow Weitere Informationen finden Sie unter PyTorch-spezifische Parameter
. PyTorch -
"pipeline_parallel_degree"
(oder"partitions"
insmdistributed-modelparallel<v1.6.0
) – Erforderlich. Unter den Parametern fürsmdistributed
ist dieser Parameter erforderlich, um anzugeben, in wie viele Modellpartitionen Sie aufteilen möchten. Wichtig
Der Parametername wurde grundlegend geändert. Der
"pipeline_parallel_degree"
Parameter ersetzt den"partitions"
seitsmdistributed-modelparallel
Version 1.6.0. Weitere Informationen finden Sie unter Allgemeine Parameterfür die Konfiguration von SageMaker Modellparallelität und Versionshinweise zu SageMaker Distributed Model Parallel in der SageMaker Python SDK-Dokumentation.
-
-
-
Ü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. SageMakerIn ist ein Host eine einzelne Amazon EC2 ML-Instance. Das SageMaker Python-SDK verwaltet eine one-to-one Zuordnung zwischen Prozessen und GPUs über Modell- und Datenparallelität hinweg. Das bedeutet, dass jeder SageMaker Prozess auf einer einzelnen, separaten GPU geplant wird und keine GPU mehr als einen Prozess enthält. Wenn Sie verwenden PyTorch, müssen Sie jeden Prozess über 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_host
darf 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-fähigen Instance-Typ wie
ml.p4d.24xlarge
undml.p3dn.24xlarge
starten, verwenden Sie für optimale Leistung das folgende Kennzeichen:-x FI_EFA_USE_DEVICE_RDMA=1 -x FI_PROVIDER=efa -x RDMAV_FORK_SAFE=1
-
Um den Trainingsjob mit dem Schätzer und Ihrem SageMaker Modell parallel konfigurierten Trainingsskript zu starten, führen Sie die estimator.fit()
Funktion aus.
Verwenden Sie die folgenden Ressourcen, um mehr über die Verwendung der Modellparallelitätsfunktionen im SageMaker Python-SDK zu erfahren:
-
Wir empfehlen Ihnen, eine SageMaker Notebook-Instanz zu verwenden, wenn Sie neue Benutzer sind. Ein Beispiel dafür, wie Sie einen Schulungsjob mithilfe einer SageMaker Notebook-Instanz starten können, finden Sie unterBeispiele für die SageMaker Amazon-Modellparallelismusbibliothek v2.
-
Sie können auch einen verteilten Trainingsauftrag von Ihrem Rechner aus mit AWS CLIübermitteln. Informationen zur Einrichtung AWS CLI auf Ihrem Computer finden Sie unter AWS Zugangsdaten einrichten und Region für die Entwicklung.
Erweitern Sie einen vorgefertigten Docker-Container, der die SageMaker Distributed Model Parallel Library enthält
Um einen vorgefertigten Container zu erweitern und die Modellparallelitätsbibliothek zu verwenden SageMaker, müssen Sie eines der verfügbaren AWS Deep Learning Containers (DLC) -Images für oder verwenden. PyTorch TensorFlow Die SageMaker Modellparallelitätsbibliothek 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 Containers Learning-Container-Images
Tipp
Wir empfehlen, das Image zu verwenden, das die neueste Version der Modellparallelismus-Bibliothek enthält PyTorch , TensorFlow oder um auf die meisten up-to-date Versionen der SageMaker Modellparallelismus-Bibliothek zuzugreifen.
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 container to determine our user code directory. ENV SAGEMAKER_SUBMIT_DIRECTORY /opt/ml/code
Wenn Sie einen PyTorch TensorFlow Oder-Schätzer definieren, müssen Sie außerdem angeben, dass der entry_point
für Ihr Trainingsskript gilt. Dies sollte derselbe Pfad sein, der in Ihrem Dockerfile mit ENV SAGEMAKER_SUBMIT_DIRECTORY
angegeben ist.
Tipp
Sie müssen diesen Docker-Container an Amazon Elastic Container Registry (Amazon ECR) übertragen und mithilfe der Image-URI (image_uri
) einen SageMaker Schätzer für das Training definieren. Weitere Informationen finden Sie unter Erweitern eines vorgefertigter Containers.
Nachdem Sie das Hosten des Docker-Containers und das Abrufen der Image-URI des Containers abgeschlossen haben, erstellen Sie wie folgt ein SageMaker PyTorch
Estimator-Objekt. 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 Parallel Library zu verwenden, müssen Sie die richtigen Abhängigkeiten und die Binärdateien der SageMaker verteilten parallel Bibliotheken in Ihr Dockerfile aufnehmen. Dieser Abschnitt enthält die Mindestmenge an Codeblöcken, die Sie hinzufügen müssen, um eine SageMaker Trainingsumgebung und die Modellparallelbibliothek in Ihrem eigenen Docker-Container ordnungsgemäß vorzubereiten.
Anmerkung
Diese benutzerdefinierte Docker-Option mit der SageMaker Modellparallelbibliothek als Binärdatei ist nur für PyTorch verfügbar.
Um ein Dockerfile mit dem SageMaker Training Toolkit und der Model Parallel Library zu erstellen
-
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 PyTorch , welche Versionen der Bibliotheken Sie installieren müssen und wie sie konfiguriert werden. Die offiziellen Dockerfiles sind vollständig, wurden auf Benchmarks getestet und werden von den Serviceteams SageMaker und Deep Learning Container verwaltet. Wählen Sie unter dem bereitgestellten Link die PyTorch Version aus, die Sie verwenden, wählen Sie den Ordner CUDA ( cuxyz
) und wählen Sie die Dockerfile, die mit oder endet..gpu
.sagemaker.gpu
-
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 ausgewählten Version PyTorch und der CUDA-Version müssen Sie kompatible Versionen der Bibliotheken installieren. Wichtig
Da die SageMaker Modellparallelbibliothek die SageMaker Datenparallelbibliothek in den nachfolgenden Schritten benötigt, empfehlen wir dringend, dass Sie die Anweisungen unter befolgen, Erstellen Sie Ihren eigenen Docker-Container mit der SageMaker verteilten Datenparallelbibliothek 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.
-
Fügen Sie die folgenden Argumente hinzu, um die URLs der SageMaker verteilten Trainingspakete für anzugeben PyTorch. Für die SageMaker Modellparallelbibliothek muss die SageMaker Datenparallelbibliothek den knotenübergreifenden Remote Direct Memory Access (RDMA) verwenden.
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
-
Installieren Sie Abhängigkeiten, die für die SageMaker Model Parallel Library erforderlich sind.
-
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 -
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}
-
-
Installieren Sie die SageMaker Modellparallelbibliothek.
RUN pip install --no-cache-dir -U ${SMD_MODEL_PARALLEL_URL}
-
Installieren Sie die SageMaker Data Parallel Library.
RUN SMDATAPARALLEL_PT=1 pip install --no-cache-dir ${SMDATAPARALLEL_BINARY}
-
Installieren Sie das Sagemaker-Training-Toolkit
. Das Toolkit enthält die allgemeinen Funktionen, die zur Erstellung eines Containers erforderlich sind, der mit der SageMaker Trainingsplattform und dem SageMaker Python-SDK kompatibel ist. RUN pip install sagemaker-training
-
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
Allgemeinere Informationen zum Erstellen eines benutzerdefinierten Dockerfiles für das Training finden Sie unter Verwenden Sie Ihre eigenen Trainingsalgorhythmen. SageMaker