Expert Parallelism
Expertenparallelität verteilt die Experten von Mixture-of-Experts-Schichten auf mehrere GPUs und leitet jedes Token mithilfe von All-to-all-Kommunikation an sie weiter.
Expertenparallelisierung (EP) ist ein Verfahren für verteiltes Training und Inferenz von Mixture-of-Experts-Modellen (MoE). Dabei werden verschiedene Experten auf unterschiedliche GPUs verteilt. Jedes Token wird an die Geräte gesendet, auf denen sich die dafür ausgewählten Experten befinden. Eine MoE-Schicht ersetzt einen großen Feedforward-Block eines Transformers durch viele kleinere Expertennetze sowie einen Router, der für jedes Token nur wenige Experten aktiviert. Dadurch kann die Gesamtzahl der Parameter deutlich schneller wachsen als der Rechenaufwand pro Token. Expertenparallelisierung sorgt dafür, dass diese Parameter in den Speicher passen: Statt dass jede GPU alle Experten speichert, enthält jede GPU nur einen Teil davon. Noam Shazeer und seine Kollegen bei Google verteilten bereits in ihrer spärlich gesteuerten MoE-Schicht von 2017 jeweils eine gemeinsame Kopie der Experten auf verschiedene Geräte. GShard skalierte diesen Ansatz im Juni 2020 und verteilte die Experten eines Übersetzungsmodells mit mehr als 600 Milliarden Parametern auf 2.048 TPU-v3-Beschleuniger. Expertenparallelisierung ist heute Standard beim Training und Einsatz großer Sprach- und Vision-Language-Modelle mit MoE-Architektur.
Wie Tokens zwischen GPUs übertragen werden#
Jede MoE-Schicht durchläuft vier Schritte:
- Weiterleiten: Der Router bewertet jedes Token für jeden Experten und wählt die Top-k-Experten aus, meist einen, zwei oder acht.
- Weiterleitung: Eine kollektive All-to-all-Kommunikation sendet den verborgenen Zustand jedes Tokens an die GPUs, auf denen die ausgewählten Experten liegen.
- Berechnen: Jede GPU verarbeitet die empfangenen Tokens mit ihren lokalen Experten.
- Zusammenführen: Eine zweite All-to-all-Operation sendet die Ausgaben an die ursprüngliche GPU jedes Tokens zurück. Dort werden sie mit den Router-Werten gewichtet und summiert.
Der folgende Ausschnitt simuliert die Schritte Weiterleitung und Verteilung für eine Schicht mit acht Experten auf vier GPUs, also zwei Experten pro GPU:
import torch
torch.manual_seed(0)
num_experts, num_gpus, top_k = 8, 4, 2
tokens = torch.randn(4096, 512) # # Verborgene Zustände für 4.096 Tokens
router = torch.nn.Linear(512, num_experts)
# # Weiterleitung: Jedes Token wählt die beiden Experten mit den höchsten Router-Werten
with torch.no_grad():
_, experts = router(tokens).topk(top_k, dim=-1)
# # Expertenparallelismus: Die Experten 0–1 befinden sich auf GPU 0, Experten 2–3 auf GPU 1 und so weiter
gpu = experts // (num_experts // num_gpus)
# # Verteilung: Zähle die Token-Experten-Zuweisungen, die jeder Experte und jede GPU erhält
print(torch.bincount(experts.flatten(), minlength=num_experts).tolist())
print(torch.bincount(gpu.flatten(), minlength=num_gpus).tolist())Die erste Ausgabezeile zeigt die Auslastung jedes Experten: 948 bis 1.087 Zuweisungen gegenüber einem gleichmäßigen Anteil von 1.024. Die zweite Zeile zeigt, dass die vier GPUs jeweils 1.968 bis 2.139 der insgesamt 8.192 Zuweisungen erhalten. Selbst ein zufällig initialisierter Router verteilt die Arbeit ungleichmäßig. Trainierte Router entwickeln beliebte Experten, wodurch die Auslastung noch stärker verzerrt wird.
Lastausgleich und Kapazität#
Eine Schicht ist erst fertig, wenn die am stärksten ausgelastete GPU fertig ist. Eine unausgewogene Weiterleitung führt daher direkt zu ungenutzter Hardware. Beim MoE-Training wird dem auf drei Arten entgegengewirkt:
- Zusätzlicher Ausgleichsverlust: Ein zusätzlicher Term in der Verlustfunktion belohnt den Router dafür, Tokens gleichmäßig auf die Experten zu verteilen.
- Kapazitätsfaktor: Jeder Experte akzeptiert pro Batch höchstens eine festgelegte Anzahl von Tokens, zum Beispiel das 1,25-Fache seines gleichmäßigen Anteils. Überschüssige Tokens überspringen diesen Experten.
- Ausgleich über Bias-Werte: DeepSeek-V3 ergänzt die Router-Werte um einen Bias für jeden Experten, der nur beeinflusst, welche Experten ausgewählt werden. Nach jedem Schritt wird der Bias für überlastete Experten gesenkt und für ungenutzte erhöht. So wird die Auslastung ausgeglichen, ohne dass ein zusätzlicher Verlustterm mit dem Hauptziel konkurriert.
Bei einer Kapazitätsgrenze hängt der Pfad jedes Tokens davon ab, wie stark seine Experten ausgelastet sind:
Ein übersprungenes Token durchläuft die Schicht unverändert über die Residualverbindung. Viele verworfene Tokens beeinträchtigen daher die Qualität. DeepSeek-V3 verwirft beim Training keine Tokens, sondern setzt auf den Ausgleich über Bias-Werte.
Kommunikation verursacht zusätzliche Kosten. Die beiden All-to-all-Austausche erfolgen in jeder MoE-Schicht. Daher funktioniert Expertenparallelisierung am besten innerhalb eines Knotens, wo GPUs über schnelle NVLink-Verbindungen verfügen. Über langsamere Verbindungen zwischen Knoten wird sie dagegen teuer. DeepSeek-V3 verteilt die 256 gerouteten Experten pro Schicht mit 64-facher Expertenparallelisierung auf 8 Knoten. Jedes Token wird dabei höchstens an Experten auf 4 Knoten gesendet. Die Kommunikation wird parallel zu den Berechnungen ausgeführt.
Kombination von Parallelisierungsstrategien#
Expertenparallelisierung ist eine von mehreren Methoden, das Training auf mehrere Geräte aufzuteilen:
- Datenparallelisierung: Repliziert das vollständige Modell auf jeder GPU und verteilt jeden Batch. Nach jedem Schritt werden die Gradienten abgeglichen.
- Tensorparallelisierung: Teilt einzelne Gewichtsmatrizen auf mehrere GPUs auf, sodass jede GPU an jeder Schicht beteiligt ist.
- Pipelineparallelisierung: Weist aufeinanderfolgende Schichten unterschiedlichen GPUs zu und leitet Mikro-Batches nacheinander durch diese GPUs.
- Kontextparallelisierung: Teilt eine einzelne lange Eingabesequenz auf mehrere GPUs auf.
Dichte Modelle, die auf eine GPU passen, benötigen nichts weiter als Datenparallelismus. So trainiert Ultralytics YOLO26 auf mehreren GPUs, wenn im Trainingsmodus eine Geräteliste wie device=[0, 1] übergeben wird. Große MoE-Modelle kombinieren mehrere Verfahren: DeepSeek-V3 trainierte seine 671 Milliarden Parameter, davon 37 Milliarden pro Token aktiv, mit 16-fachem Pipeline-Parallelismus, 64-fachem Expertenparallelismus und aufgeteiltem Datenparallelismus, jedoch ohne Tensorparallelismus. Inferenz-Engines wie vLLM wenden dieselbe Aufteilung an, wenn sie ein Modell bereitstellen. So läuft ein MoE-Modell, dessen Experten den Speicher einer einzelnen GPU überlasten würden, auf mehreren GPUs, von denen jede nur ihren Anteil der Experten enthält.










