tag Attention

Flash Attention (Flash Attention)

Bu sayfada Attention (Flash Attention (Flash Attention)) etiketi ile işaretlenmiş 5 yapay zeka kavramını bulabilirsiniz.

Flash Attention, Transformer modellerinin dikkat mekanizmasini GPU yuksek bant genisligi bellegine (HBM - High Bandwidth Memory) erisimleri en aza indirecek sekilde yeniden duzenleyen IO-bilincloi bir hesaplama yontemidir. Standart dikkat algoritmasinin O(n²) bellek karmasikligi yerine O(n) bellek kullanimi saglar; bu fark ozellekle uzun baglam pencerelerinde dramatik bir verimlilik artisi anlamina gelir. Standart dikkat hesaplamasinda Q, K, V (sorgu, anahtar, deger) matrislerinin tam NxN boyutundaki dikkat matrisi GPU HBM'e yazilir ve tekrar okunur. N token sayisi arttikca bu matris icin gereken bellek ve HBM erisim sayisi karesiyle buyur; bu hem yavas hem bellek yogun bir yaklasimdir. Flash Attention'in cozumu tiling (karo) teknigidir. Giris matrisleri kucuk bloklara (tile) ayrılan bu yaklaşimda her blok GPU'nun hizli SRAM on bellegine yuklenir ve dikkat hesaplamasi orada tamamlanir. SRAM HBM'den cok daha hizli ve daha kucuk; Flash Attention, HBM yazma/okuma sayisini agresif sekilde azaltarak hesaplamanin bellege bagli (memory-bound) darbogazini ortadan kaldirir. Yeniden hesaplama (recomputation) teknigi geri yayilim sirasindaki bellek ihtiyacini yonetir. Ileri geciste ara sonuclar kaydedilmez; geri yayilim sirasinda gerektiginde yeniden hesaplanir. Bu, bellek tasarrufunu saglarken ekstra hesaplama maliyeti getirir; ancak bu denge cok kucuk bir maliyet olarak kalmaktadir. Tri Dao ve ekibi tarafindan gelistirilmis olan FlashAttention-1 2022'de yayimlanmis; FlashAttention-2 daha iyi is bolumu ve paralellestirme ile belirgin hizlanma saglamistir. FlashAttention-3, NVIDIA Hopper mimarisinin asenkron boru hatlarini ve FP8 destegiyle daha da yuksek verimlilik sunmaktadir. PyTorch'un scaled_dot_product_attention API'si Flash Attention'i varsayilan uygulama olarak entegre etmistir; bu nedenle gunumuzde cok sayida Transformer uygulamasi Flash Attention'dan dolayı, bunu fark etmeden yararlanmaktadir. **Sik Sorulan Sorular** **Flash Attention kullanmak icin ne yapmam gerekir?** PyTorch >= 2.0'da torch.nn.functional.scaled_dot_product_attention kullanan herhangi bir model Flash Attention'dan otomatik olarak yararlanir. flash-attn paketini kurarak HuggingFace Transformers ve diger cercevedeki modellere Flash Attention 2/3 entegre edilebilir. **Flash Attention hangi GPU'larda calisir?** FlashAttention-2 NVIDIA Ampere (A100) ve Hopper (H100) GPU'larinda en iyi performansi gosterir; RTX serisi tuketici GPU'larinda da calisir. FlashAttention-3 Hopper mimarisine ozellestirilmistir. **Flash Attention ciktiyi degistirir mi?** Hayir. Flash Attention standart dikkat ile mathematiksel olarak ayni sonucu uretir; fark yalnizca hesaplama verimliligindedir. **Uzun baglam neden Flash Attention olmadan bu kadar zorlayicidir?** 128K token icin standart dikkat n²=16.4 milyar eleman boyutunda bir matris gerektirir; bu GPU bellegini tamamen asabilir. Flash Attention bu sorunu tiling ile cozerek pratik uzun baglam islemesini mumkun kilar.

bolt

Flash Attention (Flash Attention)

Flash Attention, Transformer modellerinin dikkat mekanizmasini GPU yuksek bant genisligi bellegine (HBM - High Bandwidth Memory) erisimleri en aza indirecek sekilde yeniden duzenleyen IO-bilincloi bir hesaplama yontemidir. Standart dikkat algoritmasinin O(n²) bellek karmasikligi yerine O(n) bellek kullanimi saglar; bu fark ozellekle uzun baglam pencerelerinde dramatik bir verimlilik artisi anlamina gelir. Standart dikkat hesaplamasinda Q, K, V (sorgu, anahtar, deger) matrislerinin tam NxN boyutundaki dikkat matrisi GPU HBM'e yazilir ve tekrar okunur. N token sayisi arttikca bu matris icin gereken bellek ve HBM erisim sayisi karesiyle buyur; bu hem yavas hem bellek yogun bir yaklasimdir. Flash Attention'in cozumu tiling (karo) teknigidir. Giris matrisleri kucuk bloklara (tile) ayrılan bu yaklaşimda her blok GPU'nun hizli SRAM on bellegine yuklenir ve dikkat hesaplamasi orada tamamlanir. SRAM HBM'den cok daha hizli ve daha kucuk; Flash Attention, HBM yazma/okuma sayisini agresif sekilde azaltarak hesaplamanin bellege bagli (memory-bound) darbogazini ortadan kaldirir. Yeniden hesaplama (recomputation) teknigi geri yayilim sirasindaki bellek ihtiyacini yonetir. Ileri geciste ara sonuclar kaydedilmez; geri yayilim sirasinda gerektiginde yeniden hesaplanir. Bu, bellek tasarrufunu saglarken ekstra hesaplama maliyeti getirir; ancak bu denge cok kucuk bir maliyet olarak kalmaktadir. Tri Dao ve ekibi tarafindan gelistirilmis olan FlashAttention-1 2022'de yayimlanmis; FlashAttention-2 daha iyi is bolumu ve paralellestirme ile belirgin hizlanma saglamistir. FlashAttention-3, NVIDIA Hopper mimarisinin asenkron boru hatlarini ve FP8 destegiyle daha da yuksek verimlilik sunmaktadir. PyTorch'un scaled_dot_product_attention API'si Flash Attention'i varsayilan uygulama olarak entegre etmistir; bu nedenle gunumuzde cok sayida Transformer uygulamasi Flash Attention'dan dolayı, bunu fark etmeden yararlanmaktadir. **Sik Sorulan Sorular** **Flash Attention kullanmak icin ne yapmam gerekir?** PyTorch >= 2.0'da torch.nn.functional.scaled_dot_product_attention kullanan herhangi bir model Flash Attention'dan otomatik olarak yararlanir. flash-attn paketini kurarak HuggingFace Transformers ve diger cercevedeki modellere Flash Attention 2/3 entegre edilebilir. **Flash Attention hangi GPU'larda calisir?** FlashAttention-2 NVIDIA Ampere (A100) ve Hopper (H100) GPU'larinda en iyi performansi gosterir; RTX serisi tuketici GPU'larinda da calisir. FlashAttention-3 Hopper mimarisine ozellestirilmistir. **Flash Attention ciktiyi degistirir mi?** Hayir. Flash Attention standart dikkat ile mathematiksel olarak ayni sonucu uretir; fark yalnizca hesaplama verimliligindedir. **Uzun baglam neden Flash Attention olmadan bu kadar zorlayicidir?** 128K token icin standart dikkat n²=16.4 milyar eleman boyutunda bir matris gerektirir; bu GPU bellegini tamamen asabilir. Flash Attention bu sorunu tiling ile cozerek pratik uzun baglam islemesini mumkun kilar.

arrow_forward
memory

KV Cache (Anahtar-Değer Önbelleği)

KV Cache (Key-Value Cache — Anahtar-Değer Önbelleği), transformer tabanlı büyük dil modellerinin otomatik regresif çıkarımında hesaplama verimliliğini artıran temel bir bellek optimizasyon mekanizmasıdır. Token üretiminde her adımda tüm geçmiş tokenların dikkat hesaplamalarını yeniden yapmak yerine, daha önce hesaplanan anahtar (Key) ve değer (Value) matrislerini bellekte saklayarak bu maliyeti ortadan kaldırır. Böylece naif O(n²) karmaşıklık O(n)'e indirilir ve model, uzun bağlamlarda bile tutarlı bir hızda yanıt üretebilir. Transformer mimarisindeki çok-başlı dikkat (multi-head attention) katmanında, her token için K ve V vektörleri hesaplanır. Otoregresif üretimde n token zaten üretilmişse, n+1. token için önceki n tokenın K ve V değerleri önbellekten okunabilir; yalnızca yeni tokena ait hesaplama yapılır ve sonuç önbelleğe eklenir. Bu süreç her üretim adımında yalnızca artımlı bir işlem gerektirir ve toplam çıkarım hızını dramatik biçimde artırır. Bellek tüketimi KV Cache'in en kritik tasarım kısıtıdır. Hesaplama formülü şudur: 2 × katman_sayısı × kafa_sayısı × kafa_boyutu × dizi_uzunluğu × bit_genişliği. 7 milyar parametreli bir modelde 4096 token bağlam için FP16 ile yaklaşık 500 MB gerekir; 128K token bağlamda bu değer 10–15 GB'a ulaşabilir. Toplu çıkarımda farklı uzunluktaki isteklerin KV Cache'leri VRAM'i model ağırlıklarıyla rekabet eder biçimde tüketir ve bu durum maksimum batch boyutunu sınırlandırır. Bu baskıyı hafifletmek için sektörde birkaç kritik yöntem geliştirilmiştir. Grouped Query Attention (GQA) ve Multi-Query Attention (MQA), birden fazla sorgu kafasına tek bir K-V matrisi atayarak önbellek boyutunu önemli ölçüde küçültür; Llama 3, Gemma ve Mistral bu tekniği standart olarak kullanır. KV cache kuantizasyonu (INT8/FP8) bellek tüketimini 2–4 kat azaltırken kalite kaybını sınırlı tutar. vLLM'in Paged Attention yöntemi, cache'i sabit boyutlu sayfalar hâlinde yönetir ve bellek parçalanması sorununu ortadan kaldırır. API düzeyinde Prompt Caching ise tekrar eden sistem promptlarının K-V hesaplamalarını sunucu tarafında saklayarak hem gecikmeyi hem de maliyeti düşürür; Anthropic Claude, OpenAI ve Google bu özelliği prefix caching adıyla sunar. DeepSeek'in Multi-head Latent Attention (MLA) mimarisi, K-V vektörlerini sıkıştırılmış bir gizli uzaya projekte ederek önbellek boyutunu dramatik biçimde küçültür ve uzun bağlam işlemeyi yeniden tanımlar.

arrow_forward
hub

Transformer (Dönüştürücü Mimarisi)

Transformer, 2017'de Google araştırmacılarının "Attention Is All You Need" makalesiyle tanıttığı ve bugünkü yapay zeka modellerinin büyük bölümünün temelini oluşturan derin öğrenme mimarisidir. Veriyi kelime kelime, sıralı biçimde işleyen RNN ve LSTM modellerinin aksine Transformer, Self-Attention (öz-dikkat) mekanizmasıyla bir dizideki tüm öğeleri aynı anda işler: her kelime, cümledeki diğer tüm kelimelerle ilişkisini eşzamanlı hesaplar. Bu paralel çalışma biçimi iki büyük sorunu birden çözer. Birincisi, GPU'ların matris çarpımındaki gücünden tam olarak yararlanıldığı için eğitim çok daha hızlıdır; devasa veri setleriyle milyarlarca parametreli model eğitmek ancak bu mimariyle pratik hale gelmiştir. İkincisi, uzak kelimeler arasındaki bağlamsal ilişkiler kaybolmaz; model uzun bir metnin başındaki bilgiyi sonunda da hatırlar. Transformer'ın önemi dil işlemeyle sınırlı kalmadı. ChatGPT, Claude, Gemini ve Llama gibi büyük dil modellerinin (LLM) tamamı bu mimari üzerine kuruludur; BERT arama motorlarında sorgu anlamada, GPT ailesi metin ve kod üretiminde kullanılır. Görüntü tarafında Vision Transformer (ViT) sınıflandırma ve nesne tanımada CNN'lere güçlü bir alternatif oldu; Whisper konuşma tanımada, AlphaFold 2 ise protein yapısı tahmininde aynı temeli kullanır. Pratikte bugün bir sohbet botuyla konuştuğunuzda, makine çevirisi yaptığınızda veya yapay zeka destekli kod tamamlama kullandığınızda arka planda neredeyse her zaman bir Transformer çalışır. Mimarinin bir diğer kritik özelliği öngörülebilir ölçeklenmesidir: parametre, veri ve hesaplama arttıkça performans da düzenli biçimde artar; bu ölçekleme yasaları son yılların yapay zeka araştırma gündemini belirlemiştir.

arrow_forward
code_blocks

Kayan Pencere Dikkati (Sliding Window Attention)

Kayan Pencere Dikkati (Sliding Window Attention, SWA), transformer mimarisinde her tokenın bütün diziye değil yalnızca belirli bir pencere boyutundaki komşu tokenlara dikkat ettiği verimli bir attention yöntemidir. Klasik tam dikkat (full self-attention) O(n²) bellek ve hesaplama karmaşıklığına yol açarken, kayan pencere yaklaşımı bunu O(n·w) düzeyine indirir; burada w pencere boyutunu gösterir. Tam dikkat mekanizmasında n uzunluğundaki bir dizi için n² çift dikkat hesaplamak gerekir; bu, 8.192 token uzunluğunda bile yaklaşık 67 milyon hesaplama anlamına gelir. Kayan Pencere Dikkati'nde her token yalnızca kendi konumunun w/2 soluna ve sağına dikkat eder. Pencere dizi boyunca kaydırılır ve bellek tüketimi sabit kalır. Mistral 7B bu mekanizmayı temel attention katmanlarında benimseyerek hem çıkarım hızını artırmış hem de uzun bağlam işleme kapasitesini genişletmiştir. Longformer ise yerel kayan pencereyi, belgelerin tamamını temsil eden global dikkat tokenleriyle birleştirerek soru-cevap ve özetleme görevlerinde başarılı sonuçlar elde etmiştir. BigBird modeli de benzer bir yaklaşımla yerel, global ve rastgele dikkat kombinasyonunu kullanır. Kayan Pencere Dikkati, uzak tokenlara doğrudan erişimi kısıtladığından bazı görevlerde tam dikkate kıyasla dezavantaj yaratabilir. Bu sınırlamayı aşmak için genellikle dönüşümlü katmanlar kullanılır: modelin bazı katmanları tam dikkat, bazıları ise kayan pencere dikkati uygular. Mistral bu stratejiyi benimseyerek hesaplama verimliliğini korurken uzun menzilli bağımlılıkları yönetme kapasitesini de sürdürür. Uzun bağlamlı uygulamaların giderek yaygınlaşmasıyla birlikte — hukuk belgeleri analizi, uzun kod tabanları, bilimsel makaleler — Kayan Pencere Dikkati ve benzeri verimlilik teknikleri (Flash Attention, GQA) LLM altyapısının temel bileşenleri haline gelmiştir. GPT-4 Turbo ve Claude'un 200K token desteği gibi örnekler, bu tür verimlilik mekanizmalarının önkoşulluğunu ortaya koymaktadır. Hukuk belgesi analizi, kod tabanı inceleme ve uzun bilimsel raporların özetlenmesi bu mekanizmanın doğrudan yararlı olduğu alanlardır.

arrow_forward
code_blocks

Positional Encoding (Konum Kodlama (Positional Encoding))

Konum Kodlama (Positional Encoding), Transformer mimarisinin temel bileşenlerinden biridir. Geleneksel Tekrarlayan Sinir Ağları (RNN) ve LSTM modelleri token'ları sırayla işleyerek doğal olarak konum bilgisini korur; Transformer modelleri ise tüm token'ları aynı anda paralel biçimde işler. Bu yaklaşım hesapsal açıdan büyük bir avantaj sunarken, modelin dizideki sıra bilgisini doğrudan elde edememesi anlamına gelir. Konum kodlama bu sorunu çözer: her token'ın öğrenilmiş embedding vektörüne, o token'ın dizideki konumunu temsil eden sayısal bir vektör eklenir. Örneğin "Kedi fareyi kovaladı" cümlesinde "kedi" kelimesi 1. konumda, "fareyi" 2. konumda yer alır; bu iki konumun farklı konum vektörleri sayesinde model sözcüklerin sıralamasını anlayabilir. Sinüzoidal Konum Kodlama, orijinal "Attention Is All You Need" makalesinde (Vaswani ve diğerleri, 2017) kullanılmış yöntemdir. Bu yaklaşımda her konum için sinüs ve kosinüs fonksiyonları hesaplanır: PE(pos, 2i) = sin(pos / 10000^(2i/d)) ve PE(pos, 2i+1) = cos(pos / 10000^(2i/d)). Farklı frekanstaki dalgalar sayesinde her konum benzersiz bir imzaya sahip olur; bu vektörler öğrenilmez, eğitim sırasında sabit kalır. BERT ve GPT-2 gibi modeller, konum bilgisini eğitim sırasında veri üzerinden öğrenir. Bu öğrenilmiş konum gömmeleri daha esnek bir yapı sunmakla birlikte eğitimde görülmemiş dizi uzunluklarına genelleme yapmakta zorlanabilir. RoPE (Rotary Position Embedding), LLaMA, Mistral, Gemma ve Qwen ailesi gibi modern dil modellerinin büyük çoğunluğunun tercih ettiği bir yöntemdir. RoPE, konum bilgisini döndürme matrisleri aracılığıyla dikkat mekanizmasına doğrudan entegre eder. Hem mutlak hem göreli konum bilgisini etkin biçimde kodlar; uzun bağlam uzunluklarına genelleme konusunda önceki yöntemlere kıyasla belirgin üstünlük gösterir. ALiBi (Attention with Linear Biases) ise dikkat puanlarına konum farkına dayalı doğrusal bir ceza ekler. Bu tasarım, modeli eğitimde hiç görmediği dizi uzunluklarına genellemeye yardımcı olur ve bellek açısından verimli bir çözüm sunar. Konum kodlamasının seçimi modelin bağlam penceresi boyutunu, çok dilli performansını ve hesapsal verimini doğrudan etkiler. Bu nedenle büyük dil modeli araştırmalarında, özellikle uzun bağlam penceresi geliştirme çalışmalarında, aktif olarak araştırılan bir alan olmayı sürdürmektedir.

arrow_forward