Dual AMD R9700 mit Qwen3.6-27B: ROCm schlägt Vulkan beim Prefill
Der Reddit-Nutzer akmoney betreibt ein Dual-GPU-System mit zwei AMD R9700 an einem AMD Ryzen 5900X (128 GB DDR4-3600) und testet unter Ubuntu 26.04, welches Backend von llama.cpp – ROCm oder Vulkan – für Qwen3.6-27B-Q8_0 bei einem Kontextfenster von 180.000 Token die besseren Ergebnisse liefert. Die Konfiguration nutzt MTP-Spekulation (spec-draft-n-max = 2), Q8_0-KV-Cache, Flash Attention und einen Batch-Size von 16.384. Beide GPUs laufen über PCIe x8/Gen4, was die verfügbare Bandbreite im Vergleich zu x16 halbiert. Das Kernproblem mit Vulkan: Während des Prefill arbeiten beide GPUs nie gleichzeitig – die Last pendelt zwischen ihnen hin und her, sodass immer eine GPU idle ist. ROCm sättigt beide GPUs parallel, was den Prefill-Durchsatz annähernd verdoppelt. Beim Token-Generation-Schritt dreht sich das Bild: Hier ist Vulkan minimal schneller (24,55 vs. 22,3 t/s bei TG512), weil unter ROCm nur eine GPU voll ausgelastet ist, die andere nur bei rund 40 % läuft – vermutlich jene, die KV-Cache und Kontext hält. Ein dritter Versuch mit split-mode = tensor (statt layer) gleicht die GPU-Auslastung in beiden Phasen an, führt aber zu niedrigerem PP und leicht schlechterem TG – ein Hinweis auf PCIe-Bandbreitenlimitierung. Am Ende fragt der Nutzer nach weiteren Tuning-Knöpfen und ob vLLM eine sinnvolle Alternative wäre.
- System: AMD Ryzen 5900X, 128 GB DDR4-3600, Ubuntu 26.04 – beide R9700 laufen an PCIe x8/Gen4 (nicht x16).
- Modell-Setup: ctx-size = 180.000, batch-size = 16.384, ubatch-size = 2.048, MTP-Spekulation mit spec-draft-n-max = 2 und spec-draft-p-min = 0,75.
- KV-Cache: cache-type-k und cache-type-v jeweils auf q8_0 gesetzt; cache-ram = 16.384 MB für Host-seitiges Prompt-Caching.
- split-mode = tensor egalisiert GPU-Auslastung, drückt aber PP zwischen die beiden anderen Werte und senkt TG leicht — Verdacht: PCIe-Bandbreite ist der Flaschenhals.
- Docker-Image ghcr.io/ggml-org/llama.cpp:server-rocm mit HSA_OVERRIDE_GFX_VERSION=12.0.1 und GGML_CUDA_P2P=1 für P2P-Transfers zwischen den GPUs.
Frag die KI zum Artikel
Folgefragen zu Headline, Quelle und Volltext — Antwort streamt in wenigen Sekunden.
Verwandte Beiträge
Dual AMD R9700 mit Qwen3.6-27B: ROCm schlägt Vulkan beim Prefill
Der Reddit-Nutzer akmoney betreibt ein Dual-GPU-System mit zwei AMD R9700 an einem AMD Ryzen 5900X (128 GB DDR4-3600) und testet unter Ubuntu 26.04, welches Backend von llama.cpp – ROCm oder Vulkan – für Qwen3.6-27B-Q8_0 bei einem Kontextfenster von 180.000 Token die besseren Ergebnisse liefert. Die Konfiguration nutzt MTP-Spekulation (spec-draft-n-max = 2), Q8_0-KV-Cache, Flash Attention und einen Batch-Size von 16.384. Beide GPUs laufen über PCIe x8/Gen4, was die verfügbare Bandbreite im Vergleich zu x16 halbiert. Das Kernproblem mit Vulkan: Während des Prefill arbeiten beide GPUs nie gleichzeitig – die Last pendelt zwischen ihnen hin und her, sodass immer eine GPU idle ist. ROCm sättigt beide GPUs parallel, was den Prefill-Durchsatz annähernd verdoppelt. Beim Token-Generation-Schritt dreht sich das Bild: Hier ist Vulkan minimal schneller (24,55 vs. 22,3 t/s bei TG512), weil unter ROCm nur eine GPU voll ausgelastet ist, die andere nur bei rund 40 % läuft – vermutlich jene, die KV-Cache und Kontext hält. Ein dritter Versuch mit split-mode = tensor (statt layer) gleicht die GPU-Auslastung in beiden Phasen an, führt aber zu niedrigerem PP und leicht schlechterem TG – ein Hinweis auf PCIe-Bandbreitenlimitierung. Am Ende fragt der Nutzer nach weiteren Tuning-Knöpfen und ob vLLM eine sinnvolle Alternative wäre.
- System: AMD Ryzen 5900X, 128 GB DDR4-3600, Ubuntu 26.04 – beide R9700 laufen an PCIe x8/Gen4 (nicht x16).
- Modell-Setup: ctx-size = 180.000, batch-size = 16.384, ubatch-size = 2.048, MTP-Spekulation mit spec-draft-n-max = 2 und spec-draft-p-min = 0,75.
- KV-Cache: cache-type-k und cache-type-v jeweils auf q8_0 gesetzt; cache-ram = 16.384 MB für Host-seitiges Prompt-Caching.
- split-mode = tensor egalisiert GPU-Auslastung, drückt aber PP zwischen die beiden anderen Werte und senkt TG leicht — Verdacht: PCIe-Bandbreite ist der Flaschenhals.
- Docker-Image ghcr.io/ggml-org/llama.cpp:server-rocm mit HSA_OVERRIDE_GFX_VERSION=12.0.1 und GGML_CUDA_P2P=1 für P2P-Transfers zwischen den GPUs.
Frag die KI zum Artikel
Folgefragen zu Headline, Quelle und Volltext — Antwort streamt in wenigen Sekunden.