Çoklu Sorgu Dikkati (Multi-Query Attention)
Mimarimulti-query attention nedir?
Standart multi-head attention'da modelin her dikkat başlığı (head) kendi sorgu (query), anahtar (key) ve değer (value) setine sahiptir. Multi-query attention (MQA) bu tabloyu değiştirir: her başlık kendi query'sini korur ama key ve value setini bütün başlıklar tek bir kopyadan paylaşır.
Sonuç: model neredeyse aynı ifade gücünü korurken sakladığı key/value miktarı köklü biçimde azalır.
Nasıl çalışır?
Bir transformer'da attention, query ile key'leri eşleştirip value'ları buna göre harmanlar. Multi-head'de örneğin 32 başlık varsa 32 ayrı key/value seti tutulur. MQA'da 32 query kalır ama tek bir key/value seti olur. Bu, üretim (decode) sırasında dolan KV cache'in boyutunu başlık sayısı kadar küçültür.
MQA ile multi-head arasındaki ara nokta ise grouped-query attention'dır (GQA): başlıklar gruplara ayrılır, her grup bir key/value setini paylaşır. Yani MHA → GQA → MQA giderek daha çok paylaşım, daha az bellek demektir.
Neden önemli?
Uzun bağlamlarda ve hızlı üretim gereken senaryolarda asıl darboğaz KV cache'in kapladığı bellektir. MQA bu yükü ciddi biçimde hafifletir, böylece model daha uzun bağlamı daha az VRAM ile işleyebilir ve token üretimi hızlanır. Maliyet: bazen kalitede küçük bir düşüş; bu yüzden pratikte çoğu modern model tam MQA yerine dengeli GQA'yı seçer.
Kullanım alanları
MQA ilk olarak hızlı çıkarım gereken büyük dil modellerinde popüler oldu. Bugün pek çok açık ve kapalı model, uzun context ve düşük gecikme için ya doğrudan MQA ya da onun akrabası GQA kullanır. Yerelde model çalıştırırken "neden bu model bu kadar az VRAM ile uzun bağlam kaldırıyor" sorusunun cevaplarından biri budur.
Ilgili terimler
