Açık kaynaklı dil modellerini (LLM) bulut API'lerine bağımlı kalmadan yerel donanımda çalıştırırken en önemli darboğaz ekran kartı belleği (VRAM) kapasitesi ve bellek bant genişliğidir. Ollama ve LM Studio üzerinde farklı kuantalama (quantization) formatlarını test ederek hız ve kaynak kullanımı dengesini inceledim.
Kuantalama (Q4_K_M vs Q8_0) ve Bellek Kullanımı
Ağırlıkları 16-bit (FP16) yerine 4-bit (Q4_K_M) veya 8-bit (Q8_0) hassasiyetle belleğe yüklemek, modelin tüm katmanlarının sistem RAM'ine taşmadan doğrudan GPU üzerinde (CUDA) çalışmasını sağlar. Katmanların tamamı VRAM içinde kaldığında saniye başına üretilen token (token/s) hızında belirgin bir artış gözlemlenir.
# Ollama yerel API üzerinden üretim hızı (token/s) ölçümü
import time
import urllib.request
import json
payload = json.dumps({
"model": "llama3.2:latest",
"prompt": "Linux çekirdeğinde sanal bellek yönetimini kısaca açıkla.",
"stream": False
}).encode("utf-8")
t0 = time.perf_counter()
req = urllib.request.Request("http://localhost:11434/api/generate", data=payload)
with urllib.request.urlopen(req) as res:
data = json.loads(res.read().decode("utf-8"))
elapsed = time.perf_counter() - t0
tokens = data.get("eval_count", 0)
print(f"Üretilen token: {tokens} | Süre: {elapsed:.2f}s | Hız: {tokens / elapsed:.1f} tok/s")
Bağlam Uzunluğu (Context Length) ve KV Cache Etkisi
Yalnızca model ağırlıkları değil, konuşma geçmişini tutan KV Cache alanı da bağlam penceresi (num_ctx) büyüdükçe VRAM tüketimini artırır. Günlük geliştirme ve kod analizi testlerinde Q4_K_M kuantalama formatı ile 4096–8192 bağlam uzunluğu, doğruluk kaybını minimumda tutarken en verimli yanıt süresini sunmaktadır.