tag KVCache

Bu sayfada KVCache etiketi ile işaretlenmiş 3 yapay zeka kavramını bulabilirsiniz.

KV Cache (Key-Value Cache — Anahtar-Değer Önbelleği), transformer tabanlı büyük dil modellerinin otomatik regresif çıkarımında hesaplama verimliliğini artıran temel bir bellek optimizasyon mekanizmasıdır. Token üretiminde her adımda tüm geçmiş tokenların dikkat hesaplamalarını yeniden yapmak yerine, daha önce hesaplanan anahtar (Key) ve değer (Value) matrislerini bellekte saklayarak bu maliyeti ortadan kaldırır. Böylece naif O(n²) karmaşıklık O(n)'e indirilir ve model, uzun bağlamlarda bile tutarlı bir hızda yanıt üretebilir. Transformer mimarisindeki çok-başlı dikkat (multi-head attention) katmanında, her token için K ve V vektörleri hesaplanır. Otoregresif üretimde n token zaten üretilmişse, n+1. token için önceki n tokenın K ve V değerleri önbellekten okunabilir; yalnızca yeni tokena ait hesaplama yapılır ve sonuç önbelleğe eklenir. Bu süreç her üretim adımında yalnızca artımlı bir işlem gerektirir ve toplam çıkarım hızını dramatik biçimde artırır. Bellek tüketimi KV Cache'in en kritik tasarım kısıtıdır. Hesaplama formülü şudur: 2 × katman_sayısı × kafa_sayısı × kafa_boyutu × dizi_uzunluğu × bit_genişliği. 7 milyar parametreli bir modelde 4096 token bağlam için FP16 ile yaklaşık 500 MB gerekir; 128K token bağlamda bu değer 10–15 GB'a ulaşabilir. Toplu çıkarımda farklı uzunluktaki isteklerin KV Cache'leri VRAM'i model ağırlıklarıyla rekabet eder biçimde tüketir ve bu durum maksimum batch boyutunu sınırlandırır. Bu baskıyı hafifletmek için sektörde birkaç kritik yöntem geliştirilmiştir. Grouped Query Attention (GQA) ve Multi-Query Attention (MQA), birden fazla sorgu kafasına tek bir K-V matrisi atayarak önbellek boyutunu önemli ölçüde küçültür; Llama 3, Gemma ve Mistral bu tekniği standart olarak kullanır. KV cache kuantizasyonu (INT8/FP8) bellek tüketimini 2–4 kat azaltırken kalite kaybını sınırlı tutar. vLLM'in Paged Attention yöntemi, cache'i sabit boyutlu sayfalar hâlinde yönetir ve bellek parçalanması sorununu ortadan kaldırır. API düzeyinde Prompt Caching ise tekrar eden sistem promptlarının K-V hesaplamalarını sunucu tarafında saklayarak hem gecikmeyi hem de maliyeti düşürür; Anthropic Claude, OpenAI ve Google bu özelliği prefix caching adıyla sunar. DeepSeek'in Multi-head Latent Attention (MLA) mimarisi, K-V vektörlerini sıkıştırılmış bir gizli uzaya projekte ederek önbellek boyutunu dramatik biçimde küçültür ve uzun bağlam işlemeyi yeniden tanımlar.

play_arrow

Inference (Çıkarım (Model Çıkarımı))

Çıkarım (Inference), eğitilmiş bir yapay zeka modelinin yeni girdilere yanıt üretmek için kullanıldığı süreçtir. Eğitim aşamasının aksine, çıkarım sırasında model ağırlıkları güncellenmez; model yalnızca ileri besleme (forward pass) yapar. Büyük dil modellerinde çıkarım, prefill ve decode olmak üzere iki aşamadan oluşur. Prefill aşamasında giriş tokenlerinin tamamı paralel olarak işlenir ve KV önbelleği (KV cache) doldurulur; bu aşama GPU paralelizminden yüksek oranda yararlanır. Decode aşamasında ise model her seferinde bir token üretir ve KV önbelleğini günceller; bu aşama bellek bant genişliğiyle sınırlıdır (memory-bound). Çıkarım optimizasyonu, üretim sistemlerinde kritik öneme sahiptir. Temel metrikler: gecikme (latency — ilk token süresi ve token başına süre), verim (throughput — saniyede üretilen token sayısı), bellek kullanımı. Başlıca optimizasyon teknikleri şunlardır: Niceleme (Quantization): FP16/BF16, INT8, INT4 ile model boyutunu küçültme. KV Cache Yönetimi: PagedAttention ve prefix caching ile bellek verimliliği. Batch Processing: Birden fazla isteği birleştiren continuous batching. Flash Attention: Bellek verimli dikkat hesaplama. Spekülatif Kod Çözme: Küçük taslak modelle büyük modeli hızlandırma. Çıkarım altyapısı için vLLM, TGI (Text Generation Inference), TensorRT-LLM ve Ollama gibi özelleşmiş araçlar geliştirilmiştir. Bulut sağlayıcılar (OpenAI API, Anthropic API, AWS Bedrock) çıkarım altyapısını hizmet olarak sunar.

arrow_forward
memory

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

KV Cache (Key-Value Cache — Anahtar-Değer Önbelleği), transformer tabanlı büyük dil modellerinin otomatik regresif çıkarımında hesaplama verimliliğini artıran temel bir bellek optimizasyon mekanizmasıdır. Token üretiminde her adımda tüm geçmiş tokenların dikkat hesaplamalarını yeniden yapmak yerine, daha önce hesaplanan anahtar (Key) ve değer (Value) matrislerini bellekte saklayarak bu maliyeti ortadan kaldırır. Böylece naif O(n²) karmaşıklık O(n)'e indirilir ve model, uzun bağlamlarda bile tutarlı bir hızda yanıt üretebilir. Transformer mimarisindeki çok-başlı dikkat (multi-head attention) katmanında, her token için K ve V vektörleri hesaplanır. Otoregresif üretimde n token zaten üretilmişse, n+1. token için önceki n tokenın K ve V değerleri önbellekten okunabilir; yalnızca yeni tokena ait hesaplama yapılır ve sonuç önbelleğe eklenir. Bu süreç her üretim adımında yalnızca artımlı bir işlem gerektirir ve toplam çıkarım hızını dramatik biçimde artırır. Bellek tüketimi KV Cache'in en kritik tasarım kısıtıdır. Hesaplama formülü şudur: 2 × katman_sayısı × kafa_sayısı × kafa_boyutu × dizi_uzunluğu × bit_genişliği. 7 milyar parametreli bir modelde 4096 token bağlam için FP16 ile yaklaşık 500 MB gerekir; 128K token bağlamda bu değer 10–15 GB'a ulaşabilir. Toplu çıkarımda farklı uzunluktaki isteklerin KV Cache'leri VRAM'i model ağırlıklarıyla rekabet eder biçimde tüketir ve bu durum maksimum batch boyutunu sınırlandırır. Bu baskıyı hafifletmek için sektörde birkaç kritik yöntem geliştirilmiştir. Grouped Query Attention (GQA) ve Multi-Query Attention (MQA), birden fazla sorgu kafasına tek bir K-V matrisi atayarak önbellek boyutunu önemli ölçüde küçültür; Llama 3, Gemma ve Mistral bu tekniği standart olarak kullanır. KV cache kuantizasyonu (INT8/FP8) bellek tüketimini 2–4 kat azaltırken kalite kaybını sınırlı tutar. vLLM'in Paged Attention yöntemi, cache'i sabit boyutlu sayfalar hâlinde yönetir ve bellek parçalanması sorununu ortadan kaldırır. API düzeyinde Prompt Caching ise tekrar eden sistem promptlarının K-V hesaplamalarını sunucu tarafında saklayarak hem gecikmeyi hem de maliyeti düşürür; Anthropic Claude, OpenAI ve Google bu özelliği prefix caching adıyla sunar. DeepSeek'in Multi-head Latent Attention (MLA) mimarisi, K-V vektörlerini sıkıştırılmış bir gizli uzaya projekte ederek önbellek boyutunu dramatik biçimde küçültür ve uzun bağlam işlemeyi yeniden tanımlar.

arrow_forward
token

Otoregresif Kod Çözme (Otoregresif Kod Çözme)

Otoregresif Kod Çözme (Autoregressive Decoding), bir dil modelinin metin üretirken her yeni tokeni yalnızca önceki tokenlerden türeterek sırayla ürettiği standart çıkarım yöntemidir. Modelin çıktı dizisi soldan sağa doğru inşa edilir; her adımda tüm önceki bağlam koşullu olasılık dağılımını belirler ve buradan bir sonraki token örneklenir ya da seçilir. Matematikte otoregresif süreç, bir serinin her terimini kendinden önceki terimlere bağlı bir fonksiyon olarak ifade eder. Dil modellerinde bu P(x_t | x_1, ..., x_{t-1}) şeklinde yazılır: t. tokenin olasılığı 1'den t-1'e kadar tüm önceki tokenlere koşulludur. GPT ailesi başta olmak üzere tüm kausal dil modelleri bu paradigmayı kullanır. Kod çözme stratejisi, üretilen metnin kalitesini ve çeşitliliğini doğrudan etkiler. Açgözlü kod çözme (greedy decoding) her adımda en yüksek olasılıklı tokeni seçer; hızlıdır ancak tekrarlayan veya monoton çıktılar üretebilir. Işın araması (beam search), K olası diziyi paralel takip ederek toplu puan açısından en iyi tam diziyi arar; çeviri gibi görevlerde kaliteyi artırır. Sıcaklık örneklemesi (temperature sampling), olasılık dağılımını keskinleştirerek veya yumuşatarak çıktı çeşitliliğini ayarlar. Top-p (nucleus) ve top-k örnekleme ise düşük olasılıklı tokenleri keserek saçmalama riskini azaltır. Otoregresif kod çözmenin temel performans sorunu her tokenin sırayla üretilmesidir; bu durum gecikmeyi (latency) artırır ve GPU paralelizmini sınırlar. KV önbelleği (KV cache), önceki adımlarda hesaplanan anahtar-değer matrislerini saklayarak tekrar hesaplanmalarını önler ve çıkarımı hızlandırır. Spekülatif kod çözme (speculative decoding) ise küçük bir taslak model kullanarak büyük modelin doğrulamasını paralel yürütür ve verim artışı sağlar.

arrow_forward