View a markdown version of this page

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

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 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, 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.

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 GPUs in Ihrem Cluster gleichmäßig verteilen. Wählen Sie z. B. 2, 4 oder 8 aus, um Ihr Modell zu fragmentieren, wenn Sie eine Instance mit 8 GPUs verwenden. 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 Verwenden Sie die SageMaker Modellparallelitätsbibliothek v2 beschriebenen zweistufigen Prozess. 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 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. Zu diesem Zweck bietet die SMP-Bibliothek APIs, um Prüfpunkte aus einem transformierten Modell in der Darstellung von Hugging Face Transformer zu speichern, sowie die torch.sagemaker.transform-API, um einen Prüfpunkt des Hugging Face Transformer-Modells für die Optimierung zu laden.

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 Fine-tuning.