Sparse Attention
Seyrek dikkat, her token'ın yerel pencere, küresel token'lar veya en yüksek k değerine sahip seçimler gibi belirli bir alt kümeye dikkat etmesini sağlayarak uzun dizilerin maliyetini düşürür.
Seyrek dikkat, her sorgunun dizideki tüm anahtarları değil, yalnızca seçilen bir alt kümeyi puanladığı dikkat mekanizmaları ailesidir. N token üzerinde tam öz dikkat, her başlık için N² puan hesaplar; bu nedenle bir belgenin uzunluğunu ikiye katlamak dikkat maliyetini dört katına çıkarır. Her token'ın k başkasına dikkat ettiği bir örüntünün maliyeti ise N·k'dir. Örüntü, yerel bir pencere gibi önceden sabitlenebilir veya her sorgu için en yüksek puanlı anahtarlar gibi içeriğe göre seçilebilir. OpenAI'nin 2019 tarihli Sparse Transformer modeli, on binlerce adımlık dizileri modellemek için O(N√N) maliyetli aralıklı örüntüler kullandı; günümüzdeki büyük dil modelleri (LLM'ler) ise 100.000'den fazla token içeren bağlam pencerelerini işlemek için seyrek katmanlardan yararlanıyor.
Yaygın Seyreklik Örüntüleri#
Sabit örüntüler, hangi çiftlerin puanlanacağına önceden karar verir. Kayan pencere dikkati, her token'ın yalnızca önceki w token'ı görmesini sağlar: Mistral 7B 4.096 token'lık bir pencere kullanır; OpenAI'nin açık ağırlıklı gpt-oss modelleri ise 128 token'lık pencere katmanlarıyla yoğun katmanları dönüşümlü kullanır. GPT-3 de yoğun ve yerel bantlı katmanları aynı şekilde dönüşümlü kullanmıştı. Her pencereli katman bilgiyi w token daha ileri taşıdığından, derin bir yığın uzak token'ları yine de birbirine bağlar. Aralıklı örüntüler, bilginin tek bir katmanda da uzun mesafeler katetmesi için her s'inci önceki token'ı ekler. Küresel token'lar her konuma dikkat eder ve her konumdan dikkat alır: Longformer bunları sınıflandırma token'ı gibi görev token'larına atar; BigBird rastgele bağlantılar da ekler; dikkat havuzları ise akışlı üretimin kararlı kalması için ilk birkaç token'ı her sorgunun görebilmesini sağlar.
İçeriğe dayalı örüntüler, çiftleri verilerden seçer. DeepSeek'in Native Sparse Attention (NSA, 2025) yöntemi, anahtar bloklarının sıkıştırılmış özetlerini, en alakalı bloklardan oluşan bir seçimi ve kayan bir pencereyi bir araya getirir; tümü uçtan uca eğitilir. DeepSeek-V3.2 modelindeki DeepSeek Sparse Attention, her sorgu için önceki her token'ı puanlayan küçük bir "yıldırım indeksleyici" çalıştırır ve ardından yalnızca en yüksek puanlı 2.048 token üzerinde tam dikkat hesaplar. Böylece bağlam ne kadar uzarsa uzasın her sorgunun ana dikkat maliyeti sabit kalır. Üretim modelleri bu kuralları çoğu zaman bir arada kullanır:
Bir Örüntüyü Tasarrufa Dönüştürme#
Yoğun bir puan matrisine uygulanan maske yine de her puanı hesaplar; bu nedenle hızlanma, matrisin boş döşemelerini atlayan çekirdeklerden gelir. Flash attention çekirdekleri kayan pencereleri doğrudan destekler; PyTorch'un FlexAttention özelliği ise herhangi bir maske işlevini blok seyrek bir GPU çekirdeğine derler. create_block_mask, 1.024 token'lık pencereyle dört dikkat havuzu token'ı için böyle bir çekirdeğin hangi blokları atladığını gösterir:
from torch.nn.attention.flex_attention import create_block_mask
seq_len, window, sinks = 8192, 1024, 4
def local_plus_sinks(b, h, q_idx, kv_idx):
"""Causal attention to the previous 1,024 tokens plus the first 4 tokens."""
causal = q_idx >= kv_idx
return causal & ((q_idx - kv_idx <= window) | (kv_idx < sinks))
# FlexAttention, çekirdeklerin boş blokları atlayabilmesi için maskeyi 128 x 128'lik bloklara böler
block_mask = create_block_mask(local_plus_sinks, B=None, H=None, Q_LEN=seq_len, KV_LEN=seq_len, device="cpu")
print(block_mask)Çıktı, 8.192 × 8.192 puan matrisindeki 128 × 128'lik blokların hiçbir geçerli çift içermeyen bölümünü, yani sparsity=85.47% değerini bildirir ve örüntüyü pencere için çapraz bir bant, dikkat havuzu token'ları içinse solda bir sütun olarak çizer. torch.compile altında flex_attention çalıştığında çekirdek bu blokları tamamen atlar.
Seyrek Dikkat ve İlgili Kavramlar#
- Flash attention: İşlemi hızlı, yonga üstü bellekte döşemelere bölerek her çift üzerinde tam dikkati hesaplayan, G/Ç farkındalıklı bir çekirdektir. Döşemeler, blok seyrek çekirdeklerin atladığı birimlerdir.
- Doğrusal dikkat: Her çifti korur ancak softmax işlevini bir özellik haritasıyla değiştirir; böylece geçmişteki tüm anahtar ve değerler sabit boyutlu bir duruma sıkıştırılır.
- Deforme edilebilir dikkat: Her sorgunun sabit bir örüntü yerine, özellik haritasında öğrenilmiş uzaklıklardaki birkaç örnekleme noktasına dikkat ettiği bir görü mekanizmasıdır.
- Uzman karışımı (MoE): Parametrelerde seyreklik kullanır; dikkat örüntüsü yoğun kalırken her token yalnızca birkaç uzman ağı etkinleştirir.
Uygulamalar#
Uzun bağlamlı dil modelleri başlıca kullanım alanıdır: seyrek katmanlar hesaplama maliyetini, pencereli katmanlar ise KV önbelleğini sınırlar. Böylece modeller tek bir istekte uzun raporları özetleyebilir veya büyük kod tabanlarında arama yapabilir. BigBird, tipik bir cümleden çok daha uzun olan binlerce baz çiftlik girdi üzerinde destekleyici bölgeleri tahmin etmek için seyrek örüntüsünü DNA dizilerine uyguladı. Bilgisayarlı görüde token sayısı görüntü çözünürlüğüyle arttığından, modeller dikkati yerel bölgelerle sınırlar: Swin Transformer kaydırılmış pencerelerin içine dikkat eder. Ultralytics paketinde bulunan, Buffalo Üniversitesi ve Çin Bilimler Akademisi Üniversitesi araştırmacılarının geliştirdiği dikkat odaklı bir algılayıcı olan YOLO12, alan dikkatini kullanır: 16 adımlı omurga aşaması, 640 piksel boyutundaki bir görüntünün 40 × 40'lık özellik haritasını 400 token içeren dört yatay şeride böler ve yalnızca her şerit içinde dikkat uygular. Böylece 1.600 token'ın tümü üzerinde tam dikkatin gerektirdiği 2,56 milyon çiftin dörtte biri puanlanır.










