Orkun Soylu

3 dk okuma

vLLM vs Ollama @RTX 4070 Ti SUPER

Tek kullanıcı için Ollama ölçtüğüm her eksende vLLM'i geçti: %28 daha hızlı üretim, 1,9 kat prefill, VRAM'de 2,5 kat bağlam, 3 saniyede açılış ve token başına daha az enerji.

Test tarihi
Kurulum

GeForce RTX 4070 Ti SUPER 16 GB — Proxmox sanal makinesi (GPU passthrough)PCIe passthrough ile Proxmox VE konuğu, Ubuntu 24.04, NVIDIA 595 açık sürücü · Intel Core i5-13400 sunucu; konukta 8 vCPU · Konukta 32 GB; sunucuda 64 GB DDR5

Çalışma ortamı
vLLM 0.29.0 (GGUF eklentisi) ve Ollama 0.34.1
Modeller

Qwen3.8-27B GSQ-RCOISTA IQ3_Stest edilen

Karar

Ollama. vLLM'in asıl gücü — çok sayıda eşzamanlı istek — tek kullanıcılı, yalnızca gerektiğinde açtığım bir makinede boşa gidiyor; bu kartta 27B'yi de ancak kaynaktan derlenen deneysel bir GGUF eklentisi ve zorlanmış bellek ayarlarıyla çalıştırıyor.

İşe yarayan

  • Ollama üretim 34,4'e karşı 43,9 tok/s; 8K'da prefill 833'e karşı 1.578 tok/s
  • Ollama 49K token'ı tamamen GPU'da tutuyor, vLLM ~20K
  • Ollama: 64–199 sn yerine 2,8 sn'de açılış
  • Prizde token başına ~9,7 J yerine ~8,3 J

Yaramayan

  • İlk Ollama ölçümüm (26,4 tok/s, yüklemeden sonraki tek istek) yanlıştı — tekrarlı koşular 43,9 verdi
  • Priz değerleri wattmetre aralıkları; yük altında işlemci gücü ölçülmedi
Üretim, Ollama / vLLM
43,9 / 34,4tok/s
Tamamen VRAM'de bağlam
49K / ~20Ktoken
Açılış süresi
2,8 sn / 64–199 sn
Token başına enerji
8,3 / 9,7J

Verim, aynı GGUF dosyası

yüksek olan iyi
  • Ollama 0.34.1
  • vLLM 0.29.0
Üretim, tek istek (8–9 × 1.024 token)
43,9 tok/sOllama 0.34.1 · 43,9 tok/s
34,4 tok/svLLM 0.29.0 · 34,4 tok/s
Prefill, 8K token'lık prompt
1.578,0 tok/sOllama 0.34.1 · 1.578,0 tok/s
833,0 tok/svLLM 0.29.0 · 833,0 tok/s
Veri
Ollama 0.34.1vLLM 0.29.0
Üretim, tek istek (8–9 × 1.024 token)43,9 tok/s34,4 tok/s
Prefill, 8K token'lık prompt1.578,0 tok/s833,0 tok/s

Prizden güç (bütün sunucu)

düşük olan iyi

Wattmetre aralığının orta noktası

Sunucu açık, bütün VM'ler kapalı (GPU sürücüsüz, fanlar dönüyor)
53,5 WPriz gücü · 53,5 W
VM açık, GPU boşta, motor yok
42,5 WPriz gücü · 42,5 W
Ollama, model yüklü, boşta
42,0 WPriz gücü · 42,0 W
vLLM, model yüklü, boşta
46,5 WPriz gücü · 46,5 W
vLLM üretirken
335,0 WPriz gücü · 335,0 W
Ollama üretirken
365,0 WPriz gücü · 365,0 W
Veri
Priz gücü
Sunucu açık, bütün VM'ler kapalı (GPU sürücüsüz, fanlar dönüyor)53,5 W
VM açık, GPU boşta, motor yok42,5 W
Ollama, model yüklü, boşta42,0 W
vLLM, model yüklü, boşta46,5 W
vLLM üretirken335,0 W
Ollama üretirken365,0 W

Kurulum

Ollama 0.34.1’i kullanıcı dizinimdeki bir arşivden çalıştırdım (systemd servisi yok). GGUF’u RENDERER qwen3.8 + PARSER qwen3.5 ve registry’deki qwen3.8:27b-q8_0’dan kopyaladığım resmi örnekleme parametreleriyle içe aktardım. fp16 KV, flash attention açık, num_ctx 20000. vLLM, kuantizasyon karşılaştırmasındakiyle birebir aynı çalıştı. Ollama’da perplexity’yi ve 4 eşzamanlı isteği ölçmedim (prompt log-prob’u yok; zaten tek kullanıcıyım).

Sonuçlar

vLLM 0.29.0 + GGUF eklentisi Ollama 0.34.1
Motor açılışı 64 sn (derleme önbelleği dolu) – 199 sn (boş) 2,8 sn
Üretim, tek istek (8–9 × 1.024 token) 34,4 tok/s 43,9 tok/s
Prefill, 8K token 833 tok/s 1.578 tok/s
Tamamen VRAM’deki bağlam (fp16 KV) ~20K token 49K
VRAM her zaman 15,6 GiB (önceden ayırıyor) 20K’da 12,1 GiB, 49K’da 13,9 GiB
4 eşzamanlı istek (toplam) 54,9 tok/s ölçülmedi
Kontrol soruları / düşünmenin ayrılması doğru / — birebir aynı çıktı / evet

Ollama aktivasyon/graph için pay ayırmıyor ve KV önbelleğini num_ctx’e göre boyutluyor — fazladan bağlam oradan geliyor.

16 GB’da Ollama bağlam kapasitesi

num_ctx 8.192 20.000 32.768 49.152 65.536 98.304
Model boyutu 11,35 GiB 12,09 GiB 12,87 GiB 13,89 GiB 15,57 GiB 17,77 GiB
GPU’da %100 %100 %100 %100 %91 %79

vLLM’in bir GGUF çalıştırmak için istedikleri

  • GGUF desteği ayrı bir eklentide. PyPI sürümü Qwen3.8’i tanımıyordu, bu yüzden CUDA araç takımını kurup GitHub’dan derledim — artık güncellemeleri de elle takip etmem gerekiyor.
  • Eklenti yapılandırmasını tokenizer dizininden okuyor ve görsel projektör olmadan yüklemeyi reddediyor → mmproj + language_model_only.
  • Bellek ayarlarını zorlamak gerekiyor; FlashInfer’in ilk istekte JIT derleyebilmesi için PATH’te venv ve CUDA olmalı. vLLM’in kendi dokümanı GGUF desteğini “highly experimental” diye tanımlıyor.

Ollama: indir, ollama create (21 sn), bitti.

Bir düzeltme. İlk karşılaştırmamda Ollama’yı yüklemenin hemen ardından tek bir istekte 26,4 tok/s ölçmüş ve “vLLM ~%30 önde” demiştim. Güç testi için isteği dokuz kez tekrarladım: hepsi ~44 tok/s verdi, vLLM ise iki oturumda da 34,4–34,5’te kaldı. Doğru sonuç: Ollama ~%28 önde.

Prizden güç

Bütün sunucuya (Intel i5-13400, 64 GB, 850 W Gold PSU) takılı priz tipi bir wattmetre, yalnızca bu VM açık. Yük: art arda tek istekler, her biri 1.024 token, düşünme kapalı, sıcaklık 0,7, 3,5 dakika boyunca.

Durum Priz GPU (nvidia-smi)
Sunucu kapalı (Wake-on-LAN bekleme) 1,6–2,0 W —
Sunucu açık, bütün VM’ler kapalı 52–55 W sürücü yok, D3hot, fanlar dönüyor
VM açık, GPU boşta, motor yok 42–43 W P8, 13,3 W, fanlar duruyor
Ollama, model yüklü, boşta 42 W P8, 13,7 W, fanlar duruyor
vLLM, model yüklü, boşta 46–47 W P8, 14,8 W; işlemci paketi 2,0 W (motorsuz 0,5–0,6 W)
Ollama üretirken (43,9 tok/s) 360–370 W ort. 282,5 W, fan ≤ %69, ≤ 74 °C → ~8,3 J/token
vLLM üretirken (34,4 tok/s) 330–340 W ort. 283,8 W, fan ≤ %79, ≤ 74 °C → ~9,7 J/token
  • VM’i kapatmak tüketimi aslında ~11 W artırıyor. Sürücü yokken kartın VBIOS’u D3hot’ta bile fanları döndürüyor; konuk sürücü yüklenince ~10 sn içinde P8’e inip fanları durduruyor.
  • Modeli VRAM’de tutmanın bir bedeli yok — iki motor da GPU’yu P8’de boşta bırakıyor.
  • vLLM boşta ~4–5 W fazla çekiyor, çünkü motoru bir işlemci çekirdeğini yarı uyanık tutuyor.
  • Yük altında GPU aynı çekiyor (285 W sınırın ~283 W’ı). Ollama’nın prizdeki fazladan ~30 W’ı büyük ihtimalle işlemci tarafında (ölçmedim); yine de daha hızlı ürettiği için token başına daha az enerji harcıyor.