Häufig gestellte Fragen zur Amazon-SMDDP-Bibliothek (SageMaker AI Distributed Data Parallelism) - Amazon SageMaker AI

Häufig gestellte Fragen zur Amazon-SMDDP-Bibliothek (SageMaker AI Distributed Data Parallelism)

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

F: Wie werden bei der Nutzung der Bibliothek die allreduce CPU-Instances verwaltet, die diese unterstützen? Muss ich heterogene CPU-GPU-Cluster erstellen, oder erstellt der SageMaker-AI-Dienst zusätzliche C5s für Jobs, 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 Ihr SageMaker-AI-Trainingsjob auf einem P4d-Cluster mit 8 Knoten ausgeführt wird, werden nur 8 ml.p4d.24xlarge-Instances verwendet. Es werden keine zusätzlichen Instances bereitgestellt.

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

Die Bibliothek ändert die gesamte Batchgröße. Die neue Gesamtstapelgröße wird linear mit der Anzahl der verwendeten Trainings-Instances 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-Trainingsjob an. Sie speichern und stellen Checkpoints in ihrem Trainingsskript wieder her, wie in den letzten Schritten von Die SMDDP-Bibliothek in Ihrem TensorFlow-Trainingsskript verwenden (veraltet) und Die SMDDP-Bibliothek in Ihrem PyTorch-Trainingsskript verwenden beschrieben.

F: Ist die SMDDP-Bibliothek für eine Konfiguration mit einem Host und mehreren Geräten relevant?

Die Bibliothek kann für Trainings mit einem Host und mehreren Geräten verwendet werden. Leistungsverbesserungen bietet die Bibliothek jedoch nur bei Trainings 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 der Nutzung der SMDDP-Bibliothek zwingend erforderlich, Trainingsdaten in FSx für 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 zu 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 Containers verpackt ist, finden Sie unter Versionshinweise für Deep-Learning-Container.

F: Unterstützt die Bibliothek AMP?

Ja, die SMDDP-Bibliothek unterstützt Automatic Mixed Precision (AMP) von Haus aus. Für die Verwendung von AMP sind außer den Änderungen an Ihrem Trainingsskript auf Framework-Ebene keine weiteren Maßnahmen erforderlich. Wenn Gradienten in FP16 sind, führt die SageMaker-AI-Datenparallelitätsbibliothek ihren Betrieb in FP16 aus. AllReduce Weitere Informationen zum Implementieren von AMP-APIs in Ihrem Trainingsskript 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 CloudWatch finden Sie unter Monitoring FSx für Lustre im FSx for Lustre-Benutzerhandbuch.

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 Sie beim Aufrufen von init_process_group auf die Fehlermeldung ValueError: Invalid backend: 'smddp' stoßen, liegt das an der grundlegenden Änderung in der SMDDP-Bibliothek v1.4.0 und höher. Sie müssen den PyTorch-Client der Bibliothek, smdistributed.dataparallel.torch.torch_smddp, importieren, der smddp als Backend für PyTorch registriert. Weitere Informationen hierzu finden Sie unter Die SMDDP-Bibliothek in Ihrem PyTorch-Trainingsskript verwenden.

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

In Version 1.4.0 unterstützt die SMDDP-Bibliothekall_reduce, broadcast, reduce, all_gather und barrier aus der torch.distributed-Schnittstelle.

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 datenparallelen Bibliotheken und Framework-Implementierungen von Drittanbietern getestet, die die Module torch.distribtued 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 über das AWSSupport Center oder die AWSEntwicklerforen für Amazon SageMaker AI an das SageMaker-AI-Team.

F: Unterstützt die SMDDP-Bibliothek die BYOC-Option (Bring-Your-Own-Container)? 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 minimalen Abhä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, ein benutzerdefiniertes Dockerfile 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 Trainingsjob mit der generischen Schätzerklasse SageMaker AI zu starten. Weitere Anweisungen zur Vorbereitung eines benutzerdefinierten Dockerfiles für verteiltes Training in SageMaker AI mit der SMDDP-Bibliothek finden Sie unter Ihren eigenen Docker-Container mit der SMDDP-Bibliothek (SageMaker AI Distributed Data Parallel) erstellen.