Häufig gestellte Fragen zur Amazon-Bibliothek für SageMaker verteilte Datenparallelität - 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.

Häufig gestellte Fragen zur Amazon-Bibliothek für SageMaker verteilte Datenparallelität

Im Folgenden finden Sie Antworten auf häufig gestellte Fragen zur SMDDP-Bibliothek.

F: Wie werden bei der Nutzung der Bibliothek die allreduce CPU-Instanzen verwaltet, die diese unterstützen? Muss ich heterogene CPU-GPU-Cluster erstellen oder erstellt der SageMaker Service zusätzliche C5s für Aufträge, die die SMDDP-Bibliothek verwenden?

Die SMDDP-Bibliothek unterstützt nur GPU-Instances, genauer gesagt P4d- und P4de-Instances mit NVIDIA A100 GPUs und EFA. Es werden keine zusätzlichen C5- oder CPU-Instances gestartet. Wenn sich Ihr SageMaker Trainingsauftrag auf einem P4d-Cluster mit 8 Knoten befindet, werden nur 8 ml.p4d.24xlarge Instances verwendet. Es werden keine zusätzlichen Instanzen bereitgestellt.

F: Ich habe einen Schulungsjob, der 5 Tage für eine einzelne ml.p3.24xlarge Instance mit einem Satz von Hyperparametern H1 (Lernrate, Batchgröße, Optimizer usw.) dauert. Ist die Verwendung SageMakerder Datenparallelitätsbibliothek von und eines fünfmal größeren Clusters ausreichend, um eine ungefähre fünffache Beschleunigung zu erreichen? Oder muss ich nach der Aktivierung der SMDDP-Bibliothek ihre Trainings-Hyperparameter erneut überprüfen?

Die Bibliothek ändert die gesamte Batchgröße. Die neue Gesamtstapelgröße wird linear mit der Anzahl der verwendeten Trainingsinstanzen skaliert. Aus diesem Grund müssen Hyperparameter wie die Lernrate geändert werden, um die Konvergenz sicherzustellen.

F: Unterstützt die SMDDP-Bibliothek Spot?

Ja. So verwenden Sie Managed Spot Training. Sie geben den Pfad zur Checkpoint-Datei im SageMaker Trainingsauftrag an. Sie speichern und stellen Checkpoints in ihrem Trainingsskript wieder her, wie in den letzten Schritten von Verwenden Sie die SMDDP-Bibliothek in Ihrem TensorFlow Schulungsskript (veraltet) und Verwenden Sie die SMDDP-Bibliothek in Ihrem Trainingsskript PyTorch beschrieben.

F: Ist die SMDDP-Bibliothek in einer Einrichtung mit einem Host und mehreren Geräten relevant?

Die Bibliothek kann für Schulungen mit einem Host und mehreren Geräten verwendet werden. Leistungsverbesserungen bietet die Bibliothek jedoch nur bei Schulungen mit mehreren Hosts.

F: Wo sollte der Trainingsdatensatz gespeichert werden?

Der Trainingsdatensatz kann in einem Amazon-S3-Bucket oder auf einem Amazon FSx-Laufwerk gespeichert werden. In diesem Dokument finden Sie verschiedene unterstützte Eingabedateisysteme für einen Trainingsjob.

F: Ist es bei Verwendung der SMDDP-Bibliothek zwingend erforderlich, Trainingsdaten in FSx for Lustre zu haben? Können Amazon EFS und Amazon S3 verwendet werden?

Wir empfehlen generell, Amazon FSx zu verwenden, da es eine geringere Latenz und einen höheren Durchsatz bietet. Wenn Sie möchten, können Sie auch Amazon EFS oder Amazon S3 verwenden.

F: Kann die Bibliothek mit CPU-Knoten verwendet werden?

Nein. Informationen zum Auffinden von Instance-Typen, die von der SMDDP-Bibliothek unterstützt werden, finden Sie unter Unterstützte Instance-Typen.

F: Welche Frameworks und Framework-Versionen werden derzeit von der SMDDP-Bibliothek beim Start unterstützt?

Die SMDDP-Bibliothek unterstützt derzeit PyTorch v1.6.0 oder höher und TensorFlow v2.3.0 oder höher. TensorFlow 1.x wird nicht unterstützt. Weitere Informationen darüber, welche Version der SMDDP-Bibliothek in AWS Deep-Learning-Containern verpackt ist, finden Sie unter Versionshinweise für Deep-Learning-Container.

F: Unterstützt die Bibliothek AMP?

Ja, die SMDDP-Bibliothek unterstützt sofort Automatic Mixed Präzision (AMP). Für die Verwendung von AMP sind außer den Änderungen an Ihrem Trainingsskript auf Framework-Ebene keine weiteren Maßnahmen erforderlich. Wenn sich Gradienten in FP16 befinden, führt die SageMaker Datenparallelitätsbibliothek ihren AllReduce Vorgang in FP16 aus. Weitere Informationen zur Implementierung von AMP-APIs in Ihrem Schulungsskript finden Sie in den folgenden Ressourcen:

F: Wie stelle ich fest, ob mein verteilter Trainingsjob aufgrund von I/O-Engpässen verlangsamt wird?

Bei einem größeren Cluster erfordert der Trainingsjob einen höheren I/O-Durchsatz. Daher kann es länger dauern (mehr Epochen), bis der Trainingsdurchsatz die maximale Leistung erreicht. Dies deutet darauf hin, dass I/O-Engpässe auftreten und der Cache schwieriger aufzubauen ist, wenn Sie die Knoten vergrößern (höhere Durchsatzanforderungen und komplexere Netzwerktopologie). Weitere Informationen zur Überwachung des Amazon-FSx-Durchsatzes auf CloudWatchfinden Sie unter Überwachung von FSx für Lustre im Benutzerhandbuch für FSx für Lustre.

F: Wie behebe ich I/O-Engpässe, wenn ich einen verteilten Trainingsjob mit Datenparallelität ausführe?

Wir empfehlen Ihnen dringend, Amazon FSx als Ihren Datenkanal zu verwenden, wenn Sie Amazon S3 verwenden. Wenn Sie Amazon FSx bereits verwenden, aber immer noch I/O-Engpassprobleme haben, haben Sie Ihr Amazon FSx-Dateisystem möglicherweise mit einem niedrigen I/O-Durchsatz und einer geringen Speicherkapazität eingerichtet. Weitere Informationen zur Schätzung und Auswahl der richtigen Größe der I/O-Durchsatzkapazität finden Sie unter Verwenden Sie Amazon FSx und richten Sie eine optimale Speicher- und Durchsatzkapazität ein.

F: (Für die Bibliothek v1.4.0 oder höher) Wie behebe ich den Invalid backend Fehler beim Initialisieren der Prozessgruppe.

Wenn beim ValueError: Invalid backend: 'smddp' Aufrufen von die Fehlermeldung angezeigt wirdinit_process_group, liegt dies an der grundlegenden Änderung der SMDDP-Bibliothek v1.4.0 und höher. Sie müssen den PyTorch Client der Bibliothek importieren, smdistributed.dataparallel.torch.torch_smddp, der smddp als Backend für registriert wird PyTorch. Weitere Informationen hierzu finden Sie unter Verwenden Sie die SMDDP-Bibliothek in Ihrem Trainingsskript PyTorch .

F: (Für die SMDDP-Bibliothek v1.4.0 oder höher) möchte ich die kollektiven Primitive der torch.distributed Schnittstelle aufrufen. Welche Primitive unterstützt das smddp Backend?

In v1.4.0 unterstützt die SMDDP-Bibliothek all_reduce, broadcast, all_gather, und barrier von der reduce-torch.distributedSchnittstelle.

F: (Für die SMDDP-Bibliothek v1.4.0 oder höher) Funktioniert diese neue API mit anderen benutzerdefinierten DDP-Klassen oder Bibliotheken wie Apex DDP?

Die SMDDP-Bibliothek wurde mit anderen verteilten Datenparallelbibliotheken und Framework-Implementierungen von Drittanbietern getestet, die die torch.distribtued Module verwenden. Die Verwendung der SMDDP-Bibliothek mit benutzerdefinierten DDP-Klassen funktioniert solange die von den benutzerdefinierten DDP-Klassen verwendeten kollektiven Operationen von der SMDDP-Bibliothek unterstützt werden. In der vorherigen Frage finden Sie eine Liste der unterstützten Kollektive. Wenn Sie diese Anwendungsfälle haben und weitere Unterstützung benötigen, wenden Sie sich SageMaker über das AWS Support Center oder die AWS Entwicklerforen für Amazon an das Team SageMaker.

F: Unterstützt die SMDDP-Bibliothek die Option bring-your-own-container (BYOC)? Falls ja, wie installiere ich die Bibliothek und führe einen verteilten Trainingsjob aus, indem ich ein benutzerdefiniertes Dockerfile schreibe?

Wenn Sie die SMDDP-Bibliothek und ihre Mindestabhängigkeiten in Ihren eigenen Docker-Container integrieren möchten, ist BYOC der richtige Ansatz. Sie können Ihren eigenen Container mithilfe der Binärdatei der Bibliothek erstellen. Der empfohlene Prozess besteht darin, eine benutzerdefinierte Docker-Datei mit der Bibliothek und ihren Abhängigkeiten zu schreiben, den Docker-Container zu erstellen, ihn in Amazon ECR zu hosten und den ECR-Image-URI zu verwenden, um einen Trainingsauftrag mit der SageMaker generischen Schätzerklasse zu starten. Weitere Anweisungen zur Vorbereitung eines benutzerdefinierten Dockerfiles für verteilte Schulungen in SageMaker mit der SMDDP-Bibliothek finden Sie unter Erstellen Sie Ihren eigenen Docker-Container mit der SageMaker verteilten Datenparallelbibliothek.