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.
Tensor-Parallelität
Tensor-Parallelität ist eine Art von Modellparallelität, bei der bestimmte Modellgewichtungen, Steigungen und Optimierer-Zustände auf verschiedene Geräte aufgeteilt werden. Im Gegensatz zur Pipeline-Parallelität, bei der die einzelnen Gewichtungen intakt bleiben, die Menge der Gewichtungen, Gradienten oder des Optimierers jedoch auf verschiedene Geräte aufgeteilt wird, teilt die Tensor-Parallelität die einzelnen Gewichtungen auf. Dies beinhaltet in der Regel die verteilte Berechnung bestimmter Operationen, Module oder Layers des Modells.
Tensor-Parallelität ist dann erforderlich, wenn ein einzelner Parameter den größten Teil des GPU-Speichers beansprucht (z. B. große Einbettungstabellen mit großem Vokabular oder eine große Softmax-Layer mit einer großen Anzahl Klassen). In diesem Fall ist es ineffizient, diesen großen Tensor oder diese Operation als atomare Einheit zu behandeln und behindert die ausgeglichene Auslastung des Speichers.
SMP v2 ist für die Implementierung von Tensorparallelität in Transformer Engine
In der Praxis ist die Tensorparallelität in den folgenden Szenarien besonders hilfreich.
-
Beim Training mit langen Kontextlängen, was allein mit FSDP zu einem hohen Aktivierungsspeicher führt.
-
Beim Training mit sehr großen Clustern, bei denen die globale Batchgröße die gewünschten Grenzwerte überschreitet.
Transformer-Modelle von Hugging Face, die mit der SMP-Tensorparallelität kompatibel sind
SMP v2 bietet derzeit Unterstützung der Tensorparallelität für die folgenden Transformer-Modelle von Hugging Face.
-
GPT-NeoX
-
Llama 2
-
Llama 3
Eine Referenzkonfiguration für die Anwendung der Tensorparallelität auf diese Modelle finden Sie unter Konfigurationstipps.
Tensorparallelität konfigurieren
Für tensor_parallel_degree wählen Sie einen Wert für den Grad der Tensorparallelität aus. Der Wert muss die Anzahl der in Ihrem Cluster gleichmäßig verteilen. GPUs Um beispielsweise Ihr Modell zu teilen, während Sie eine Instanz mit 8 verwenden GPUs, wählen Sie 2, 4 oder 8. Wir empfehlen, mit einer kleinen Zahl zu beginnen und diese schrittweise zu erhöhen, bis das Modell 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-Konfigurationtensor_parallel_degree und random_seed finden Sie unter Konfigurationsparameter für die Kernfunktionen von SMP v2.
SMP-Konfiguration
{ "tensor_parallel_degree": 8, "random_seed": 0 }
In Ihrem Trainingsskript
Initialisieren Sie mit torch.sagemaker.init(), um SMP v2 zu aktivieren, und umschließen Sie Ihr Modell mit der torch.sagemaker.transform-API.
import torch.sagemaker as tsm tsm.init() from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_config(..) model = tsm.transform(model)
Speichern und Laden der Prüfpunkte von Hugging Face Transformer
Nachdem die SMP-Bibliothek ein Modell transformiert hat, ändert sie das Zustandswörterbuch (state_dict) des Modells. Dies bedeutet, dass das Modell nicht mehr mit den ursprünglichen Checkpointing-Funktionen von Hugging Face Transformer kompatibel ist. Um dies zu handhaben, bietet APIs die SMP-Bibliothek das Speichern von Checkpoints aus einem transformierten Modell in der Hugging Face Transformer-Darstellung und die torch.sagemaker.transform API zum Laden eines Hugging Face Transformer-Modell-Checkpoints zur Feinabstimmung.
Weitere Informationen zum Speichern von Prüfpunkten bei Verwendung der Tensorparallelitätsfunktion von SMP v2 finden Sie unter Checkpointing mit SMP.
Weitere Informationen zur Optimierung eines Modells unter Verwendung der Tensorparallelitätsfunktion von SMP v2 finden Sie unter Feinabstimmung.