Einführung in die Modellparallelitä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.

Einführung in die Modellparallelität

Modellparallelität ist eine verteilte Trainingsmethode, bei der das Deep-Learning-Modell (DL) auf mehrere GPUs AND-Instanzen aufgeteilt ist. Die SageMaker Modellparallelbibliothek v2 (SMPv2) ist mit den PyTorch APIs nativen Funktionen kompatibel. Auf diese Weise können Sie Ihr PyTorch Fully Sharded Data Parallel (FSDP) -Trainingsskript bequem an die SageMaker Trainingsplattform anpassen und die Leistungsverbesserung nutzen, die SMP Version 2 bietet.

Diese Einführungsseite bietet einen allgemeinen Überblick über Modellparallelität und eine Beschreibung, wie sie dazu beitragen kann, Probleme zu lösen, die beim Training von Deep-Learning-Modellen (DL) auftreten, die in der Regel sehr umfangreich sind. Es enthält auch Beispiele dafür, was die SageMaker Modellparallel-Bibliothek bietet, um Modellparallelstrategien und Speicherverbrauch zu verwalten.

Was ist Modellparallelität?

Eine Erhöhung der Größe von Deep-Learning-Modellen (Ebenen und Parameter) führt zu einer besseren Genauigkeit bei komplexen Aufgaben wie Computer Vision und Verarbeitung natürlicher Sprache. Es gibt jedoch eine Grenze für die maximale Modellgröße, die Sie in den Speicher eines einzelnen Modells passen können. GPU Beim Training von DL-Modellen können GPU Speicherbeschränkungen auf folgende Weise zu Engpässen führen:

  • Sie begrenzen die Größe des Modells, das Sie trainieren können, da der Speicherbedarf eines Modells proportional zur Anzahl der Parameter skaliert.

  • Sie begrenzen die Größe pro GPU Charge während des Trainings, was die GPU Auslastung und die Trainingseffizienz senkt.

Um die Einschränkungen zu überwinden, die mit dem Training eines Modells auf einem einzelnen Modell verbunden sindGPU, SageMaker bietet die Modellparallelbibliothek, mit der DL-Modelle effizient auf mehreren Rechenknoten verteilt und trainiert werden können. Darüber hinaus können Sie mit der Bibliothek ein optimiertes verteiltes Training mithilfe EFA unterstützter Geräte erreichen, wodurch die Leistung der Kommunikation zwischen den Knoten mit geringer Latenz, hohem Durchsatz und Betriebssystemumgehung verbessert wird.

Schätzen Sie den Speicherbedarf ab, bevor Sie Modellparallelität verwenden

Bevor Sie die SageMaker Modellparallelbibliothek verwenden, sollten Sie Folgendes berücksichtigen, um sich ein Bild von den Speicheranforderungen beim Training großer DL-Modelle zu machen.

Für einen Trainingsjob, der automatische Mixed-Precision-Optimierer wie float16 bfloat16 (FP16BF16) oder () und Adam-Optimierer verwendet, beträgt der benötigte GPU Speicher pro Parameter etwa 20 Byte, was wir wie folgt aufschlüsseln können:

  • Ein FP16 BF16 Oder-Parameter ~ 2 Byte

  • Ein FP16 BF16 Oder-Gradient ~ 2 Byte

  • Ein FP32 Optimierungsstatus von ~ 8 Byte, der auf den Adam-Optimierern basiert

  • Eine FP32 Kopie des Parameters ~ 4 Byte (wird für den optimizer apply (OA-) Vorgang benötigt)

  • Eine FP32 Kopie von Gradient ~ 4 Byte (wird für die OA-Operation benötigt)

Selbst für ein relativ kleines DL-Modell mit 10 Milliarden Parametern kann es mindestens 200 GB Arbeitsspeicher benötigen, was viel größer ist als der typische Speicher (z. B. NVIDIA A100 mit 40 GB/80 GB GPU Speicher), der auf einem einzelnen Modell verfügbar ist. GPU Zu den Speicheranforderungen für Modell- und Optimiererstatus kommen noch weitere Speicherverbraucher hinzu, wie z. B. Aktivierungen, die im Forward-Pass generiert werden. Der benötigte Speicher kann deutlich mehr als 200 GB betragen.

Für verteilte Schulungen empfehlen wir die Verwendung von Amazon EC2 P4- und P5-Instances mit NVIDIA A100 bzw. H100 Tensor Core. GPUs Weitere Informationen zu Spezifikationen wie CPU KernenRAM, angeschlossenem Speichervolumen und Netzwerkbandbreite finden Sie im Abschnitt Accelerated Computing auf der Seite EC2Amazon-Instance-Typen. Informationen zu Instance-Typen, die SMP v2 unterstützt, finden Sie unterUnterstützte Instance-Typen.

Selbst bei beschleunigten Recheninstanzen passen Modelle mit etwa 10 Milliarden Parametern wie Megatron-LM und T5 und noch größere Modelle mit Hunderten von Milliarden von Parametern wie GPT -3 nicht in jedes Gerät. GPU

Wie die Bibliothek Modellparallelität und Speicherspartechniken einsetzt

Die Bibliothek besteht aus verschiedenen Arten von Modellparallelitäts-Features und Features zur Speichereinsparung, z. B. Optimierungszustand-Sharding, Aktivierungsprüfpunkte und Aktivierungs-Offloading. All diese Techniken können kombiniert werden, um große Modelle, die aus Hunderten von Milliarden von Parametern bestehen, effizient zu trainieren.

Parallelität von Sharded Data

Sharded Data Parallelism ist eine speichersparende verteilte Trainingstechnik, die den Status eines Modells (Modellparameter, Gradienten und Optimiererzustände) innerhalb einer datenparallelen Gruppe aufteilt. GPUs

SMPv2 implementiert Sharded Data Parallelität durch und erweitert sie, um die skalenbewusste Hybrid-Sharding-Strategie zu implementierenFSDP, die im Blogbeitrag Nahezu lineare Skalierung des Trainings mit gigantischen Modellen besprochen wurde. AWS

Sie können die Parallelität von Sharded Data als eigenständige Strategie auf Ihr Modell anwenden. Wenn Sie die leistungsfähigsten GPU Instances verwenden, die mit NVIDIA A100 Tensor Core ml.p4d.24xlarge und ausgestattet sindGPUs, können Sie außerdem die Vorteile der verbesserten Trainingsgeschwindigkeit nutzenml.p4de.24xlarge, die die Datenparallelism AllGather () -Bibliothek bietet. SageMaker SMDDP

Weitere Informationen zur Sharded-Datenparallelität und zu deren Einrichtung oder Verwendung einer Kombination aus Sharded-Datenparallelität und anderen Techniken wie Tensorparallelismus und Mixed-Precision-Training finden Sie unter. Parallelität hybrider Sharded Data

Parallelität für Experten

SMPv2 ist in NVIDIAMegatron integriert, um zusätzlich zur nativen Unterstützung Expertenparallelität zu implementieren. PyTorch FSDP APIs Sie können Ihren PyTorch FSDP Trainingscode unverändert lassen und SMP Expertenparallelität für das Training von Mixture of Experts (MoE) -Modellen anwenden. SageMaker

Ein MoE-Modell ist eine Art Transformatormodell, das aus mehreren Experten besteht, von denen jeder aus einem neuronalen Netzwerk besteht, typischerweise einem Feed-Forward-Netzwerk (). FFN Ein Gate-Netzwerk namens Router bestimmt, welche Token an welchen Experten gesendet werden. Diese Experten sind auf die Verarbeitung bestimmter Aspekte der Eingabedaten spezialisiert, sodass das Modell schneller trainiert werden kann, die Rechenkosten reduziert werden und gleichzeitig dieselbe Leistungsqualität wie das Modell mit hoher Dichte erreicht wird. Und Expertenparallelismus ist eine Parallelitätstechnik, bei der Experten eines MoE-Modells auf mehrere Geräte aufgeteilt werden. GPU

Informationen zum Trainieren von MoE-Modellen mit v2 finden Sie unter. SMP Parallelität für Experten

Tensor-Parallelität

Die Tensorparallelität teilt einzelne Schichten oder geräteübergreifend aufnn.Modules, sodass sie parallel ausgeführt werden. Die folgende Abbildung zeigt das einfachste Beispiel dafür, wie die SMP Bibliothek ein Modell mit vier Schichten aufteilt, um eine bidirektionale Tensorparallelität zu erreichen (). "tensor_parallel_degree": 2 In der folgenden Abbildung lauten die Notationen für Modellparallelgruppe, Tensorparallelgruppe und Datenparallelgruppe jeweils MP_GROUPTP_GROUP, undDP_GROUP. Die Schichten der einzelnen Modellreplikate sind halbiert und zweigeteilt. GPUs Die Bibliothek verwaltet die Kommunikation zwischen den über Tensor verteilten Modellreplikaten.

Einfachstes Beispiel dafür, wie die SMP Bibliothek ein Modell in vier Schichten aufteilt, um eine bidirektionale Tensorparallelität zu erreichen („tensor_parallel_degree“: 2).

Weitere Informationen zur Tensorparallelität und anderen speichersparenden Funktionen sowie zum PyTorch Einstellen einer Kombination der Kernfunktionen finden Sie unter. Tensor-Parallelität

Aktivierung, Checkpoint und Offloading

Um GPU Speicherplatz zu sparen, unterstützt die Bibliothek Aktivierungsprüfpunkte, um zu verhindern, dass interne Aktivierungen für benutzerdefinierte Module während des GPU Vorwärtsdurchlaufs im Speicher gespeichert werden. Die Bibliothek berechnet diese Aktivierungen während des Rückwärtsdurchlaufs neu. Beim Offloading der Aktivierung werden außerdem die gespeicherten Aktivierungen in den CPU Arbeitsspeicher ausgelagert und GPU während des Rücklaufs wieder abgerufen, um den Speicherbedarf für die Aktivierung weiter zu reduzieren. Weitere Informationen zur Verwendung dieser Funktionen finden Sie unter und. Checkpointing bei der Aktivierung Aktivierung, Entladung

Auswahl der richtigen Techniken für Ihr Modell

Weitere Informationen zur Auswahl der richtigen Techniken und Konfigurationen finden Sie unterSageMaker Bewährte Methoden für verteilte Modellparallelität.