Orkun Soylu

1 dk okuma

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 iyi
vLLM W8A16 + MTP
42,3 tok/sÜretim · 42,3 tok/s
Ollama ISTA IQ3_S
24,8 tok/sÜretim · 24,8 tok/s
Ollama Q8_0 (MTP yok)
19,8 tok/sÜretim · 19,8 tok/s
Veri
Üretim
vLLM W8A16 + MTP42,3 tok/s
Ollama ISTA IQ3_S24,8 tok/s
Ollama Q8_0 (MTP yok)19,8 tok/s

20K token'lık prompt'u okuma

yüksek olan iyi
vLLM W8A16 + MTP
850 tok/sPrefill · 850 tok/s
Ollama Q8_0
531 tok/sPrefill · 531 tok/s
Ollama ISTA IQ3_S
510 tok/sPrefill · 510 tok/s
Veri
Prefill
vLLM W8A16 + MTP850 tok/s
Ollama Q8_0531 tok/s
Ollama ISTA IQ3_S510 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.