Glossar · Modelle und Inferenz
Wissensstufe: FortgeschrittenTensor Parallelism
Tensor Parallelism teilt die Gewichtsmatrizen jeder Schicht eines Modells auf mehrere GPUs auf, die ihren Anteil derselben Rechnung gleichzeitig ausführen.
Auch: Tensorparallelismus, TP, TP = 4
Einfach erklärt
Stellen Sie sich eine Rechenaufgabe auf einem sehr großen Blatt vor, das auf keinen Schreibtisch passt. Sie schneiden das Blatt in vier Streifen, vier Personen rechnen gleichzeitig je einen Streifen, und am Ende werden die Teilergebnisse zu einer Lösung zusammengelegt. So geht Tensor Parallelism mit einem Sprachmodell um.
Was technisch passiert
Ein Transformer-Modell besteht aus vielen hintereinander liegenden Schichten, und jede Schicht rechnet im Kern mit großen Matrizen. Tensor Parallelism teilt die Arbeit innerhalb einer Schicht auf; im Megatron-LM-Paper, das diesen Ansatz für Transformer-Modelle beschreibt, heißt das Intra-Layer-Modellparallelität. Jede beteiligte GPU, in diesem Zusammenhang ein Rank genannt, speichert nur ihren Teil der Gewichte und rechnet mit diesem Teilstück.
Weil jeder Rank nur einen Ausschnitt des Ergebnisses kennt, müssen die Teile wieder zusammengeführt werden. Die Autoren von Megatron-LM beschreiben, dass dafür wenige zusätzliche Kommunikationsoperationen genügen, und nennen den Ansatz ausdrücklich ergänzend zu Pipeline Parallelism. Ausgeführt werden diese Abgleiche als Kollektivoperationen wie All-Reduce und All-Gather, etwa durch eine Bibliothek wie NCCL.
Der Abgleich ist kein einmaliger Vorgang pro Anfrage. Er wiederholt sich beim Erzeugen der Antwort Schritt für Schritt, weshalb die Verbindung zwischen den Ranks die Antwortzeit unmittelbar mitbestimmt. Die Angabe TP = 4 bezeichnet den Grad der Aufteilung: vier Ranks teilen sich jede Schicht. Serving-Engines wie SGLang setzen diesen Grad über einen Startparameter; ihre Dokumentation zeigt Tensor Parallelism auch über mehrere Rechner hinweg.
In der Praxis
Im Forschungsaufbau von AI SolutionX läuft Tensor Parallelism mit TP = 4 über vier NVIDIA DGX Spark mit je einem GB10. Jedes System bringt 128 GB Unified Memory mit; erst die Aufteilung macht die zusammen 512 GB für ein einzelnes Modell nutzbar, dessen Gewichte auf keinem Einzelsystem Platz hätten. Die Ranks tauschen ihre Zwischenergebnisse über RoCE aus, mit 200-Gbit-Verbindungen je Pfad und einem 400-Gbit-Switch. SGLang übernimmt die Verteilung und stellt den Verbund als einen OpenAI-kompatiblen Endpunkt bereit, sodass Anwendungen von der Aufteilung nichts mitbekommen.
Wann ist das sinnvoll?
- Wenn die Gewichte eines Modells den Speicher einer einzelnen GPU oder eines einzelnen Systems übersteigen.
- Wenn ein großes Modell lokal laufen soll und eine Cloud-API aus Datenschutzgründen ausscheidet.
- Wenn die Verbindung zwischen den Systemen schnell genug ist, damit die ständige Synchronisation nicht jeden Gewinn aufzehrt.
- Weniger naheliegend ist es, wenn ein Modell bereits auf ein System passt: dann sind mehrere unabhängige Instanzen meist die einfachere Lösung.
Nicht verwechseln mit
- Data Parallelism
- Bei Data Parallelism hält jede GPU eine vollständige Kopie des Modells und bearbeitet andere Daten. Das hilft bei der Menge der Anfragen, aber nicht, wenn das Modell gar nicht in eine GPU passt.
- Pipeline Parallelism
- Pipeline Parallelism verteilt ganze Schichten nacheinander auf Geräte, jedes rechnet seinen Abschnitt und reicht weiter. Tensor Parallelism zerlegt dagegen jede einzelne Schicht und lässt alle Geräte gleichzeitig daran arbeiten.
Quellen
Fachlich geprüft am · Alle Begriffe im Glossar