Beginnen Sie mit verteilten Schulungen in Amazon SageMaker - Amazon SageMaker

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.

Beginnen Sie mit verteilten Schulungen in Amazon SageMaker

Auf der folgenden Seite finden Sie Informationen zu den Schritten, die für den Einstieg in verteilte Schulungen bei Amazon erforderlich sind SageMaker. Wenn Sie bereits mit verteilten Trainings vertraut sind, wählen Sie zunächst eine der folgenden Optionen, die Ihrer bevorzugten Strategie oder Ihrem bevorzugten Framework entspricht. Weitere Informationen zu verteilten Trainings im Allgemeinen finden Sie unter Verteilte Trainingskonzepte.

Die SageMaker verteilten Schulungsbibliotheken sind für die SageMaker Schulungsumgebung optimiert, helfen Ihnen dabei, Ihre verteilten Schulungsaufgaben an diese SageMaker anzupassen und verbessern die Geschwindigkeit und den Durchsatz der Schulungen. Die Bibliotheken bieten sowohl datenparallele als auch modellparallele Trainingsstrategien. Sie kombinieren Software- und Hardwaretechnologien, um die Kommunikation zwischen GPU und zwischen den Knoten zu verbessern, und erweitern SageMaker die Schulungsmöglichkeiten um integrierte Optionen, die nur minimale Codeänderungen an Ihren Schulungsskripten erfordern. 

Bevor Sie beginnen:

SageMaker Training unterstützt verteilte Schulungen sowohl auf einer einzelnen Instanz als auch auf mehreren Instanzen, sodass Sie Schulungen jeder Größenordnung in großem Umfang durchführen können. Wir empfehlen Ihnen, die Framework-Estimator-Klassen wie PyTorchund TensorFlowin SageMaker Python SDK zu verwenden. Dabei handelt es sich um die Trainingsjob-Starter mit verschiedenen verteilten Trainingsoptionen. Wenn Sie ein Estimator-Objekt erstellen, richtet das Objekt eine verteilte Trainingsinfrastruktur ein, führt die CreateTrainingJob API im Backend aus, sucht nach der Region, in der Ihre aktuelle Sitzung läuft, und ruft einen der vorgefertigten AWS Deep-Learning-Container ab, der mit einer Reihe von Bibliotheken wie Deep-Learning-Frameworks, verteilten Trainingsframeworks und dem Treiber vorkonfiguriert ist. EFA Wenn Sie ein FSx Dateisystem in die Trainingsinstanzen einbinden möchten, müssen Sie Ihr VPC Subnetz und Ihre Sicherheitsgruppen-ID an den Estimator übergeben. Bevor Sie Ihren verteilten Trainingsjob in ausführen SageMaker, lesen Sie die folgenden allgemeinen Hinweise zur grundlegenden Einrichtung der Infrastruktur.

Availability Zones und Netzwerk-Backplane

Wenn Sie mehrere Instanzen (auch Knoten genannt) verwenden, ist es wichtig, das Netzwerk zu verstehen, das die Instanzen verbindet, wie sie die Trainingsdaten lesen und wie sie Informationen untereinander austauschen. Wenn Sie beispielsweise einen verteilten datenparallelen Trainingsjob ausführen, spielen eine Reihe von Faktoren, wie die Kommunikation zwischen den Knoten eines Rechenclusters zur Ausführung des AllReduce Vorgangs und die Datenübertragung zwischen den Knoten und die Datenspeicherung in Amazon Simple Storage Service oder Amazon FSx for Lustre, eine entscheidende Rolle, um eine optimale Nutzung der Rechenressourcen und eine schnellere Trainingsgeschwindigkeit zu erreichen. Um den Kommunikationsaufwand zu reduzieren, stellen Sie sicher, dass Sie Instanzen, VPC Subnetz und Datenspeicher in derselben Availability Zone AWS-Region und in derselben Availability Zone konfigurieren.

GPUInstanzen mit schnellerem Netzwerk und Speicher mit hohem Durchsatz

Sie können technisch gesehen beliebiges Instances für verteilte Trainings verwenden. Für Fälle, in denen Sie verteilte Trainingsjobs mit mehreren Knoten ausführen müssen, um große Modelle wie große Sprachmodelle (LLMs) und Diffusionsmodelle zu trainieren, die eine schnellere Kommutierung zwischen den Knoten erfordern, empfehlen wir EFAGPU-fähige Instances, die von unterstützt werden. SageMaker Insbesondere um die leistungsstärkste verteilte Trainingsaufgabe zu erzielen, empfehlen wir P4d- und SageMaker P4de-Instances, die mit A100 ausgestattet sind. NVIDIA GPUs Diese sind außerdem mit lokalem Instance-Speicher mit hohem Durchsatz und niedriger Latenz sowie schnellerem Knotennetzwerk ausgestattet. Für die Datenspeicherung empfehlen wir Amazon FSx for Lustre, das einen hohen Durchsatz für die Speicherung von Trainingsdatensätzen und Modell-Checkpoints bietet.

Verwenden Sie die Bibliothek SageMaker Distributed Data Parallelism () SMDDP

Die SMDDP Bibliothek verbessert die Kommunikation zwischen Knoten durch Implementierungen AllReduce und AllGather kollektive Kommunikationsoperationen, die für die AWS Netzwerkinfrastruktur und die Amazon SageMaker ML-Instance-Topologie optimiert sind. Sie können die SMDDPBibliothek als Backend für PyTorch basierte verteilte Trainingspakete verwenden: PyTorch Distributed Data Parallel (DDP), PyTorch Fully Sharded Data Parallelism (FSDP) und Megatron DeepSpeed-. DeepSpeed Das folgende Codebeispiel zeigt, wie Sie einen PyTorch Schätzwert für das Starten eines verteilten Trainingsjobs auf zwei Instanzen einrichten. ml.p4d.24xlarge

from sagemaker.pytorch import PyTorch estimator = PyTorch( ..., instance_count=2, 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 )

Informationen zur Vorbereitung Ihres Trainingsskripts und zum Starten einer verteilten datenparallelen Trainingsaufgabe finden Sie SageMaker unterFühren Sie verteilte Schulungen mit der Bibliothek für SageMaker verteilte Datenparallelität durch.

Verwenden Sie die SageMaker Modellparallelitätsbibliothek () SMP

SageMaker stellt die SMP Bibliothek bereit und unterstützt verschiedene verteilte Trainingstechniken wie Sharded Data Parallelism, Pipelining, Tensorparallelismus, Optimizer-State-Sharding und mehr. Weitere Informationen über das Angebot der Bibliothek finden Sie unter. SMP Kernfunktionen der SageMaker Model Parallelism Library

Um die Modellparallelitätsbibliothek zu verwenden SageMaker, konfigurieren Sie die distribution Parameter der SageMaker Framework-Schätzer. Unterstützte Framework-Schätzer sind und. PyTorchTensorFlow Das folgende Codebeispiel zeigt, wie Sie eine Framework-Schätzfunktion für verteilte Trainings mit der Modellparallelitätsbibliothek auf zwei ml.p4d.24xlarge-Instances erstellen.

from sagemaker.framework import Framework distribution={ "smdistributed": { "modelparallel": { "enabled":True, "parameters": { ... # enter parameter key-value pairs here } }, }, "mpi": { "enabled" : True, ... # enter parameter key-value pairs here } } estimator = Framework( ..., instance_count=2, instance_type="ml.p4d.24xlarge", distribution=distribution )

Informationen zum Anpassen Ihres Trainingsskripts, zur Konfiguration von Verteilungsparametern in der estimator Klasse und zum Starten eines verteilten Trainingsjobs finden Sie in SageMakerder Modellparallelismus-Bibliothek (siehe auch Distributed Training APIs in der SageMaker SDKPython-Dokumentation).

Verwenden verteilter Open-Source-Trainingsframeworks

SageMaker unterstützt auch die folgenden Optionen für den Betrieb mpirun und torchrun im Backend.