Kurzfassung
Verwenden Sie Tensor-Parallelismus bei mehreren GPUs auf einem einzelnen Knoten. Nutzen Sie Pipeline-Parallelismus für mehrere Knoten. Diese Regel gilt für die meisten Konfigurationen.
Erläuterung zum Tensor-Parallelismus
Beim Tensor-Parallelismus werden die Gewichtsmatrizen jeder Schicht auf mehrere GPUs aufgeteilt. Während einer Vorwärtspropagation berechnet jede GPU einen Teil der Matrixmultiplikation gleichzeitig; anschließend erfolgt die Synchronisation über ein Hochgeschwindigkeits-Interconnect wie NVLink, PCIe oder InfiniBand.- Jede GPU verwaltet jeweils einen Teil jedes Layers.
- Alle GPUs arbeiten bei jedem Token aktiv mit.
- Voraussetzung ist ein Hochgeschwindigkeits-Interconnect, etwa NVLink statt PCIe.
- Zwar entsteht dadurch pro Layer zusätzlicher Synchronisationsaufwand, doch bleibt die Latenz pro Token gering.
- vLLM bezeichnet dies als
--tensor-parallel-size
Erläuterung zur Pipeline-Parallelisierung
Bei der Pipeline-Parallelisierung werden verschiedene Layers auf unterschiedliche GPUs verteilt. GPU 0 verwaltet die Layers 0 bis 15; GPU 1 übernimmt die Layers 16 bis 31. Der Vorwärts-Durchlauf verläuft wie auf einer Fließbandlinie: GPU 0 verarbeitet die Eingabedaten und leitet die Aktivierungen an GPU 1 weiter, welche die Verarbeitung fortsetzt.- Jede GPU verwaltet ein zusammenhängendes Bündel an Layers.
- Zu jedem Zeitpunkt ist lediglich 1 GPU pro Token aktiv; die übrigen verbleiben inaktiv oder bearbeiten andere Tokens.
- Auch langsamere Interconnects stellen kein Problem dar, da die Aktivierungen kleiner sind als vollständige Gewichtsmatrizen.
- Es werden Pausen im Verarbeitungsablauf eingefügt, wodurch die Auslastung verringert wird.
- vLLM bezeichnet dies als
--pipeline-parallel-size
Entscheidungsmatrix
Beantworten Sie folgende Fragen, um die passende Strategie zu wählen:-
Passt das Modell auf eine einzige 1-GPU?
- Ja → es ist keine Parallelisierung erforderlich. Falls mehr Durchsatz benötigt wird, empfiehlt sich die Nutzung von Daten-Parallelismus.
- Nein → fahren Sie fort.
-
Befinden sich alle GPUs auf demselben Rechner?
- Ja → Tensor-Parallelismus (geringere Latenz sowie höherer Decodier-Durchsatz).
- Nein → fahren Sie fort.
-
Sind die GPUs auf mehr als 2 Rechnern verteilt?
- Ja → Pipeline-Parallelismus über mehrere Knoten hinweg. Falls jeder Knoten über 2+ GPUs verfügt, sollte TP innerhalb jedes Knotens sowie PP zwischen den Knoten eingesetzt werden.
-
Handelt es sich um ein sehr großes Modell (405B+)?
- Ja → hybride Methode aus TP und PP. Beispiel: TP=2 auf jedem DGX Spark, PP=2 über insgesamt 2 Sparks.
Empfehlungen je nach Hardware
Dataparallelismus sowie Expertenparallelismus
Zwei weitere Strategien sind in bestimmten Szenarien von Bedeutung: Datenparallelität (DP) – Hierbei wird das gesamte Modell auf jeder GPU repliziert und eingehende Anfragen auf diese verteilt. Diese Methode eignet sich, wenn das Modell bereits auf 1 GPUs Platz findet und Sie mehr gleichzeitige Nutzer bedienen möchten. vLLM unterstützt dies von Haus aus; starten Sie einfach mehrere Instanzen hinter einem Lastverteiler. Expertenparallelismus (EP) – speziell für MoE-Modelle gedacht. Verschiedene GPUs verwalten jeweils unterschiedliche Expertengruppen. Sobald ein Token an einen bestimmten Experten weitergeleitet wird, gelangt die Aktivierung zur zuständigen GPU. Diese Strategie ist sinnvoll bei sehr großen MoE-Modellen, bei denen der reine TP-Ansatz Speicherplatz verschwendet, da inaktive Experten ebenfalls gespeichert werden müssen.Beispiele für Konfigurationen
vLLM in Kombination mit Tensor Parallelism
vLLM mit Pipeline-Parallelismus
Hybride Tensor-Parallelität sowie Pipeline-Parallelismus (für große Modelle auf mehreren Knoten)
Für ein 405B-Modell auf 2 DGX Spark-Systemen (Tensor-Parallelität innerhalb jedes Knotens, Pipeline-Parallelismus zwischen den Knoten):SGLang mit Tensor-Parallelismus
SGLang erzielt bei bestimmten Arbeitslasten auf Systemen mit zwei GPUs vergleichbare Ergebnisse wie vLLM:NCCL-Umgebungsvariablen
Zur Kommunikation zwischen mehreren GPUs müssen diese Variablen vor dem Start gesetzt werden:Auf DGX Spark-Clustern, die über 200 Gigabit/s schnelle QSFP-Verbindungen vernetzt sind, wählt NCCL automatisch den optimalen Übertragungsweg. In der Regel ist es nicht nötig,
NCCL_IB_DISABLE oder NCCL_SOCKET_IFNAME manuell zu ändern – außer bei der Fehlerbehebung bezüglich der Netzverbindung.Leistungsvergleich
Basierend auf Community-Benchmarks für dense Modelle der 70B-Klasse:Wann man auf Parallelität verzichten sollte
Nicht jede Konfiguration profitiert von der Aufteilung auf mehrere GPUs:- Das Modell passt problemlos auf 1 GPU – Parallelisierung erzeugt jedoch zusätzlichen Overhead. Nutzen Sie stattdessen 1 GPU und wenden Sie Datenparallelität an, um die Durchsatzrate zu erhöhen.
- Kleine Modelle (7B–13B) auf Consumer-GPUs – Der Synchronisationsaufwand bei Tensor Parallelism kann dazu führen, dass 2× GPU langsamer arbeitet als 1× GPU bei kleinen Modellen. SGLang weist in solchen Fällen deutliche Leistungseinbußen auf.
- Inferenz für einen einzelnen Nutzer – Sofern das Modell überhaupt auf einer GPU Platz findet, ist die Nutzung von 1 GPU meist einfacher und schneller.
- Netzwerkgeschwindigkeit unterhalb von 10 GbE zwischen Knoten – Bei langsamen Verbindungen kommt es zu Engpässen bei der Pipeline-Parallelisierung. In solchen Fällen sollte zuerst das Netzwerk verbessert werden.
Behebung häufig auftretender Probleme
Speicherüberlauf bei mehrfacher GPU-Nutzung mit vLLM
vLLM reserviert reichlich Speicher für CUDA-Graphen sowie KV-Cache. Auf 2× RTX 3090 (Gesamtspeicher 48 GB) kann ein 32B-Modell zu einem Speicherüberlauf führen, obwohl Ollama damit problemlos umgeht. Reduzieren Sie--gpu-memory-utilization vom Standardwert 0.90:
Fehler bei NCCL-Verbindungen
Falls GPUs nicht miteinander kommunizieren können, prüfen Sie Folgendes:nvidia-smi topo -m– Überprüfen Sie die NVLink- bzw. PCIe-TopologieNCCL_DEBUG=INFO– Stellen Sie fest, welchen Übertragungsweg NCCL wählt- Firewall-Regeln für Port 29500 (der Standard-Port für NCCL-Rendezvous)
Gemischte GPU-Typen
vLLM unterstützt heterogene GPU-Konfigurationen; doch die Leistung wird durch die langsamste GPU begrenzt. Zur Erzielung optimaler Ergebnisse empfiehlt es sich, identische GPUs zu verwenden. Bei gemischten Konfigurationen sollten mehr Schichten der schnelleren GPU zugewiesen werden, indem man die Pipeline-Parallelität mit ungleicher Verteilung der Phasen nutzt.Multi-GPU-Deployments über Tokios bereitstellen
Unabhängig davon, ob Sie TP, PP oder beides nutzen, stellt Ihr vLLM- oder SGLang-Server ein OpenAI-kompatibles/v1 API auf dem lokalen Rechner bereit. Starten Sie den Tokios-Connector auf derselben Maschine, wird Ihre Deployment-Instanz von jedem Gerät, Agenten oder Teammitglied erreichbar – ohne dass eingehende Ports geöffnet werden müssen.
Weitere Schritte
Modell-Bereitstellung und Skalierung
Verstehen Sie, wie Inferenz-Engines Speicher, Batching sowie KV-Caches verwalten.
Anwendungsfall für DGX Spark
Richten Sie Tokios auf einem DGX Spark- oder einem 2-Spark-Cluster ein.
Fernzugriff auf vLLM
Stellen Sie Ihren vLLM-Server von überall aus sicher zur Verfügung.
Leitfaden zur Quantisierung
Verkleinern Sie Modelle, damit sie auf weniger GPUs passen, bevor Sie auf Parallelverarbeitung zurückgreifen.