KV cache nedir, neden gereklidir? Bellek maliyetini nasıl hesaplarsınız ve nasıl azaltılır?
Cevap
Decoder-only bir LLM her yeni token üretirken önceki tüm tokenlara attention uygular. Önceki tokenların Key ve Value vektörleri değişmediği için her adımda yeniden hesaplamak yerine bellekte saklanır. Buna KV cache denir. Cache olmadan n token üretmenin maliyeti kabaca O(n²) yeniden hesaplama demektir. Cache ile her adımda sadece yeni token'ın Q, K ve V'si hesaplanır.
İki faz
- Prefill: Prompt'un tamamı paralel işlenir ve KV cache doldurulur. Compute-bound'dur, time-to-first-token'ı (TTFT) belirler.
- Decode: Token token üretim. Her adımda tüm ağırlıklar ve KV cache bellekten okunur. Memory-bandwidth-bound'dur, token başı gecikmeyi belirler.
Bellek hesabı
KV cache (byte) = 2 (K ve V) × katman × kv_head sayısı × head_dim × dizi uzunluğu × batch × eleman başı byteÖrnek, Llama 3 8B (32 katman, 8 KV head, head_dim 128, BF16 = 2 byte):
token başı = 2 × 32 × 8 × 128 × 2 = 131.072 byte ≈ 128 KB
8.192 token, batch 1 ≈ 1 GB
128K token, batch 1 ≈ 16 GB (modelin ağırlıklarından, ~16 GB, bile büyük olabilir)Yani uzun bağlam ve yüksek eşzamanlılıkta darboğaz çoğu zaman ağırlıklar değil KV cache'tir.
Azaltma yöntemleri
- GQA / MQA: Birden çok query head aynı K/V head'ini paylaşır. 32 yerine 8 KV head, cache'i 4 kat küçültür.
- MLA (DeepSeek): K/V'yi düşük boyutlu bir latent vektöre sıkıştırır.
- KV cache quantization: FP8 veya INT8/INT4 saklama.
- PagedAttention (vLLM): Cache'i sabit boyutlu bloklarda tutar, fragmentasyonu ve israfı azaltır, prefix paylaşımını sağlar.
- Prefix / prompt caching: Ortak system prompt'un cache'i istekler arasında yeniden kullanılır.
- Sliding window attention: Sadece son W token cache'te tutulur.
İlgili LLM & Üretken YZ soruları
- RAG'de chunking stratejisi, hybrid search ve reranker neden önemlidir? Retrieval kalitesi düşükse ne yaparsınız?
- Şirket içi dokümanlar (Confluence, PDF, wiki) üzerinde soru cevaplayan bir RAG sistemi tasarlayın.
- Hangi prompt engineering tekniklerini kullanırsınız? Few-shot ve chain-of-thought ne zaman işe yarar?
- LLM'lerde temperature, top-k ve top-p (nucleus) sampling parametreleri ne işe yarar?
- Production'daki bir LLM uygulamasında maliyeti ve gecikmeyi (latency) nasıl düşürürsünüz?
- Prompt injection nedir? LLM tabanlı bir uygulamayı ve agent'ı buna karşı nasıl korursunuz?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.