tag HızlandırılmışEğitim

Bu sayfada HızlandırılmışEğitim etiketi ile işaretlenmiş 1 yapay zeka kavramını bulabilirsiniz.

Flash Attention, Transformer modellerinin dikkat mekanizmasını GPU yüksek bant genişliği belleğine (HBM - High Bandwidth Memory) erişimleri en aza indirecek şekilde yeniden düzenleyen IO-bilinçli bir hesaplama yöntemidir. Standart dikkat algoritmasının O(n²) bellek karmaşıklığı yerine O(n) bellek kullanımı sağlar; bu fark özellikle uzun bağlam pencerelerinde dramatik bir verimlilik artışı anlamına gelir. Standart dikkat hesaplamasında Q, K, V (sorgu, anahtar, değer) matrislerinin tam NxN boyutundaki dikkat matrisi GPU HBM'e yazılır ve tekrar okunur. N token sayısı arttıkça bu matris için gereken bellek ve HBM erişim sayısı karesiyle büyür; bu hem yavaş hem bellek yoğun bir yaklaşımdır. Flash Attention'ın çözümü tiling (karo) tekniğidir. Giriş matrisleri küçük bloklara (tile) ayrılan bu yaklaşımda her blok GPU'nun hızlı SRAM ön belleğine yüklenir ve dikkat hesaplaması orada tamamlanır. SRAM HBM'den çok daha hızlı ve daha küçük; Flash Attention, HBM yazma/okuma sayısını agresif şekilde azaltarak hesaplamanın belleğe bağlı (memory-bound) darboğazını ortadan kaldırır. Yeniden hesaplama (recomputation) tekniği geri yayılım sırasındaki bellek ihtiyacını yönetir. İleri geçişte ara sonuçlar kaydedilmez; geri yayılım sırasında gerektiğinde yeniden hesaplanır. Bu, bellek tasarrufunu sağlarken ekstra hesaplama maliyeti getirir; ancak bu denge çok küçük bir maliyet olarak kalmaktadır. Tri Dao ve ekibi tarafından geliştirilmiş olan FlashAttention-1 2022'de yayımlanmış; FlashAttention-2 daha iyi iş bölümü ve paralelleştirme ile belirgin hızlanma sağlamıştır. FlashAttention-3, NVIDIA Hopper mimarisinin asenkron boru hatlarını ve FP8 desteğiyle daha da yüksek verimlilik sunmaktadır. PyTorch'un scaled_dot_product_attention API'si Flash Attention'ı varsayılan uygulama olarak entegre etmiştir; bu nedenle günümüzde çok sayıda Transformer uygulaması Flash Attention'dan dolayı, bunu fark etmeden yararlanmaktadır. **Sık Sorulan Sorular** **Flash Attention kullanmak için ne yapmam gerekir?** PyTorch >= 2.0'da torch.nn.functional.scaled_dot_product_attention kullanan herhangi bir model Flash Attention'dan otomatik olarak yararlanır. flash-attn paketini kurarak HuggingFace Transformers ve diğer çerçevedeki modellere Flash Attention 2/3 entegre edilebilir. **Flash Attention hangi GPU'larda çalışır?** FlashAttention-2 NVIDIA Ampere (A100) ve Hopper (H100) GPU'larında en iyi performansı gösterir; RTX serisi tüketici GPU'larında da çalışır. FlashAttention-3 Hopper mimarisine özelleştirilmiştir. **Flash Attention çıktıyı değiştirir mi?** Hayır. Flash Attention standart dikkat ile matematiksel olarak aynı sonucu üretir; fark yalnızca hesaplama verimliliğindedir. **Uzun bağlam neden Flash Attention olmadan bu kadar zorlayıcıdır?** 128K token için standart dikkat n²=16.4 milyar eleman boyutunda bir matris gerektirir; bu GPU belleğini tamamen aşabilir. Flash Attention bu sorunu tiling ile çözerek pratik uzun bağlam işlemesini mümkün kılar.

bolt

Flash Attention (Flash Attention)

Flash Attention, Transformer modellerinin dikkat mekanizmasını GPU yüksek bant genişliği belleğine (HBM - High Bandwidth Memory) erişimleri en aza indirecek şekilde yeniden düzenleyen IO-bilinçli bir hesaplama yöntemidir. Standart dikkat algoritmasının O(n²) bellek karmaşıklığı yerine O(n) bellek kullanımı sağlar; bu fark özellikle uzun bağlam pencerelerinde dramatik bir verimlilik artışı anlamına gelir. Standart dikkat hesaplamasında Q, K, V (sorgu, anahtar, değer) matrislerinin tam NxN boyutundaki dikkat matrisi GPU HBM'e yazılır ve tekrar okunur. N token sayısı arttıkça bu matris için gereken bellek ve HBM erişim sayısı karesiyle büyür; bu hem yavaş hem bellek yoğun bir yaklaşımdır. Flash Attention'ın çözümü tiling (karo) tekniğidir. Giriş matrisleri küçük bloklara (tile) ayrılan bu yaklaşımda her blok GPU'nun hızlı SRAM ön belleğine yüklenir ve dikkat hesaplaması orada tamamlanır. SRAM HBM'den çok daha hızlı ve daha küçük; Flash Attention, HBM yazma/okuma sayısını agresif şekilde azaltarak hesaplamanın belleğe bağlı (memory-bound) darboğazını ortadan kaldırır. Yeniden hesaplama (recomputation) tekniği geri yayılım sırasındaki bellek ihtiyacını yönetir. İleri geçişte ara sonuçlar kaydedilmez; geri yayılım sırasında gerektiğinde yeniden hesaplanır. Bu, bellek tasarrufunu sağlarken ekstra hesaplama maliyeti getirir; ancak bu denge çok küçük bir maliyet olarak kalmaktadır. Tri Dao ve ekibi tarafından geliştirilmiş olan FlashAttention-1 2022'de yayımlanmış; FlashAttention-2 daha iyi iş bölümü ve paralelleştirme ile belirgin hızlanma sağlamıştır. FlashAttention-3, NVIDIA Hopper mimarisinin asenkron boru hatlarını ve FP8 desteğiyle daha da yüksek verimlilik sunmaktadır. PyTorch'un scaled_dot_product_attention API'si Flash Attention'ı varsayılan uygulama olarak entegre etmiştir; bu nedenle günümüzde çok sayıda Transformer uygulaması Flash Attention'dan dolayı, bunu fark etmeden yararlanmaktadır. **Sık Sorulan Sorular** **Flash Attention kullanmak için ne yapmam gerekir?** PyTorch >= 2.0'da torch.nn.functional.scaled_dot_product_attention kullanan herhangi bir model Flash Attention'dan otomatik olarak yararlanır. flash-attn paketini kurarak HuggingFace Transformers ve diğer çerçevedeki modellere Flash Attention 2/3 entegre edilebilir. **Flash Attention hangi GPU'larda çalışır?** FlashAttention-2 NVIDIA Ampere (A100) ve Hopper (H100) GPU'larında en iyi performansı gösterir; RTX serisi tüketici GPU'larında da çalışır. FlashAttention-3 Hopper mimarisine özelleştirilmiştir. **Flash Attention çıktıyı değiştirir mi?** Hayır. Flash Attention standart dikkat ile matematiksel olarak aynı sonucu üretir; fark yalnızca hesaplama verimliliğindedir. **Uzun bağlam neden Flash Attention olmadan bu kadar zorlayıcıdır?** 128K token için standart dikkat n²=16.4 milyar eleman boyutunda bir matris gerektirir; bu GPU belleğini tamamen aşabilir. Flash Attention bu sorunu tiling ile çözerek pratik uzun bağlam işlemesini mümkün kılar.

arrow_forward