Orkun Soylu

2 dk okuma

48 GB'a sığan en uzun bağlam: beş model

Aynı anda tek model yüklüyken iki Qwen3.6 modeli de 262K'lık bağlamın tamamını W7800'ümün VRAM'inde tutuyor. Gemma 4 31B tutamıyor — 64K'nın üstünde işlemciye taşıyor.

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ı
Ollama 0.31.1 (ROCm), flash attention açık, q8_0 KV önbelleği
Modeller

qwen3.6:27bQ8_0test edilen

qwen3.6:35b-a3bQ8_0test edilen

gemma4:31b-itQ8_0test edilen

translategemma:27b-itQ8_0test edilen

Karar

48 GB'lık bir kartı aynı anda tek büyük modelle kullanın: Qwen modelleri 262K'lık pencerenin tamamını 7–10 GB boşlukla GPU'da tutuyor. Gemma 4 31B'nin tamamen VRAM'de kalması için 64K sınırı gerekiyor.

İşe yarayan

  • qwen3.6:27b Q8_0, 262K'da: 38,66 GB, tamamen GPU'da
  • qwen3.6:35b-a3b Q8_0, 262K'da: 41,29 GB, tamamen GPU'da
  • Global 262K varsayılanı daha küçük pencereli modelleri bozmuyor — Ollama onları sessizce kırpıyor

Yaramayan

  • İki Qwen modeli asla birlikte sığmıyor: yalnız ağırlıkları 65,9 GB
  • Gemma 4 31B, 262K'da 12,9 GB'ı işlemciye taşıyor ve yavaşlıyor
Kart VRAM'i (rocm-smi)
48,3GB
27B KV önbelleği / 1K token
~40MB
35B-A3B KV önbelleği / 1K token
~13,6MB
Gemma 4 taşmasız sınır
65.536token

En yüksek bağlamda VRAM

düşük olan iyi

Her model gerçekten yüklenerek ölçüldü, formülle değil. Kart toplamı 48,3 GB.

  • VRAM
  • İşlemciye taşan
qwen3.6:27b Q8_0 @ 262K
38,66 GBVRAM · 38,66 GB
0,00 GBİşlemciye taşan · 0,00 GB
qwen3.6:35b-a3b Q8_0 @ 262K
41,29 GBVRAM · 41,29 GB
0,00 GBİşlemciye taşan · 0,00 GB
translategemma:27b Q8_0 @ 131K
31,85 GBVRAM · 31,85 GB
0,00 GBİşlemciye taşan · 0,00 GB
gemma4:31b Q8_0 @ 262K
30,88 GBVRAM · 30,88 GB
12,87 GBİşlemciye taşan · 12,87 GB
Veri
VRAMİşlemciye taşan
qwen3.6:27b Q8_0 @ 262K38,66 GB0,00 GB
qwen3.6:35b-a3b Q8_0 @ 262K41,29 GB0,00 GB
translategemma:27b Q8_0 @ 131K31,85 GB0,00 GB
gemma4:31b Q8_0 @ 262K30,88 GB12,87 GB

Gemma 4 31B: taşma nerede başlıyor

Toplam model boyutu ve VRAM'e düşen kısım

  • Toplam boyut
  • VRAM'de
262.144 token
43,75 GBToplam boyut · 43,75 GB
30,88 GBVRAM'de · 30,88 GB
131.072 token
37,88 GBToplam boyut · 37,88 GB
35,42 GBVRAM'de · 35,42 GB
65.536 token
35,34 GBToplam boyut · 35,34 GB
35,34 GBVRAM'de · 35,34 GB
32.768 token
34,77 GBToplam boyut · 34,77 GB
34,77 GBVRAM'de · 34,77 GB
16.384 token
34,48 GBToplam boyut · 34,48 GB
34,48 GBVRAM'de · 34,48 GB
Veri
Toplam boyutVRAM'de
262.144 token43,75 GB30,88 GB
131.072 token37,88 GB35,42 GB
65.536 token35,34 GB35,34 GB
32.768 token34,77 GB34,77 GB
16.384 token34,48 GB34,48 GB

Soru

Kart aynı anda tek model tutuyorsa, işlemciye hiçbir şey taşmadan her modelin bağlamını ne kadar uzatabilirim? Global bağlam varsayılanını yükseltmek küçük modelleri bozar mı?

İki model neden asla birlikte sığmıyor

Her modeli iki farklı bağlam boyutunda yükleyip sonuçlardan düz bir çizgi geçirdim. Bu, token başına KV önbelleği büyümesini ve sıfır bağlamdaki ağırlık ayak izini veriyor:

Model Ağırlık (bağlam → 0) 1K token başına KV önbelleği
qwen3.6:27b-q8_0 28,27 GB ~40 MB
qwen3.6:35b-a3b-q8_0 (MoE) 37,63 GB ~13,6 MB

İki modelin yalnızca ağırlıkları 65,9 GB — daha tek token bağlam olmadan 48,3 GB’lık karttan 17,6 GB fazla. OLLAMA_MAX_LOADED_MODELS=2 hiçbir şeyi değiştirmiyor: Ollama birini boşaltıp geçiyor.

MoE’nin token başına KV önbelleği yoğun modelinkinin üçte biri. Ağırlıkları daha büyük olduğu hâlde tam penceresinin yoğun modelinkinden pek fazla yer tutmamasının nedeni bu.

Aynı anda tek model: her model kendi en yüksek bağlamında

Model Mimari sınırı En yüksek bağlamda VRAM (ölçülen) Boşluk
qwen3.6:27b-q8_0 262.144 38,66 GB, taşma yok ~9,6 GB
qwen3.6:35b-a3b-q8_0 262.144 41,29 GB, taşma yok ~5,5–7 GB
gemma4:31b-it-q8_0 262.144 30,88 GB VRAM + 12,9 GB işlemci taşıyor — yavaş
translategemma:27b-it-q8_0 131.072 (kırpıldı) 31,85 GB, taşma yok rahat

OLLAMA_CONTEXT_LENGTH=262144’ü global ayarlamak güvenli çıktı: modelin kendi sınırı daha küçükse Ollama hata vermek yerine isteği sessizce kırpıyor. Gemma 4’ün istisna olmasının tek nedeni kendi mimari sınırının da 262K olması.

Gemma 4: sınırı bulmak için adım adım inmek

num_ctx Toplam VRAM’de İşlemciye taşan
262.144 43,75 GB 30,88 GB 12,87 GB
131.072 37,88 GB 35,42 GB 2,46 GB
65.536 35,34 GB 35,34 GB 0
32.768 34,77 GB 34,77 GB 0
16.384 34,48 GB 34,48 GB 0

Yani bu kartta Gemma 4 31B Q8_0 için taşmasız pratik tavan 65.536.

Varsayılanı model başına ezmek

Global ayar yalnızca bir varsayılan. Bir modeli daha aşağıda sabitlemenin iki yolu var:

  1. İstek başına — API gövdesinde "options": {"num_ctx": 65536}. 262K varsayılanını ezdiğini kontrol ettim.

  2. Yeni bir etiket olarak — iki satırlık bir Modelfile:

    FROM gemma4:31b-it-q8_0
    PARAMETER num_ctx 65536
    

    ollama create gemma4:31b-it-q8_0-64k -f Modelfile her seferinde 65.536 ile yükleniyor. Ölçtüğümde size == size_vram (35,34 GB): işlemciye sıfır taşma.

Ölçmediklerim

medgemma:27b’yi (TranslateGemma ile aynı mimari) ve qwen3-embedding’i en yüksek bağlamlarında yüklemedim. Aynı davranışı beklerim, ama doğrulamadım.