Sorun gidermeKılavuz
llama.cpp istem işleme 35 kat yavaş mı? q5_1 KV önbelleğini düzeltin
Flash attention artı q5_1 KV önbelleği dikkati CPU'ya itebilir. Nasıl doğrulanır, q8_0 ile nasıl düzeltilir ve bir API ne zaman daha basittir.

Bu sayfada
Yerel modeliniz iyi yanıt veriyor, ancak artık her uzun istem bir buçuk dakika boyunca orada duruyor ve GPU hiçbir şey yapmıyor. llama.cpp'yi -fa on ve q5_1 KV önbelleği ile çalıştırıyorsanız, muhtemelen nedeni budur: varsayılan CUDA derlemesinde bu önbellek türü için flash-attention çekirdeği yok, bu yüzden dikkat adımı sessizce CPU'da çalışıyor. Önbelleği q8_0 olarak değiştirmek, bir kullanıcının istem işleme hızını 38'den 1348 token/s'ye çıkardı.
Aşağıdaki sayılar llama.cpp sorun #28455'ten (5 Eylül 2026'da açıldı, derleme 10791, 28 Ekim 2026'da kontrol edildi) geliyor. Tek bir kullanıcı, tek bir RTX 4080, tek bir 27B model, bu yüzden bunları bir yasa değil, işlenmiş bir örnek olarak okuyun. Kök neden analizleri de onlara ait: bir bakımcı bunu "bilinen bir sorun" olarak nitelendirdi ve sorunu ertesi gün kapattı.
Ekranda nasıl görünüyor#
Kurulum sıradandı. Birisi tek bir 16 GB kartta 131072 token'lık bağlam istedi, bu yüzden KV önbelleğini q5_1 olarak küçülttü:
llama-server -m model.gguf -ngl 99 -fa on -c 131072 -np 4 \
--cache-type-k q5_1 --cache-type-v q5_1Sonra 3.6K token'lık bir istem gönderdiler. İstem işleme 38.4 token/s hızında ve kod çözme 6.5 token/s hızında çalıştı. Bölmeyi yapın: 3,600 ÷ 38.4 = 93.75, yani ilk kelimeden önce yaklaşık 94 saniye. q8_0 ile aynı istem 1348 token/s hızında çalıştı: 3,600 ÷ 1,348 = 2.67, üç saniyenin altında.
İpucu görev yöneticisinde. Yavaş çalışmalar sırasında GPU %0 civarındaydı ve CPU yaklaşık %930 gösteriyordu (dokuz veya on çekirdek meşgul). "GPU'da çalışırken" GPU'nun boşta kalması, aramanız gereken semptomdur.

Daha küçük bir önbellek neden bu kadar yavaşlatıyor#
Flash attention birleşik bir GPU çekirdeğidir. Varsayılan CUDA derlemesi bunu yalnızca bazı KV önbellek türü çiftleri için sunar. q4_0, q4_1, q5_0 ve q5_1 için çekirdek yok, bu yüzden llama.cpp bir hatayla durmaz. Bu işlemi CPU'ya taşır ve devam eder. Her şey hâlâ çalışır, sadece istem işlemede yaklaşık 35 kat daha yavaş (1348 ÷ 38.4 = 35.1).
O "sessizce" tüm sorundur. Yanıtta hiçbir şey size söylemez. İstem işleme en çok düşer (yaklaşık 35×) ve üretim de yavaşlar: aynı sorunda q8_0 ile 30.1'e karşı 6.5 token/s.
İki dakikada kontrol edin#
Sunucuda kullandığınız aynı önbellek türleriyle llama-bench çalıştırın, her varyant için bir kez ve başka bir terminalde GPU'yu izleyin:
llama-bench -m model.gguf -ngl 99 -fa 1 -ctk q8_0 -ctv q8_0 -p 512 -n 0
llama-bench -m model.gguf -ngl 99 -fa 1 -ctk q5_1 -ctv q5_1 -p 512 -n 0
nvidia-smi -l 1Kullanıcının Qwen 27B Q5_K_XL üzerindeki pp512 sonuçları: q8_0/q8_0 için 1511.92 token/s, varsayılan derlemede q5_1/q5_1 için yaklaşık 197. İki satırınız böyle bir fark gösteriyorsa ve nvidia-smi ikincisi sırasında GPU'nun boşta olduğunu gösteriyorsa, sorunu buldunuz.
Herhangi bir şeyi düzeltmeden önce, gördüklerinizi olası nedene eşleştirin:
Eşleştir
Her semptomu nedenine eşleştirin
Soldaki bir öğeye, ardından eşine dokun
- Uzun bir istem sırasında GPU ~%0, CPU ~%930Dikkat CPU'da çalışıyor
- Kod çözme,
q8_0ile 30.1'e karşı ~6.5 token/s'ye düşüyorÜretim de yavaşlıyor, sadece istem işleme değil - Aynı bayraklar
q8_0ile hızlıBu önbellek türü çiftinin varsayılan derlemede GPU flash-attention çekirdeği yok
Düzeltme 1: q8_0 kullanın (veya yeniden derleyin)#
En hızlı düzeltme iki bayrağı değiştirmek ve geri kalan her şeyi korumaktır:
llama-server -m model.gguf -ngl 99 -fa on -c 131072 -np 4 \
--cache-type-k q8_0 --cache-type-v q8_0Sorunda bu, istem işlemede 1348 token/s ve kod çözmede 30.1 token/s verdi (6.5'ten yükseldi). Bedeli bellek: q8_0 önbelleği q5_1'dan daha büyük, bu yüzden bağlam uzunluğunuzun hâlâ VRAM'e sığdığını kontrol edin.
Bellek nedenleriyle q5_1'ı korumanız gerekiyorsa, tüm flash-attention önbellek kombinasyonları derlenmiş olarak yeniden derleyin:
cmake -B build -DGGML_CUDA=ON -DGGML_CUDA_FA_ALL_QUANTS=ON
cmake --build build --config Release -jBu derleme, pp512 üzerinde q5_1'ı 1509.70 token/s hızında ve 3.6K token'lık istemde 1162 token/s hızında, kod çözme 38.5 token/s ile çalıştırdı. Sorun hakkında bir yorumcu, işi arka uçlar arasında taşımanın sayısal sonuçları biraz değiştirebileceğini belirtti ve derlemeler arasında bir perplexity karşılaştırması önerdi. Tam çıktıları önemsiyorsanız, bir tane çalıştırın.
Karşılaştır
Hangi düzeltme kartınıza uyuyor?
q8_0 önbelleği
--cache-type-k ve --cache-type-v'ı q8_0 olarak değiştirin. Yeniden derleme yok. q5_1'den daha fazla VRAM kullanır, bu yüzden sığdırabileceğiniz bağlam boyutunu yeniden kontrol edin.
FA_ALL_QUANTS ile yeniden derleyin
q5_1'ı koruyun ve - ile derleyin. Öncekiyle aynı VRAM, ancak kendi derlemenizi sürdürürsünüz ve derlemesi daha uzun sürer.
Bakımcının "bilinen sorun" yanıtı, mevcut llama.cpp sürümlerinin bunu değiştirip değiştirmediğini söylemiyor. Dürüst kontrol yukarıdaki llama-bench çiftidir: her iki satır da yakınsa, sorun yok.
Ayarlamanın artık değmediği zaman#
Düzeltmeyi çalıştırdığınızı ve şimdi bir sonraki turu değerlendirdiğinizi varsayalım: daha fazla bayrak, ikinci bir GPU, daha küçük bir quant. İş özetler, kod incelemesi veya birkaç bin token'lık istemlerde çıkarım ise, bir isteğin size yalnızca watt olarak değil, zaman ve emek olarak neye mal olduğunu sorun.
Karşılaştırmak için belirtilmiş bir iş yükü. Bir özetleme işinin 3,600 giriş token'ı gönderdiğini ve 500 geri aldığını, 1,000 kez. CheapTokens'te bu, DeepSeek-V4-Flash'te (380K bağlam, yanıt başına 32,768'e kadar çıkış token'ı, her saatte tek fiyat) yaklaşık $0.104 ve GLM-5.3-Flash'te (390K bağlam) yaklaşık $0.092. Tablo giriş ve çıkışı birlikte sayar, karşılaştırma için bir OpenRouter sütunu ile:
| Model | Giriş $/1M | Çıkış $/1M | İstek başına | 1.000 istek | OpenRouter, 1.000 istek |
|---|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.000092 | $0.092 | $0.187 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.0001 | $0.104 | $0.249 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.00026 | $0.255 | $1.68 |
İstek başına 3.600 giriş ve 500 çıkış token'ı. 1M token başına fiyatlar günceldir ve tarifelerimizle birlikte değişir; OpenRouter sütunu aynı iş yükü için referans fiyatları gösterir.
API önbellek türünüzü, VRAM'inizi veya derleme bayraklarınızı umursamaz; CPU'ya geri düşecek bir şey yoktur. Önce gerçek istemlerinizden birkaçını gönderin ve yanıtları kendiniz değerlendirin. Adım küçük: uç nokta OpenAI Chat Completions formatını konuşur, bu yüzden çoğu yerel istemcinin yalnızca yeni bir temel URL'ye ihtiyacı vardır.
curl https://api.cheaptokens.dev/v1/chat/completions \
-H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "deepseek-ai/DeepSeek-V4-Flash-0731", "messages": [{"role": "user", "content": "Summarize the text below in 5 bullets: ..."}], "max_tokens": 500}'Tam kurulum CheapTokens belgelerinde ve güncel model başına fiyatlar fiyatlandırma sayfasında. Donanım ile API karşılaştırmasına daha uzun bir bakış için DeepSeek'i yerel olarak çalıştırın veya bir API kullanın bölümüne bakın. Giriş ve çıkışın ayrı ayrı nasıl faturalandırıldığını görmek istiyorsanız, giriş vs çıkış token'ları bunu kapsar.
Üzerinden geçilecek sıra#
Sıraya koy
Sorun giderme adımlarını sıraya koyun
Öğeleri sürükle veya okları kullan
- q8_0 ve q5_1 için llama-bench çalıştırın ve nvidia-smi'yi izleyin
- Her iki önbellek türünü de q8_0 olarak değiştirin
- Bağlam uzunluğunun hâlâ VRAM'e sığdığını kontrol edin
- Yalnızca q5_1'e ihtiyacınız varsa GGML_CUDA_FA_ALL_QUANTS=ON ile yeniden derleyin
- Yerel kurulum hâlâ çabaya değmiyorsa aynı istemi bir API'de karşılaştırın
Kaynaklar hakkında bir uyarı daha: tüm teşhis tek bir genel soruna ve tek bir GPU'ya dayanıyor. 1348 ve 38.4'ü orada olanlar olarak ele alın ve ikisine de güvenmeden önce kendi kartınızı ölçün.



