KV Cache (Anahtar-Değer Önbelleği)

KV Cache (Key-Value Cache — Anahtar-Değer Önbelleği), transformer tabanlı dil modellerinin otomatik regresif çıkarımında hesaplanmış dikkat anahtarı (Key) ve değer (Value) matrislerini yeniden hesaplamamak için bellekte saklayan bir optimizasyon mekanizmasıdır.

KV Cache (Key-Value Cache — Anahtar-Değer Önbelleği), transformer tabanlı dil modellerinin otomatik regresif çıkarımında hesaplanmış dikkat anahtarı (Key) ve değer (Value) matrislerini yeniden hesaplamamak için bellekte saklayan bir optimizasyon mekanizmasıdır. Her yeni token üretiminde daha önce işlenen tüm tokenler için bu matrisler zaten mevcuttur; yalnızca yeni token için hesaplanması gerekir. Bu sayede çıkarım O(n²)'den O(n)'e indirilir. KV cache; VRAM tüketimi ve bağlam uzunluğu skalasını etkileyen kritik bir bileşendir.

memory KV Cache Nasıl Çalışır?

Transformer'ın her dikkat katmanında, her token için Key ve Value vektörleri hesaplanır. Otoregresif üretimde token 1..n zaten üretilmişse, t+1. tokeni hesaplarken 1..n için K,V hesaplamaya gerek yoktur — önbellekten okunurlar. Yalnızca yeni token t+1 için K,V hesaplanır ve önbelleğe eklenir. Bu, her üretim adımında O(n) işlem yapar, naif yeniden hesaplama O(n²) yerine.

KV Cache Boyutu ve Yönetimi

storage VRAM Tüketimi

2 × num_layers × num_heads × head_dim × seq_len × dtype_bytes. 7B model, 4096 token, FP16'da ~500 MB KV cache. 128K token'da bellek kritik hâle gelir.

book Paged Attention (vLLM)

KV cache'i sanal sayfa tablosu gibi yönetir; farklı uzunluktaki istekler arasında bellek parçalanmasını önler. vLLM'nin temel yeniliğidir.

cached Prompt Caching

Sistem promptu gibi tekrarlayan prefix'lerin KV cache'ini API çağrıları arasında saklar. Anthropic ve OpenAI bunu prefix caching ile destekler; maliyet %75'e kadar düşer.

quiz Sık Sorulan Sorular

  • check_circle KV cache bağlam uzunluğunu nasıl etkiler?: Daha uzun bağlam = daha büyük KV cache = daha fazla VRAM. Bu yüzden 100K+ bağlam modellerinde Paged Attention, Sliding Window Attention veya KV cache quantization kritiktir.
  • check_circle KV cache quantization nedir?: KV cache'i FP16 yerine INT8 veya INT4 ile saklamak; bellek boyutunu 2-4× azaltır. Küçük kalite kaybıyla çok daha uzun bağlam işlenebilir.
  • check_circle GQA (Grouped Query Attention) neden önemli?: Multi-head attention'da her kafa için ayrı K,V vardır. GQA birden fazla sorgu kafasının K,V'yi paylaşmasını sağlar; KV cache boyutunu küçültür. Llama 3, Mistral ve Gemma'da kullanılır.