Orkun Soylu

2 dk okuma

Dense 27B @168k token prompt

W7800'ümde Qwen3.8-27B Q8_0'a 168.084 token'lık bir prompt verdim: prefill 11,7 dakika sürdü, üretim 20,2'den 9,6 tok/s'ye düştü. Yine de en baştaki işareti kusursuz hatırladı.

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.32.14, flash attention açık, q8_0 KV önbelleği, NUM_PARALLEL=1
Modeller

qwen3.8-27b-uncensoredQ8_0test edilen

Karar

Uzun bağlam çalışıyor ve doğru kalıyor, ama bu donanımda başında beklenecek bir şey değil, arka plan işi: 26K'da geçerli olan 'üretim pek yavaşlamaz' kuralı tutmuyor — 168K'da hız yarıya iniyor.

İşe yarayan

  • Token 0'a konan işaret 168K token sonra doğru hatırlandı — sessiz kırpma yok
  • Baştan sona %100 GPU; KV önceden ayrıldığı için VRAM 39,5 GB'ta sabit
  • Prefill doğrusal-altı ölçekleniyor: bağlam 6,7 kat, token başına yavaşlama 2,4 kat

Yaramayan

  • İlk token'a kadar 702,9 sn (11,7 dk)
  • Üretim −%52: 20,2 → 9,64 tok/s
  • Prefill boyunca kart 230 W güç sınırında
Prompt
168.084token
Prefill süresi
11,7dk
168K'da üretim
9,64tok/s
İşaretin hatırlanması
Doğru

Doldurulan bağlama göre üretim hızı

yüksek olan iyi

W7800'de yoğun 27B Q8_0; 26K ve 31K noktaları önceki koşulardan

Kısa prompt (~20 tok)
20,20 tok/sÜretim · 20,20 tok/s
~25K token (Qwen3.6, Temmuz)
16,80 tok/sÜretim · 16,80 tok/s
31K token (Qwen3.8, 18 Ağu)
16,77 tok/sÜretim · 16,77 tok/s
168K token
9,64 tok/sÜretim · 9,64 tok/s
Veri
Üretim
Kısa prompt (~20 tok)20,20 tok/s
~25K token (Qwen3.6, Temmuz)16,80 tok/s
31K token (Qwen3.8, 18 Ağu)16,77 tok/s
168K token9,64 tok/s

Prompt uzunluğuna göre prefill hızı

yüksek olan iyi
~25K token (Qwen3.6, Temmuz)
582,6 tok/sPrefill · 582,6 tok/s
31K token (Qwen3.8, 18 Ağu)
533,6 tok/sPrefill · 533,6 tok/s
168K token
239,1 tok/sPrefill · 239,1 tok/s
Veri
Prefill
~25K token (Qwen3.6, Temmuz)582,6 tok/s
31K token (Qwen3.8, 18 Ağu)533,6 tok/s
168K token239,1 tok/s

Kurulum

  • Model: qwen3.8-27b-uncensored:q8_0 — abliterated bir Qwen3.8-27B’yi f16 görsel projektörüyle birlikte Hugging Face’ten elle içe aktardım; mimari olarak resmi yoğun 27B ile aynı.
  • Sunucu: OLLAMA_CONTEXT_LENGTH=262144, KV_CACHE_TYPE=q8_0, FLASH_ATTENTION=1, NUM_PARALLEL=1 (bu test için 2’den düşürdüm), Modelfile’da num_ctx yok.
  • Prompt: 780.112 karakterlik tekrar eden dolgu metni; en başında bir işaret dizesi (MARKER-ALPHA-7391), sonunda o işareti soran bir soru. num_predict=40.
  • Rakamlar nereden: API yanıtından değil, Ollama’nın kendi print_timing log satırlarından.

Sonuçlar

Kısa prompt (~20 tok) Uzun prompt (168.084 tok)
Prefill — 239,1 tok/s (token başına 4,18 ms)
Prefill süresi anında 702,9 sn (11,7 dk)
Üretim 20,2 tok/s 9,64 tok/s (token başına 103,7 ms)
Toplam anında 707,0 sn
VRAM 39,5 / 48,3 GB aynı (KV önceden ayrılıyor)
İşlemci %100 GPU %100 GPU

Koşu boyunca kart güç sınırına dayanmıştı: 229/230 W, 82 °C kenar, fan %55, 2.482 MHz.

Bulduklarım

  1. 168K’da üretim yarıya iniyor. 25–26K’da yavaşlama %14–16’ydı ve “büyük bir kayıp değil” deyip geçmiştim. 168K’da %52. KV önbelleği her token için baştan sona taranıyor ve bu maliyet bağlamla büyüyor. Yani “maliyet prefill’de, üretim pek değişmez” kuralım ancak belli bir aralıkta geçerli — 25K’da doğru, 168K’da yanlış.
  2. Prefill daha yumuşak yavaşlıyor. 25K’da 582 tok/s → 168K’da 239 tok/s: bağlam 6,7 kat, token başına 2,4 kat yavaş. Bu doğrusal-altı; attention’ın karesel bileşeni henüz baskın değil.
  3. 168K, on iki dakika beklemek demek. Prefill (702,9 sn) üretimin (4,0 sn) yanında ezici. Bu donanımda gerçekten uzun bağlamı etkileşimli kullanmak gerçekçi değil; toplu ve arka plan işleri ise gayet olur. Uzun bir öneki önbellekten yeniden kullanan her şey çok kazanır.
  4. Doğruluk kaybı yok. 168K token sonra en baştaki işareti doğru hatırladı — pencereden sessizce bir şey kırpılmamış.
  5. Tek slot 131.072’yi aşabiliyor. NUM_PARALLEL=1 ile tek bir istek 168.084 token işledi. 2 slottan 1’e geçince VRAM birebir aynı kaldı (39,5 GB); bu, bağlamın slotlara bölündüğü fikriyle uyuşuyor — ama 2 slotlu durumu ölçmedim.

Çekinceler

Dolgu metni tekrarlı (log graphs reused = 126 diyor); çeşitli metinden oluşan gerçek bir 168K’lık belge daha yavaş olabilir. num_predict=40 cevabı düşünme bloğunun ortasında kesti, ama model işareti o noktada zaten doğru okumuştu.