Parallelität für Experten - 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.

Parallelität für Experten

Ein Modell der Expertenmischung (Mixture of Experts, MoE) ist eine Art Transformatormodell, das einen spärlichen Ansatz verwendet, wodurch das Training im Vergleich zu herkömmlichen Modellen mit hoher Dichte leichter zu trainieren ist. In dieser neuronalen Netzwerkarchitektur von MoE wird für jede Eingabe nur eine Teilmenge der Komponenten des Modells, die als Experten bezeichnet werden, verwendet. Dieser Ansatz bietet mehrere Vorteile, darunter effizienteres Training und schnellere Inferenz, selbst bei einer größeren Modellgröße. Mit anderen Worten, mit demselben Rechenbudget für das Training eines Modells mit voller Dichte können Sie bei Verwendung von MoE ein größeres Modell oder einen größeren Datensatz anpassen.

Ein MoE-Modell besteht aus mehreren Experten, die jeweils aus einem neuronalen Netzwerk bestehen, in der Regel einem Feed-Forward-Netzwerk (FFN). Ein Gate-Netzwerk, das als Router bezeichnet wird, 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 die gleiche Leistungsqualität wie das Modell mit hoher Dichte erreicht wird. Weitere Informationen zu Mixture of Experts im Allgemeinen finden Sie im Blog Applying Mixture of Experts in LLM Architectures auf der NVIDIA-Entwickler-Website.

Expertenparallelität ist eine Art von Parallelität, bei der Experten eines MoE-Modells auf verschiedene GPU-Geräte aufgeteilt werden.

SMP v2 ist in NVIDIA Megatron integriert, um Expertenparallelität zur Unterstützung von MoE-Schulungsmodellen zu implementieren, und läuft auf FSDP-APIs. PyTorch Sie verwenden Ihren PyTorch FSDP-Trainingscode unverändert und aktivieren die SMP-Expertenparallelität für das Training von MoE-Modellen.

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

Die Expertenparallelität von SMP v2 unterstützt das folgende Hugging Face Transformer-Modell.

Konfigurieren Sie Parallelität für Experten

Für expert_parallel_degree wählen Sie einen Wert für den Grad der Expertenparallelität aus. 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 Informationen zum Parameter expert_parallel_degree erhalten Sie unter Konfigurationsparameter für die Kernfunktion von SMP v2.

Anmerkung

Sie können Expertenparallelität mit verwenden. Parallelität hybrider Sharded Data Beachten Sie, dass die Expertenparallelität derzeit nicht mit der Tensorparallelität kompatibel ist.

Anmerkung

Diese Schulungsfunktion für Experten zur Parallelität ist in der folgenden Kombination aus Bibliotheken von und der Bibliothek verfügbar: SageMaker PyTorch

  • SMP v2.3.0 und höher

  • Das SageMaker Python SDK v2.214.4 und höher

  • PyTorch v2.2.0 und höher

In deinem Trainingsskript

Initialisieren Sie im Rahmen von Schritt 1 Ihr Skript mit, um SMP v2 torch.sagemaker.init() zu aktivieren, und schließen Sie Ihr Modell mit der torch.sagemaker.transform API zusammen. Fügen Sie der API den config Parameter hinzu, um MoE zu aktivieren. Der folgende Codeausschnitt zeigt, wie Sie SMP MoE für die generische Modellklasse aktivieren, die eine MoE-Transformator-Modellkonfiguration AutoModelForCausalLM abruft, indem Sie die Methode für das Training von Grund auf oder die from_config Methode für die Feinabstimmung verwenden. from_pretrained Weitere Informationen zur MoEConfig SMP-Klasse finden Sie unter. torch.sagemaker.moe.moe_config.MoEConfig

# Import the torch.sagemaker.transform API and initialize. import torch.sagemaker as tsm tsm.init() # Import transformers AutoModelForCausalLM class. from transformers import AutoModelForCausalLM # Import the SMP-implementation of MoE configuration class. from torch.sagemaker.moe.moe_config import MoEConfig # Define a transformer model with an MoE model configuration model = AutoModelForCausalLM.from_config(MoEModelConfig) # Wrap it by torch.sagemaker.transform with the SMP MoE configuration. model = tsm.transform( model, config=MoEConfig( smp_moe=True, random_seed=12345, moe_load_balancing="sinkhorn", global_token_shuffle=False, moe_all_to_all_dispatcher=True, moe_aux_loss_coeff=0.001, moe_z_loss_coeff=0.001 ) )

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 "expert_parallel_degree": 8 }