React Flow mini map
Derin Öğrenmeileri15 dk

Attention Mekanizması: Derinlemesine İnceleme

Bahdanau'dan Flash Attention'a, modern LLM'lerin kalbi

Attention mekanizması, bir orkestra şefinin her enstrümana ne zaman dikkat edeceğini bilmesi gibidir. 2015'teki ilk adımlarından bugünkü Flash Attention'a kadar, bu mekanizma modern yapay zekanın kalbi haline geldi. Şimdi bu kalbin anatomisini katman katman keşfedeceğiz.

2015'te Bahdanau ve ekibi, RNN encoder-decoder modellerinde **ilk attention mekanizmasını*…

📚Kitap Okurken Not Alma

Bahdanau attention, bir kitabı okurken önemli yerlerin altını çizmek gibidir. Özet yazarken (decoder), kitabın tamamına bakmak yerine çizdiğiniz yerlere (yüksek ağırlıklı encoder durumları) odaklanırsınız. Alignment model ise hangi satırların altını çizeceğinize karar veren içgüdünüzdür.

Transformer'ın temel taşı: **QKᵀ/√dₖ → softmax → V**…

Attention(Q,K,V) = softmax(QKᵀ / √dₖ) · V

dₖ = key vektör boyutu. √dₖ ile bölme, skorları varyansı 1 olacak şekilde normalize eder. dₖ=64 için √64=8 ile böleriz.

Scaled Dot-Product Attention — boyut akışını takip edin

Python
1import torch
2import torch.nn.functional as F
3
4def scaled_dot_product_attention(Q, K, V):
5 # Q, K, V: (batch, seq_len, d_k)
6 d_k = K.size(-1)
7
8 # Skorlar: (batch, seq_len, seq_len)
9 scores = Q @ K.transpose(-2, -1) / (d_k ** 0.5)
10
11 # Dikkat ağırlıkları: satır toplamı 1
12 attn_weights = F.softmax(scores, dim=-1)
13
14 # Çıktı: (batch, seq_len, d_k)
15 return attn_weights @ V
16
17# Örnek: batch=2, seq=4, d_k=8
18Q = torch.randn(2, 4, 8)
19K = torch.randn(2, 4, 8)
20V = torch.randn(2, 4, 8)
21out = scaled_dot_product_attention(Q, K, V)
22print(out.shape) # torch.Size([2, 4, 8])

⚠️√dₖ olmadan ne olur? dₖ=512 için nokta çarpımları ~22 mertebesine çıkabilir. softmax(22) ≈ 1.0 — gradyan sıfırlanır, model öğrenemez!

Tek bir attention, tek bir ilişki tipini yakalar. **Multi-head** ile h farklı bakış açısı …

MultiHead(Q,K,V) = Concat(head₁,...,headₕ) · Wᴼ

headᵢ = Attention(QWᵢᵠ, KWᵢᴷ, VWᵢⱽ). Her kafanın boyutu d_model/h olur. 768 boyut, 12 kafa → her kafa 64 boyut.

Self-attention'da Q, K, V aynı kaynaktan gelir. **Cross-attention**'da decoder Q üretir, e…

Self-Attention

  • ·Q, K, V aynı diziden
  • ·BERT, GPT encoder/decoder içi
  • ·Bağlam içi ilişkiler
  • ·Tek kaynak gerekli

Cross-Attention

  • ·Q decoder'dan, K-V encoder'dan
  • ·Çeviri, T5, Vision-Language
  • ·Kaynaklar arası ilişkiler
  • ·İki farklı kaynak gerekli

Standart multi-head'de her kafa kendi K-V çiftine sahip — **inference'ta KV-cache bellek p…

💡GQA, MHA (Multi-Head) ve MQA (Multi-Query, tek K-V) arasında bir denge noktasıdır. MQA çok agresif, MHA çok pahalı — GQA tatlı nokta.

Klasik attention O(n²) bellek kullanır — 100K token için terabaytlar gerekir. **Flash Atte…

🍳Mutfak Tezgahı Metaforu

Klasik attention: Tüm malzemeleri (QKᵀ matrisi) dev bir masaya yayıp işlem yapmak — masa (HBM) büyük ama uzak. Flash Attention: Küçük tezgahta (SRAM) porsiyon porsiyon pişirip tabağa koymak. Toplam yemek aynı, ama mutfakta koşturma (bellek trafiği) 20x azalır.

✦ Quiz

Scaled dot-product attention'da √dₖ ile bölme neden yapılır?

✦ Quiz

Grouped Query Attention (GQA) hangi sorunu çözmek için tasarlanmıştır?

✦ Quiz

Flash Attention'ın temel optimizasyon stratejisi nedir?

ℹ️ViT (Vision Transformer) da aynı multi-head self-attention kullanır. Görüntü 16×16 patch'lere bölünür, her patch bir 'token' olur. Bu konu 'transformer' ve 'attention-2017' konularının doğal devamıdır.

Bağlantılı Konular