
2026-09-22•10 dakika
Self-attention, multi-head attention, KV cache ve FlashAttention: Büyük dil modellerinin nasıl 'odaklandığını' ve bunun donanım maliyetinize etkisini açıklıyoruz.
2017'de yayımlanan 'Attention Is All You Need' makalesiyle tanıtılan Transformer mimarisi, bugün kullandığımız neredeyse tüm büyük dil modellerinin temelidir. Bu mimarinin merkezinde attention (dikkat) mekanizması yer alır. Daha önceki RNN ve LSTM tabanlı modeller metni kelime kelime sırayla işler ve uzun cümlelerde baştaki bilgiyi 'unutmaya' eğilimliydi. Attention ise bir cümledeki her kelimenin, diğer tüm kelimelere doğrudan bakabilmesini sağlar.
Basit bir örnek: 'Konteyner limana ulaştı çünkü o, planlanandan erken yola çıkmıştı.' cümlesinde 'o' kelimesinin neyi kastettiğini anlamak için modelin 'konteyner' kelimesine, 'liman' kelimesinden daha fazla dikkat etmesi gerekir. Attention mekanizması, her kelime için bu 'kime ne kadar bakmalıyım' ağırlıklarını veriden öğrenir. Model eğitildikçe bu ağırlıklar dilbilgisi, anlam, referans ve hatta mantıksal ilişkileri yakalamaya başlar.
Bu yazı sadece akademik bir merak değil: attention'ın nasıl çalıştığını bilmek, bir LLM'i şirket içinde çalıştırırken ne kadar GPU belleği gerektiğini, bağlam uzunluğunun neden maliyeti katladığını ve hangi model mimarisinin sizin iş yükünüze uygun olduğunu anlamanın anahtarıdır. MeSoft olarak müşterilerimize model önerirken bu mimari detayları doğrudan hesaba katıyoruz.
Attention, her token (kelime veya kelime parçası) için üç vektör üretir: Query (Q, 'ne arıyorum?'), Key (K, 'ben neyim?') ve Value (V, 'taşıdığım bilgi'). Bir token'ın diğer bir token'a ne kadar dikkat edeceği, kendi Query vektörü ile diğerinin Key vektörünün benzerliğiyle (nokta çarpımı) ölçülür. Bu benzerlik skorları softmax ile olasılık dağılımına çevrilir ve Value vektörleri bu ağırlıklarla toplanır.
Formül olarak: Attention(Q, K, V) = softmax(Q·Kᵀ / √d_k) · V. Buradaki √d_k ile bölme, vektör boyutu büyüdükçe nokta çarpımlarının aşırı büyüyüp softmax'ı doyurmasını ve eğitimi kararsız hale getirmesini önler. Q, K ve V vektörleri, token'ın gömme (embedding) vektörünün öğrenilebilir üç ayrı matrisle çarpılmasıyla elde edilir; yani modelin 'neye dikkat edeceğini' belirleyen şey, eğitim sırasında öğrenilen bu matrislerdir.
Dil üretimi yapan (decoder-only) modellerde bir de nedensel maske (causal mask) uygulanır: her token sadece kendisinden önceki token'lara bakabilir, gelecekteki kelimeleri göremez. Bu, modelin metni soldan sağa, bir sonraki token'ı tahmin ederek üretmesini sağlar. GPT, Llama, Qwen, Mistral ve Gemma gibi popüler model ailelerinin tamamı bu yapıyı kullanır.
Tek bir attention hesabı, token'lar arasındaki ilişkinin sadece bir yönünü yakalayabilir. Multi-head attention bu nedenle hesabı paralel olarak birçok 'kafa' (head) üzerinde yapar: bir kafa sözdizimsel ilişkilere, bir diğeri zamirlerin neyi işaret ettiğine, bir başkası sayısal değerlere odaklanabilir. Kafaların çıktıları birleştirilerek bir sonraki katmana aktarılır. Büyük modellerde onlarca katman ve her katmanda onlarca kafa bulunur.
Klasik multi-head attention'da her Query kafasının kendi Key ve Value kafası vardır. Ancak metin üretimi sırasında bu K ve V değerlerinin bellekte tutulması (KV cache) çok pahalıdır. Multi-Query Attention (MQA) tüm Query kafaları için tek bir K/V kafası kullanır; Grouped-Query Attention (GQA) ise Query kafalarını gruplara ayırıp her gruba ortak bir K/V kafası atar. Örneğin 32 Query kafası ve 8 K/V kafası olan bir model, KV cache belleğini klasik yapıya göre 4 kat azaltır ve kaliteden çok az ödün verir. Günümüzün açık kaynak modellerinin büyük bölümü GQA kullanır.
Attention kendi başına kelimelerin sırasını bilmez; 'liman konteyneri taşıdı' ile 'konteyner limanı taşıdı' aynı kelime kümesidir. Bu yüzden modele konum bilgisi eklenir. Modern modellerin çoğu RoPE (Rotary Position Embedding) kullanır: Query ve Key vektörleri token'ın konumuna göre döndürülür, böylece iki token arasındaki göreli mesafe attention skoruna doğal olarak yansır. RoPE'nin ölçeklendirme teknikleri (ör. YaRN), modellerin eğitildiklerinden daha uzun bağlamlara genişletilmesinde de kullanılır.
Attention'ın gücü aynı zamanda maliyetidir: n token'lık bir metinde her token diğer tüm token'lara baktığı için hesaplama ve (naif uygulamada) bellek ihtiyacı n² ile büyür. 4.000 token'dan 32.000 token'a çıkmak, attention hesabını yaklaşık 64 kat artırır. Bu nedenle '128K bağlam penceresi' reklamı yapan bir modeli uzun dokümanlarla kullanmak, donanım bütçesini doğrudan etkiler.
Metin üretimi sırasında, daha önce işlenmiş token'ların K ve V vektörleri her adımda yeniden hesaplanmasın diye bellekte saklanır; buna KV cache denir. Token başına KV cache boyutu yaklaşık olarak 2 × katman sayısı × K/V kafa sayısı × kafa boyutu × sayı başına bayt formülüyle hesaplanır. 32 katmanlı, 8 K/V kafalı ve 128 boyutlu kafalara sahip 8 milyar parametrelik bir model için bu, FP16'da token başına yaklaşık 128 KB eder. 8.000 token'lık tek bir sohbet yaklaşık 1 GB, aynı anda 20 kullanıcı ise 20 GB ek GPU belleği demektir; modelin kendi ağırlıkları buna dahil değildir.
Bu hesap, on-prem kurulumlarda GPU seçiminin neden sadece 'model sığıyor mu?' sorusu olmadığını gösterir. Kaç eşzamanlı kullanıcı, ne uzunlukta doküman ve ne kadar yanıt süresi hedeflendiği, gereken bellek miktarını model boyutu kadar belirler. Serinin inference optimizasyonu yazısında KV cache'i küçülten quantization ve PagedAttention gibi teknikleri ayrıntılı olarak anlattık.
FlashAttention, attention'ın matematiğini değiştirmeden GPU üzerinde çok daha verimli hesaplanmasını sağlayan bir algoritmadır. Temel fikir, büyük n×n skor matrisini GPU'nun yavaş ana belleğine (HBM) hiç yazmadan, hesabı küçük bloklar halinde hızlı çip içi bellekte (SRAM) yapmaktır. Sonuç birebir aynıdır (yaklaşık değil), ancak bellek kullanımı n² yerine n ile büyür ve uzun bağlamlarda ciddi hız kazancı elde edilir. vLLM, TGI ve PyTorch gibi modern çerçeveler bu optimizasyonu varsayılan olarak kullanır.
Bunun yanında mimari düzeyde de verimlilik teknikleri vardır: sliding window attention her token'ın sadece son birkaç bin token'a bakmasını sağlayarak maliyeti sınırlar; bazı modeller yerel ve global attention katmanlarını dönüşümlü kullanır; Mixture-of-Experts (MoE) mimarileri ise attention'dan sonraki besleme katmanlarında her token için parametrelerin sadece bir kısmını çalıştırarak hesaplama maliyetini düşürür. Bir model seçerken bu mimari tercihler, benzer parametre sayısındaki iki model arasında büyük performans farkları yaratabilir.
Özetle attention, LLM'lerin bağlamı anlamasını sağlayan ama aynı zamanda donanım maliyetinin büyük kısmını belirleyen mekanizmadır. MeSoft olarak Mersin'deki şirketlere yapay zeka altyapısı kurarken bu mimari bilgiyi, gerçek iş yükü ölçümleriyle birleştirerek 'ihtiyacınızdan büyük değil, ihtiyacınız kadar' bir donanım ve model seçimi öneriyoruz. Attention'ın pratikteki karşılığını görmek isterseniz, serinin RAG yazısında uzun bağlam yerine akıllı aramanın neden daha verimli olduğunu inceleyebilirsiniz.