Attention Sinks
Dikkat havuzları, genellikle ilk sıradaki ve kullanılmayan dikkat ağırlığını üzerine çeken tokenlardır; bunları önbelleğe almak, LLM'lerin çok uzun akışlarda kararlı kalmasını sağlar.
Dikkat çukuru, içeriği sorguyla ilgisiz olmasına rağmen birçok başlık ve katmanda dikkat ağırlığının büyük bir bölümünü alan bir belirteçtir; çoğunlukla dizinin ilk belirtecidir. MIT, Meta AI ve Carnegie Mellon Üniversitesi'nden Guangxuan Xiao ve çalışma arkadaşları, 2024 ICLR'de yayımlanan Dikkat Çukurlarıyla Verimli Akış Dili Modelleri makalesinde bu etkiye adını verdi. Llama 2, MPT, Falcon ve Pythia gibi büyük dil modellerinin (LLM'lerin), kayan bir KV önbelleği ilk belirteçleri dışarı attığında bozulduğunu ve bu belirteçlerden dördünü tutmanın üretimi yeniden kararlı hâle getirdiğini gösterdiler.
Çukurlar Neden Oluşur#
Öz dikkat, her sorgunun puanlarını softmax ile ağırlıklara dönüştürür ve bu ağırlıkların toplamı her zaman birdir. Bağlamdaki hiçbir belirteç bir başlıkla ilgili olmadığında bile ağırlığın bir yere gitmesi gerekir. Nedensel bir dil modelinde ilk belirteçler sonraki her belirtece görünür; bu nedenle eğitim, başlığın ihtiyaç duymadığı ağırlıkların varsayılan hedefi hâline gelmelerini sağlar. Llama 2'nin StreamingLLM analizinde en alttaki iki katman dışındaki her katmanda, tüm başlıklar başlangıç belirteçlerine dikkat yoğunlaştırdı. Softmax'a bir çukur logiti eklemek bu etkiyi gösterir:
import torch
torch.manual_seed(0)
values = torch.randn(6, 4)
# A query that matches none of the 6 tokens: every score is close to zero
scores = torch.tensor([0.1, -0.2, 0.0, 0.2, -0.1, 0.0])
# Softmax must hand out a total weight of 1, so the output mixes all six values
weights = scores.softmax(dim=-1)
print(f"No sink: weight on tokens {weights.sum():.2f}, output norm {(weights @ values).norm():.2f}")
# A sink logit joins the softmax but carries no value, so it absorbs the spare weight
sink = torch.tensor([3.0])
weights = torch.cat([sink, scores]).softmax(dim=-1)[1:]
print(f"With sink: weight on tokens {weights.sum():.2f}, output norm {(weights @ values).norm():.2f}")Çukur olmadığında başlık, tam ağırlığını ilgisiz altı değer arasında dağıtır ve normu 0,83 olan bir çıktı verir. Çukur logiti 3 olduğunda çukur ağırlığın %77'sini alır ve çıktı 0,19'a düşer; böylece başlık bu sorgu için neredeyse hiçbir şey yapmaz. OpenAI'nin açık ağırlıklı gpt-oss modelleri, her dikkat başlığı için öğrenilmiş bir çukur logitiyle bunu uygular; böylece her başlığın çıktısına katkı sağlamayan artık ağırlıklar için bir yeri olur.
StreamingLLM ile Akışlı Üretim#
Sonsuza dek üretim yapan bir model, herhangi bir bağlam penceresini aşar ve her belirteci KV önbelleğinde tutamaz; yalnızca en yeni belirteçleri tutan basit pencere dikkati ise ilk belirteçler düşer düşmez başarısız olur. StreamingLLM, ilk dört belirtecin anahtar ve değerlerini yakın zamandaki belirteçlerden oluşan kayan pencerenin yanında kalıcı olarak tutar ve konumları özgün metindeki yerlerine göre değil, önbellekteki yerlerine göre atar; her adımda döner konum gömmelerini (RoPE) yeniden uygular:
Bu yöntem, dil modellemesini 4 milyon ve daha fazla belirteç boyunca kararlı tuttu ve her yeni belirteçte önbelleği yeniden hesaplayan kayan pencereden 22,2 kata kadar hızlı çalıştı. Pencere yine de modelin hatırlayabileceklerini sınırlar: ortadan çıkarılan belirteçler kalıcı olarak silinir; bu nedenle akışlı bir sohbet robotu veya yapay zekâ ajanı yalnızca en yakın zamandaki konuşma turlarını hatırlar. Yazarlar ayrıca her örneğin başına, çukur rolünü tek başına üstlenen, özel ve öğrenilebilir bir yer tutucu belirteçle modelleri önceden eğitti.
Dikkat Çukurları ve İlgili Terimler#
- Kayan pencere dikkati: Her belirteci yakın geçmişteki komşularıyla sınırlar. Tam dikkatle eğitilmiş bir modele çıkarım sırasında uygulandığında çukurlar pencereden çıkınca başarısız olur.
- Bağlam aşınması: Bir istem bağlam penceresine sığmaya devam ederken uzadıkça doğruluğun düşmesi.
Görüntü Modellerindeki Çukurlar#
Görsel dönüştürücüler (ViT'ler) benzer bir davranış sergiler. Meta ve Inria araştırmacıları, Görsel Dönüştürücülerin Kayıt Belirteçlerine İhtiyacı Var çalışmalarında, denetimli ve öz denetimli ViT'lerde bilgi bakımından düşük arka plan yamalarında dahili hesaplama için yeniden kullanılan olağan dışı yüksek norma sahip belirteçler buldu. Girdiye birkaç ek kayıt belirteci eklemek bu rolü üstlendi, özellik haritaları ile dikkat haritalarındaki yapay izleri kaldırdı ve yoğun tahmin başarımını artırdı.
Ultralytics paketinde çalışan Meta'nın SAM 2 modeli, video belleğini benzer bir bağlantı noktası artı pencere planıyla sınırlar: her yeni kare için bellek dikkati, video boyunca saklanan kullanıcı istemli karelerin bellek bankası girdilerinin yanı sıra en son 6 karenin girdilerini okur; böylece video ne kadar sürerse sürsün kare başına dikkat maliyeti sabit kalır.










