Kontextparallelität - Amazon SageMaker KI

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.

Kontextparallelität

Kontextparallelität ist eine Art von Modellparallelität, bei der die Modellaktivierungen entlang der Sequenzdimension fragmentiert werden. Im Gegensatz zu anderen Techniken der Sequenzparallelität, die nur die LayerNorm und RMSNorm partitionieren, partitioniert die Kontextparallelität die Netzwerkeingänge und alle dazwischenliegenden Aktivierungen entlang der Sequenzdimension.

SMP v2 ist für Kontextparallelität in die Transformer Engine integriert und kann in Verbindung mit FSDP und SMP verwendet werden. PyTorch Tensor-Parallelität Sie können alle drei Parallelitäten gleichzeitig für das Modelltraining aktivieren. Kontextparallelität ist für Trainingsmodelle mit großen Aktivierungsgrößen und langen Sequenzlängen von Vorteil. Sie beschleunigt die Berechnung von Aufmerksamkeitswerten und Aufmerksamkeitsergebnissen, da jedes Gerät nur einen Teil der Werte und Ergebnisse entlang der Sequenzdimension berechnen kann. Die Tensorparallelität beschleunigt zwar auch die Berechnung durch Partitionierung entlang der verborgenen Dimension, doch der Vorteil der Kontextparallelität ist größer, da die Rechenanforderungen quadratisch mit der Sequenzdimension steigen.

Transformer-Modelle von Hugging Face, die mit der SMP-Kontextparallelität kompatibel sind

SMP v2 bietet derzeit Unterstützung der Kontextparallelität für die folgenden Transformer-Modelle von Hugging Face.

Kontextparallelität konfigurieren

Legen Sie einen ganzzahligen Wert für den context_parallel_degree Parameter fest, der die Anzahl der in Ihrem Cluster gleichmäßig verteilt. GPUs Wenn Sie z. B. eine 8-GPU-Instance haben, verwenden Sie 2, 4 oder 8 für context_parallel_degree. Wir empfehlen, mit einem kleinen context_parallel_degree-Wert zu beginnen und ihn schrittweise zu erhöhen, bis das Modell mit der erforderlichen Länge der Eingabesequenz in den GPU-Speicher passt.

Die folgenden Codefragmente zeigen, wie Sie das SMP-Initialisierungsmodul torch.sagemaker.init() zu Ihrem Trainingsskript hinzufügen und das SMP-Konfigurationswörterbuch im JSON-Format für den Trainingsjob-Launcher einrichten. Dabei folgen Sie dem in Verwendung der SageMaker-Modellparallelitätsbibliothek v2 beschriebenen zweistufigen Prozess. Sie müssen keine Änderungen an Ihrem PyTorch Modell oder Ihrer PyTorch FSDP-Konfiguration vornehmen. Weitere Informationen zum Parameter context_parallel_degree erhalten Sie unter Konfigurationsparameter für die Kernfunktionen von SMP v2.

In Ihrem Trainingsskript

Initialisieren Sie im Rahmen von Schritt 1 Ihr Skript mit torch.sagemaker.init(), um SMP v2 zu aktivieren, und umschließen Sie Ihr Modell mit der torch.sagemaker.transform-API.

Ab SMP v2.6.0 können Sie das Argument cp_comm_type verwenden, um zu bestimmen, welche Implementierung der Kontextparallelität verwendet werden soll. Die SMP-Bibliothek unterstützt derzeit zwei Implementierungen: p2p und all_gather. Die p2p Implementierung verwendet peer-to-peer Send-Receive-Aufrufe zur Akkumulation von Schlüsselwerten während der Aufmerksamkeitsimplementierung und wird asynchron ausgeführt, sodass Überschneidungen mit der Datenverarbeitung möglich sind. all_gatherDie Implementierung verwendet stattdessen die kollektive Operation und wird synchron ausgeführtAllGather.

import torch.sagemaker as tsm tsm.init() from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_config(..) model = tsm.transform(model, cp_comm_type="p2p")

SMP-Konfiguration

Fügen Sie im Rahmen von Schritt 2 den folgenden Parameter zum SMP-Konfigurationswörterbuch für den SageMaker PyTorch Schätzer hinzu.

{ ..., # other SMP config parameters "context_parallel_degree": 2 }