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
Themen
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": Truefest. -
"parameters"– Erforderlich. Geben Sie eine Reihe von Parametern für die SageMaker Modellparallelität an.-
Eine vollständige Liste gängiger Parameter finden Sie unter Parameters for
smdistributedin der SageMaker Python-SDK-Dokumentation. Weitere Informationen finden Sie unter TensorFlow-specific Parameter
. TensorFlow Informationen finden Sie unter PyTorch-specific Parameter
. PyTorch -
"pipeline_parallel_degree"(oder"partitions"insmdistributed-modelparallel<v1.6.0) – Erforderlich. Unter den Parametern fürsmdistributedist 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-modelparallelVersion 1.6.0. Weitere Informationen finden Sie unter Allgemeine Parameterfür die Konfiguration der 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.Trueist 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 noneAnmerkung
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.24xlargeund 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
-
Wir empfehlen Ihnen, eine SageMaker Notebook-Instanz zu verwenden, wenn Sie neue Benutzer sind. Ein Beispiel dafür, wie Sie einen Trainingsjob mithilfe einer SageMaker Notebook-Instance starten können, finden Sie unterBeispiele für die Amazon SageMaker AI-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 Einrichten Ihrer AWS Anmeldeinformationen und Region für die Entwicklung.
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
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 FROMaws-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
-
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 -
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.
-
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 -
Installieren Sie Abhängigkeiten, die die parallele SageMaker Modellbibliothek benötigt.
-
Installieren Sie die METIS
-Bibliothek. ARG METIS=metis-5.1.0RUN 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.0RUN 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 parallele SageMaker Modellbibliothek.
RUN pip install --no-cache-dir -U ${SMD_MODEL_PARALLEL_URL} -
Installieren Sie die parallele SageMaker Datenbibliothek.
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 erforderlich sind, um einen Container zu erstellen, 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
Weitere allgemeine Informationen zum Erstellen eines benutzerdefinierten Dockerfiles für das SageMaker KI-Training finden Sie unter Verwenden Sie Ihre eigenen Trainingsalgorithmen.