Tensor-Parallelitä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.

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 einzelne Gewichte erhalten bleiben, der Satz von Gewichtungen, Gradienten oder Optimierern jedoch geräteübergreifend aufgeteilt wird, zerlegt die Tensorparallelität einzelne Gewichte. 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 integriert und läuft auf FSDP-APIs. PyTorch Sie können die PyTorch FSDP- und SMP-Tensorparallelität gleichzeitig aktivieren und die beste Modellparallelität für die beste Leistung ermitteln.

In der Praxis ist die Tensorparallelität in den folgenden Szenarien besonders hilfreich.

  • Beim Training mit langen Kontextlängen führt dies allein mit FSDP zu einem hohen Aktivierungsspeicher.

  • Beim Training mit sehr großen Clustern, bei denen die globale Batchgröße die gewünschten Grenzwerte überschreitet.

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

SMP v2 bietet derzeit Unterstützung für Tensorparallelität für die folgenden Hugging Face Face-Transformatormodelle.

  • GPT-NeoX

  • Lama 2

Eine Referenzkonfiguration für die Anwendung der Tensorparallelität auf diese Modelle finden Sie unter. Konfigurationstipps

Konfigurieren Sie die Tensorparallelität

Für tensor_parallel_degree wählen Sie einen Wert für den Grad der Tensorparallelität. Der Wert muss die Anzahl der GPUs in Ihrem Cluster gleichmäßig verteilen. Um beispielsweise Ihr Modell zu teilen, während Sie eine Instanz mit 8 GPUs verwenden, 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 unter beschriebenen zweistufigen Prozess. Erste Schritte mit der SageMaker Modellparallelismus-Bibliothek v2 Sie müssen keine Änderungen an Ihrem Modell oder Ihrer FSDP-Konfiguration vornehmen. PyTorch PyTorch Weitere Hinweise zu den Parametern tensor_parallel_degree und random_seed finden Sie unter Konfigurationsparameter für die Kernfunktion von SMP v2.

SMP-Konfiguration

{ "tensor_parallel_degree": 8, "random_seed": 0 }

In deinem Trainingsskript

Initialisieren Sie mittorch.sagemaker.init(), um SMP v2 zu aktivieren, und schließen Sie Ihr Modell mit der torch.sagemaker.transform API zusammen.

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

Hugging Face Transformer Checkpoints speichern und laden

Nachdem die SMP-Bibliothek ein Modell transformiert hat, ändert sie das Statuswörterbuch () state_dict des Modells. Dies bedeutet, dass das Modell nicht mehr mit den ursprünglichen Checkpoint-Funktionen von Hugging Face Transformer kompatibel ist. Zu diesem Zweck bietet die SMP-Bibliothek APIs zum Speichern von Checkpoints aus einem transformierten Modell in der Hugging Face Transformer-Darstellung sowie die torch.sagemaker.transform API zum Laden eines Hugging Face Transformer-Modell-Checkpoints zur Feinabstimmung.

Weitere Informationen zum Speichern von Checkpoints bei Verwendung der Tensorparallelismus-Funktion von SMP v2 finden Sie unter. Speichern und laden Sie Checkpoints, während Sie SMP verwenden

Weitere Informationen zur Feinabstimmung eines Modells unter Verwendung der Tensorparallelitätsfunktion von SMP v2 finden Sie unter. Feinabstimmung