vLLM vs Ollama @W7800 (ROCm)
Denediğim yedi kuantizasyon biçiminin ikisi vLLM 0.27 altında RDNA3'te çalıştı. int8 W8A16 + MTP 42 tok/s'ye ulaştı; int4 W4A16 57 tok/s'ye ulaştı ama ~30K token'da GPU'yu kilitledi. vLLM'i kaldırdım — ertesi gün MTP'li Ollama aynı hıza geldi.
- Test tarihi
- Kurulum
Radeon Pro W7800 48 GB — fiziksel iş istasyonuFiziksel makine, Linux, ROCm (Ollama) · AMD Ryzen 5 7600 (6 çekirdek / 12 iş parçacığı, AVX-512) · 64 GB DDR5-6400
- Çalışma ortamı
- ROCm 10 üzerinde vLLM 0.27 ve Ollama 0.34.0
- Modeller
Qwen3.8-27Bint8 W8A16 + MTPtest edilen
Qwen3.8-27Bint4 W4A16test edilen
qwen3.8:27bQ8_0referans
Karar
RDNA3'te değmez. Çoğu biçimin ROCm çekirdeği yok, hızlı olan uzun bağlamda kilitleniyor ve MTP ile önek önbelleğini kapatmak zorundasınız — yani her ajan turu bütün bağlamı yeniden okuyor. Kaldırdım; Ollama kaldı.
İşe yarayan
- int8 W8A16 + MTP: 42,3 tok/s ve 20K'da 850 tok/s prefill
- int4 W4A16: VRAM'de 262K bağlamın tamamıyla 56,6 tok/s
Yaramayan
- GGUF, 3-bit GSQ, Quark INT4, bitsandbytes ve NVFP4: ROCm çekirdeği yok
- FP8 yükleniyor ama gfx1100'de donanım desteği yok: 0,8 tok/s
- int4: GPU çekirdeği ~30K token'da kilitlendi (%100 meşgul, 12+ dakika ilerleme yok)
- MTP ile önek önbelleği kapalı: 20K token'lık her ajan turu ~24 sn
- Çalışan biçim
- 2 / 7
- Kullanılabilir en iyi üretim (W8A16+MTP)
- 42,3tok/s
- FP8 üretim (taklit)
- 0,8tok/s
Üretim hızı — aynı 4 prompt, akışlı, sıcaklık 1
yüksek olan iyiVeri
| Üretim | |
|---|---|
| vLLM W8A16 + MTP | 42,3 tok/s |
| Ollama ISTA IQ3_S | 24,8 tok/s |
| Ollama Q8_0 (MTP yok) | 19,8 tok/s |
20K token'lık prompt'u okuma
yüksek olan iyiVeri
| Prefill | |
|---|---|
| vLLM W8A16 + MTP | 850 tok/s |
| Ollama Q8_0 | 531 tok/s |
| Ollama ISTA IQ3_S | 510 tok/s |
Ne çalışıyor (vLLM 0.27, ROCm 10, gfx1100)
Model için bulabildiğim her biçimi denedim. Çoğu yolda kaldı:
| Biçim | Sonuç |
|---|---|
| GGUF | ✗ ROCm derlemesinde ggml işlemleri yok |
| FP8 (resmi Qwen) | ⚠ yükleniyor, ama gfx1100’de FP8 donanımı yok → Triton taklidi, 0,8 tok/s |
| 3-bit (ISTA GSQ) | ✗ uint3b4 için ROCm çekirdeği yok |
| Quark INT4 (AMD) | ✗ vLLM 0.27’de Quark INT4 W4A16 şeması yok |
| bitsandbytes 4-bit, NVFP4 | ✗ |
| int8 W8A16 (MTP ile) | ✓ 42 tok/s, ama 64K bağlamda; --dtype float16 ve VLLM_DISABLED_KERNELS=ConchLinearKernel şart (Conch 3 kat yavaş) |
| int4 W4A16 | ✓ 56,6 tok/s, 262K sığıyor — ama ~30K token’da GPU çekirdeği kilitlendi (py-spy gpu_model_runner’da, GPU %100, 12+ dakika ilerleme yok) |
Karşılaştırınca
Aynı 4 prompt, akışlı, sıcaklık 1:
| Üretim | 20K prompt okuma | |
|---|---|---|
| vLLM W8A16 + MTP | 42,3 tok/s | 850 tok/s |
| Ollama Q8_0 | 19,8 tok/s | 531 tok/s |
| Ollama ISTA IQ3_S | 24,8 tok/s | 510 tok/s |
Saf üretim hızında vLLM açık ara önde görünüyordu.
Yine de neden kaldırdım
- MTP ile önek önbelleği kapalı olmak zorunda (o sırada açık bir upstream sorunu), yani her ajan turu bütün bağlamı yeniden işliyor: 20K token ≈ 24 sn, her turda. Ollama ise prompt’u oturum içinde önbellekte tutuyor.
- Hızlı int4 yolu uzun bağlamda kilitleniyor, kararlı int8 yolu da 64K’da duruyor.
- Hemen ertesi gün Ollama’nın kendi MTP desteği Q8_0’ı aynı 42,3 tok/s’ye getirdi — 262K bağlam ve önbellekle. Bu, vLLM’in tek avantajını da ortadan kaldırdı.
Böylece vLLM’i ve modellerini sildim; bundan sonra yalnızca Ollama.