llama.cpp auf zwei bis vier GPUs: split-mode layer, row und tensor mit NVIDIA RTX PRO
Eurokommerz, Wien, seit 2006: Private AI/ML · IT Managed Services · Enterprise Training · KI-Hardware & Software
--split-modevon llama.cpp kennt mit Build b11829 vom 22. Oktober 2026 vier Werte: none, layer (Standard, eine Pipeline aus Schichten und KV-Cache), row und tensor, das die README als experimentell kennzeichnet--tensor-splitlegt den Anteil jeder GPU am Modell als Verhältnis fest, etwa 3,1;--main-gpuwählt im Modus none die eine GPU, im Modus row die GPU für Zwischenergebnisse und KV-Cache- Im Pull Request, der den Modus tensor einführte, erzeugten vier RTX 4090 an PCIe 4.0 x16 mit einem Llama 70B in Q4_K_M 48,31 Token pro Sekunde mit tensor und 21,25 mit layer; die Prompt-Verarbeitung war mit tensor 9 Prozent langsamer
- Nach unserer Regel für Nutzer je Karte halten zwei RTX PRO 6000 Max-Q Llama 3.3 70B in Q8_0 (74,9 GB) mit 16-Bit-Cache für 38 Gespräche zu 8K; vier RTX PRO 5000 72 GB halten es für 70
- llama.cpp passt zu GGUF-Dateien, CPU-Offload und wenigen Nutzern; für einen Team-Endpunkt mit vielen gleichzeitigen Anfragen planen wir vLLM mit Tensor-Parallel-Paaren
Geliefert von Eurokommerz: NVIDIA RTX PRO 6000 Blackwell Preis und Verfügbarkeit anfragen →
Wie llama.cpp ein Modell auf mehrere GPUs verteilt
llama.cpp verteilt ein GGUF-Modell mit --split-mode auf mehrere NVIDIA-GPUs. Der Standard layer gibt jeder Karte einen Teil der Schichten samt KV-Cache und lässt die Karten nacheinander als Pipeline rechnen; row und der neuere Modus tensor teilen jede Gewichtsmatrix, sodass die Karten parallel rechnen. Ohne NVLink, wie bei allen RTX-PRO-Blackwell-Karten, schickt layer am wenigsten über PCIe, und tensor ist der Modus, der ein einzelnes Gespräch schneller machen kann.
Die Parameter unten stammen aus der README von llama-server auf GitHub, gelesen am 24. Oktober 2026; der neueste Release war Build b11829 vom 22. Oktober. llama.cpp veröffentlicht nummerierte Builds statt Versionen, mehrere am Tag, daher können sich Parameter und Standardwerte von Build zu Build ändern; prüfen Sie llama-server --help auf dem Build, den Sie betreiben.
| PARAMETER | WIRKUNG | STANDARD |
|---|---|---|
-sm none | nur eine GPU verwenden | |
-sm layer | Schichten und KV-Cache teilen, als Pipeline | Standard |
-sm row | Gewichte zeilenweise teilen, parallel | |
-sm tensor | Gewichte und KV-Cache teilen, parallel | experimentell |
-ts 3,1 | Anteil des Modells je GPU, als Verhältnis | |
-mg 0 | die GPU im Modus none; KV und Zwischenergebnisse im Modus row | 0 |
-dev | kommagetrennte Liste der GPUs für das Offloading | |
-ngl | Schichten im VRAM: Zahl, auto oder all | auto |
-fit on | nicht gesetzte Parameter an den Gerätespeicher anpassen | on |
README von llama.cpp tools/server und tools/llama-bench auf GitHub, gelesen am 24. Oktober 2026; Release-Liste mit Build b11829 (22. Oktober 2026).
--fit verdient einen Hinweis. Weil es standardmäßig aktiv ist, verkleinert llama-server nicht gesetzte Werte wie die Kontextlänge, bis das Modell auf die Karten passt, bis hinunter zu --fit-ctx, standardmäßig 4.096 Token; --fit-target setzt eine Reserve in MiB je Gerät. Legen Sie auf einer gemeinsam genutzten Maschine Kontext und Zahl der Slots (-np) selbst fest, damit ein Neustart nach einem Treiber-Update den Nutzern nicht unbemerkt einen kürzeren Kontext gibt.
Layer, row und tensor: was über PCIe geht
Im Modus layer rechnet die erste Karte ihre Schichten für einen Batch von Token und übergibt das Ergebnis an die zweite, die ihre Schichten rechnet, und so weiter. Über PCIe gehen an jeder Grenze die Aktivierungen der laufenden Token, Kilobyte je Token, ein winziger Bruchteil der Gewichte; der Modus läuft daher gut über eine einfache PCIe-Verbindung und braucht keinen Peer-to-Peer-Zugriff. Der Preis: Für ein einzelnes Gespräch arbeitet immer nur eine Karte. Zwei Karten fassen ein doppelt so großes Modell, aber ein einzelner Strom erzeugt nicht schneller als auf einer Karte mit genug Speicher. Bei mehreren Gesprächen bündelt llama-server sie, und die Pipeline hält mehr als eine Karte beschäftigt; die Build-Anleitung empfiehlt CUDA_ besonders für Pipeline-Parallelität auf mehreren GPUs, um die Prompt-Verarbeitung zu beschleunigen.
Der Modus row teilt jede Gewichtsmatrix zeilenweise, sodass jede Karte einen Teil jeder Schicht rechnet; die Haupt-GPU sammelt die Ergebnisse und hält den KV-Cache. Jede Schicht braucht dann einen Austausch zwischen den Karten. Im Dreiervergleich des Pull Requests für tensor, auf zwei RTX 4090 mit einem 8B-Modell in Q4_0, war row der langsamste der drei Modi: 67,00 Token pro Sekunde bei der Generierung gegen 175,43 mit layer, und 2.997 gegen 12.551 bei der Prompt-Verarbeitung.
Der Modus tensor kam mit Pull Request 19378, Titel „backend-agnostic tensor parallelism (experimental)“. Er teilt Gewichte und KV-Cache und synchronisiert die Karten nur dort, wo die Rechnung es verlangt. Die Beschreibung, gelesen am 24. Oktober 2026, sagt, dass „only the CUDA backend has received the necessary extensions and performance optimizations“, dass NCCL „for good performance“ installiert sein sollte und dass die Funktion als experimentell und „not yet production ready“ gilt.
| MODELL, TEST | KARTEN | LAYER | TENSOR |
|---|---|---|---|
| Llama 8B F16, Generierung | 2 | 60,28 | 96,63 |
| Llama 8B F16, Prompt (pp512) | 2 | 10.624,32 | 8.119,05 |
| gpt-oss 20B MXFP4, Generierung | 2 | 260,27 | 269,68 |
| Llama 70B Q4_K_M, Generierung | 4 | 21,25 | 48,31 |
| Llama 70B Q4_K_M, Prompt (pp512) | 4 | 1.439,14 | 1.313,79 |
| gpt-oss 120B MXFP4, Prompt (pp512) | 4 | 3.822,24 | 5.446,21 |
llama.cpp Pull Request 19378, Beschreibung gelesen am 24. Oktober 2026; Token pro Sekunde mit llama-bench, gemessen vom Autor des Pull Requests auf GeForce RTX 4090, „All GPUs are connected via 16x PCIe 4.0“. Generierung ist tg128, Prompt-Verarbeitung pp512.
Der Autor fasst zusammen, tensor „works comparatively better for slow GPUs with fast interconnect running large, dense models“ und schlechter bei schnellen GPUs an langsamen Verbindungen mit kleinen Modellen. Die 70B-Zeile zeigt den Gewinn für ein dichtes Modell, die Zeile zu gpt-oss 20B, wie wenig ein kleines Mixture-of-Experts-Modell gewinnt. Eine veröffentlichte llama.cpp-Messung der Split-Modi auf RTX-PRO-Blackwell-Karten mit ihren PCIe-5.0-Anbindungen haben wir nicht gefunden; lesen Sie die Werte der Consumer-Karten daher als Richtung des Effekts, nicht als Prognose für Ihre Workstation.
Grenzen des Modus tensor im Oktober 2026
Der Pull Request nennt die Bedingungen, unter denen tensor heute läuft:
- FlashAttention muss aktiviert und die Quantisierung des KV-Caches deaktiviert sein, der Cache bleibt also in f16 oder bf16
--fitund Backend-Sampling sind nicht umgesetzt, und der Speicherverbrauch ist wegen Überallokationen ineffizient; lassen Sie auf jeder Karte Reserve- ein VRAM-Leck durch CUDA-Graphen, die fortlaufend erzeugt, aber nie freigegeben werden
- 23 Architekturen gelten als „definitely broken“, darunter deepseek2, mamba, mamba2, olmoe und t5
- beliebig viele GPUs, bis 16; ROCm läuft über HIP, Vulkan läuft technisch nur bei kurzen Kontexten und langsam, andere Backends gelten als nicht nutzbar
Für einen produktiven Dienst, der monatelang laufen soll, würden wir heute layer einplanen und tensor auf demselben Build in einem Testlauf mit Ihrem eigenen Modell ausprobieren. Ein Modell, dessen Architektur auf der Liste steht, bleibt bei layer.
Peer-to-Peer-Zugriff zwischen den Karten
Das CUDA-Backend von llama.cpp kopiert Daten zwischen GPUs über den Systemspeicher, solange kein Peer-to-Peer-Zugriff aktiviert ist. Laut Build-Anleitung lässt sich dieser mit der Umgebungsvariablen GGML_CUDA_P2P einschalten; er braucht Treiberunterstützung, meist auf Workstation- oder Rechenzentrums-GPUs, und kann auf manchen Mainboards und BIOS-Einstellungen, etwa mit aktiver IOMMU, zu Abstürzen oder fehlerhaften Ausgaben führen. Ein veröffentlichter Test zeigte P2P zwischen zwei RTX PRO 6000 Workstation Edition; ob es in einer bestimmten Maschine funktioniert, hängt von IOMMU und ACS ab, die unser Leitfaden zu RTX PRO 6000 P2P unter Linux mit nvidia-smi topo -m, NVIDIAs simpleP2P-Beispiel und nccl-tests durchgeht. layer braucht P2P kaum; tensor, das in jeder Schicht Daten austauscht, profitiert davon und von NCCL.
Wir bauen Workstations und Server mit zwei bis vier RTX-PRO-Karten und installieren auf Wunsch Linux, Treiber und CUDA; schicken Sie uns Ihre GGUF-Modelle und die Zahl der Nutzer, und unser Team antwortet mit einer Konfiguration und einem Split-Modus für den Start.
Speicherbedarf: welche GGUF-Dateien auf zwei oder vier Karten passen
llama.cpp reserviert keinen festen Speicheranteil wie vLLM, die Karten brauchen aber trotzdem Platz für CUDA-Laufzeit, Rechenpuffer und Cache. Wir planen mit unserer Regel für Nutzer je Karte: 90 Prozent des vom Treiber gemeldeten Speichers, abzüglich 3 GiB je Karte, abzüglich der Gewichte. Das ergibt 83,0 GiB auf einer RTX PRO 6000 Max-Q mit 96 GB und 61,5 GiB auf einer RTX PRO 5000 mit 72 GB, skaliert von den 95,6 GiB, die eine 96-GB-Karte meldet. Die Dateigrößen stammen aus den Dateilisten auf Hugging Face.
| GGUF-DATEI | GRÖSSE | 2 × RTX PRO 6000 MAX-Q | 4 × RTX PRO 5000 72 GB |
|---|---|---|---|
| Llama 3.3 70B, Q4_K_M | 42,5 GB | 17 je Karte als zwei Kopien, oder 50 verteilt | 8 je Karte als vier Kopien, oder 82 verteilt |
| Llama 3.3 70B, Q8_0 | 74,9 GB | 38, über beide verteilt | 21 je Paar, oder 70 über alle vier |
| gpt-oss-120b, MXFP4 | 63,4 GB | 21 zu 32K je Karte, je eine Kopie | 56 zu 32K je Kartenpaar |
Unsere Schätzung nach der Regel für Nutzer je Karte mit 16-Bit-KV-Cache: Gespräche zu 8.192 Token mit je 2,5 GiB für Llama 3.3 70B, zu 32.768 Token mit je 1,125 GiB für gpt-oss-120b. Dateigrößen aus bartowski/Llama-3.3-70B-Instruct-GGUF (Q8_0 in zwei Teilen zu 39,9 und 35 GB) und ggml-org/gpt-oss-120b-GGUF, gelesen am 24. Oktober 2026.
Die Rechnung für eine Zeile: Zwei Max-Q ergeben 2 × 83,04 = 166,1 GiB; die Q8_0-Gewichte mit 74,9 GB sind 69,8 GiB, es bleiben 96,3 GiB oder 38 Gespräche zu 8K mit je 2,5 GiB. Auf einer einzelnen RTX PRO 5000 mit 72 GB lässt gpt-oss-120b nur 2,5 GiB übrig, Cache für zwei lange Gespräche; auf dieser Karte gehört es daher auf ein Paar. Der kleine Cache der Sliding-Window-Schichten von gpt-oss ist nicht eingerechnet. --cache-type-k von llama-server akzeptiert unter anderem q8_0 und q4_0, um den Cache zu verkleinern, im Modus tensor jedoch nicht.
Passt ein Modell auf eine Karte, teilen Sie es nicht. Zwei llama-server-Prozesse, jeweils mit -sm none und eigener GPU über CUDA_ oder -dev gestartet, ergeben zwei unabhängige Kopien ohne Verkehr zwischen den Karten; ein dritter Prozess auf einem anderen Port kann ein zweites Modell bedienen. gpt-oss-120b auf zwei Max-Q ist der klare Fall: Eine Kopie je Karte hält jeweils 21 Gespräche, und fällt eine Karte aus, antwortet die andere weiter. Unsere Seiten zu 2× RTX PRO 6000 Max-Q in einer Workstation und 4× RTX PRO 5000 72 GB behandeln diese Systeme für vLLM.
Tempo für ein Gespräch, nach unserer Schätzung
Die Token-Generierung liest die Gewichte einmal je Token, daher setzt die Speicherbandbreite eine Obergrenze. Im Modus layer lesen die Karten ihre Teile nacheinander, ein Gespräch sieht die Bandbreite einer Karte; im Modus tensor lesen sie parallel, vor den Kosten der Synchronisation.
| MODELL | KARTEN | LAYER, OBERGRENZE | TENSOR, OBERGRENZE |
|---|---|---|---|
| Llama 3.3 70B Q8_0 | 2 × RTX PRO 6000 Max-Q | rund 24 Token/s | rund 48 Token/s |
| Llama 3.3 70B Q8_0 | 4 × RTX PRO 5000 72 GB | rund 18 Token/s | rund 72 Token/s |
| Llama 3.3 70B Q4_K_M | 2 × RTX PRO 6000 Max-Q | rund 42 Token/s | rund 84 Token/s |
Unsere Schätzung: 74,9 oder 42,5 GB je Token gelesen, geteilt durch 1.792 GB/s je Max-Q oder 1.344 GB/s je RTX PRO 5000 (NVIDIA-Produktseiten), für tensor mal der Zahl der Karten. Obergrenzen, keine Messungen; reale Werte liegen darunter, und tensor verliert einen Teil des Gewinns an den Austausch über PCIe.
Der Vier-Karten-Wert im Pull Request, 48,31 gegen 21,25 Token pro Sekunde für ein 70B in Q4_K_M, also Faktor 2,3 bei einer Obergrenze von 4, zeigt, wie viel des Gewinns die Synchronisation über PCIe 4.0 kostete. Für ein dichtes 70B-Modell, das jeweils eine Person nutzt, ist tensor die Einstellung, die sich spürbar auswirkt; gpt-oss-120b liest je Token nur seine aktiven Experten, eine Kopie auf einer Karte ist schon schnell, und Aufteilen bringt weniger.
Modelle größer als der GPU-Speicher: Experten im Systemspeicher
llama.cpp kann einen Teil des Modells im Systemspeicher halten, was vLLM anders löst. --cpu-moe hält alle Mixture-of-Experts-Gewichte auf der CPU, --n-cpu-moe N die der ersten N Schichten; --override-tensor platziert Tensoren nach Namensmuster. Attention-Schichten und gemeinsame Gewichte bleiben auf den GPUs, wo sie für jedes Token gelesen werden, und die Experten kommen aus dem DDR5 mit der Geschwindigkeit der Speicherkanäle des Prozessors. Damit wird ein Mixture-of-Experts-Modell, das größer ist als der gesamte GPU-Speicher, für eine oder zwei Personen nutzbar, wenn auch langsam. Unser Leitfaden zum MoE-Experten-Offload mit KTransformers geht ein solches Offload für Kimi durch, und Gesamt- und aktive Parameter erklärt, warum es funktioniert; die Build-Anleitung beschreibt außerdem GGML_ unter Linux, womit das CUDA-Backend bei vollem VRAM in den Systemspeicher auslagert, statt abzubrechen.
llama.cpp für RTX PRO Blackwell bauen
RTX-PRO-Blackwell-Karten haben in NVIDIAs Liste der CUDA-GPUs die Compute Capability 12.0. Build b11829 liefert Ubuntu-Binärdateien für CUDA 12.8 und CUDA 13.4, und der CUDA-Build der Anleitung lautet cmake -B build -DGGML_CUDA=ON, gefolgt von cmake --build build --config Release, mit CMAKE_ auf die Compute Capability Ihrer Karte gesetzt, wenn nvcc sie nicht erkennt. NCCL, das tensor nutzen will, ist eine eigene NVIDIA-Bibliothek, die neben CUDA installiert wird.
Zwei Einstellungen der Build-Anleitung betreffen die FP4-Tensor-Cores von Blackwell. GGML_ legt die Genauigkeit der Aktivierungen für NVFP4- und MXFP4-Matrixmultiplikationen fest: q4 behält den nativen W4A4-Pfad, der Prompts schneller verarbeitet, mit etwas Genauigkeitsverlust, q8 nutzt W4A8 für jede Schicht. gpt-oss-120b erscheint in MXFP4, die Einstellung betrifft also auch dieses Modell. Welcher Treiberzweig CUDA 13 mitbringt, erklärt unser Leitfaden zu NVIDIA-Treiberzweigen und CUDA-Versionen.
Die Modi auf der eigenen Maschine vergleichen
llama-bench, das mit llama.cpp kommt, nimmt je Parameter mehrere kommagetrennte Werte, sodass ein Lauf die Modi vergleicht: -sm layer,tensor mit -fa on misst beide am selben Modell, -p 512 -n 128 legt Prompt- und Generierungslänge fest, und -d fügt eine Kontexttiefe hinzu, sodass sich der Vergleich bei 8K oder 32K Kontext wiederholen lässt. Führen Sie ihn mit dem Build, dem Treiber und den Leistungsgrenzen aus, die Sie produktiv nutzen. Mit CUDA_ begrenzen Sie die GPUs eines Laufs und sehen so auch, wie ein Paar gegenüber allen vier Karten abschneidet.
Wann vLLM die bessere Engine ist
llama-server bündelt die Anfragen seiner Slots fortlaufend und bedient mit layer ein kleines Team gut. Für einen Endpunkt mit Dutzenden gleichzeitigen Anfragen zählen ein seitenweise verwalteter KV-Cache, Prefix-Caching und Tensor-Parallel-Kernel mehr, und dafür planen wir vLLM oder SGLang ein, wie unser Vergleich von vLLM, SGLang, TensorRT-LLM, llama.cpp und Ollama erklärt. Auf Karten ohne NVLink bevorzugt die Anleitung von vLLM Pipeline- statt Tensor-Parallelität; auf RTX PRO 6000 behalten TP=2-Paare das eigene All-Reduce von vLLM, das es bei mehr als zwei reinen PCIe-GPUs standardmäßig abschaltet, wie RTX PRO 6000 ohne NVLink ausführt. vLLM 0.30.0 (Release Notes vom 22. September 2026) brachte für Systeme ohne NVLink ein optional einschaltbares FlashInfer-PCIe-IPC-All-Reduce (#53576).
| SITUATION | ENGINE | AUFTEILUNG |
|---|---|---|
| Modell passt auf eine Karte, wenige Nutzer | llama.cpp | -sm none, ein Prozess je Karte |
| dichtes 70B, ein bis zwei Nutzer gleichzeitig | llama.cpp | -sm tensor, auf Ihrem Build getestet |
| Modell größer als eine Karte, kleines Team | llama.cpp | -sm layer |
| MoE-Modell größer als der gesamte VRAM | llama.cpp | layer, Experten auf der CPU |
| Team-Endpunkt, 20 und mehr Anfragen gleichzeitig | vLLM oder SGLang | TP=2-Paare oder Kopien |
Unsere Empfehlung auf Grundlage der README von llama.cpp, des Pull Requests 19378 und der Parallelisierungsanleitung von vLLM, Stand Oktober 2026.
Ollama, aufgebaut auf der GGML-Bibliothek von llama.cpp, entscheidet die Aufteilung selbst: Es legt ein Modell auf eine GPU, wenn es dort passt, und verteilt es sonst auf alle, ohne Wahl des Split-Modus.
Was wir liefern
Wir liefern die RTX PRO 6000 Max-Q und Workstation Edition, die RTX PRO 5000 mit 48 und 72 GB sowie die RTX PRO 4500 und 4000 und bauen Workstations mit zwei bis vier Karten auf Bestellung, auf Wunsch mit Linux, Treiber, CUDA und Container-Laufzeit, wie unsere Seite zu KI-Servern angibt. Für einen gemeinsam genutzten Dienst bauen wir Server mit RTX PRO 6000 Server Edition. Modell, Serving-Engine und Plattform darüber sind unser Service Private AI/ML; beschreiben Sie Modelle, Nutzer und den Zugang zur Maschine, und wir schlagen System und Engine vor.
FAQ
Wie nutzt llama.cpp mehrere GPUs?
--split-mode. Der Standard layer teilt die Schichten samt KV-Cache auf die GPUs auf und lässt sie als Pipeline laufen; row teilt jede Gewichtsmatrix zeilenweise; tensor, mit Build b11829 vom Oktober 2026 experimentell, teilt Gewichte und KV-Cache und rechnet parallel; none nutzt eine GPU. --tensor-split legt den Anteil jeder GPU fest.Was ist der Unterschied zwischen split-mode layer, row und tensor?
Braucht llama.cpp NVLink oder P2P für mehrere GPUs?
GGML_CUDA_P2P eingeschaltet und hilft zusammen mit NCCL dem Modus tensor; die Build-Anleitung warnt vor Abstürzen oder fehlerhaften Ausgaben auf manchen Mainboards mit aktiver IOMMU.Was macht --tensor-split in llama.cpp?
3,1 legt zum Beispiel drei Viertel auf die erste GPU. Das hilft, wenn Karten unterschiedlich viel Speicher haben oder eine Karte zusätzlich Monitore oder einen anderen Prozess bedient.Wie viele GPUs brauche ich für Llama 3.3 70B in llama.cpp?
Ist llama.cpp oder vLLM auf mehreren GPUs besser?
Wir bauen Workstations und Server mit zwei bis vier RTX-PRO-Karten und richten sie für llama.cpp oder vLLM ein. Beschreiben Sie Ihre Aufgabe in wenigen Sätzen, unser Team hilft Ihnen weiter. Wir antworten innerhalb eines Werktages. Das erste Gespräch ist kostenlos.
Mit einem Experten sprechenWir antworten innerhalb eines Werktages