1 puan yazan GN⁺ 2024-07-12 | 1 yorum | WhatsApp'ta paylaş
  • Attention'ın önemi

    • Attention, Transformer mimarisinin temel katmanıdır ve büyük dil modelleri ile uzun bağlamlı uygulamalarda darboğaz oluşturur.
    • FlashAttention ve FlashAttention-2, GPU'da bellek okuma/yazmayı en aza indirerek Attention'ı hızlandıran yaklaşımın öncülüğünü yaptı.
    • Bu sayede LLM'lerin bağlam uzunluğu önemli ölçüde arttı.
  • FlashAttention-3'ün başlıca teknikleri

    • Eşzamansızlıktan yararlanma: Tensor Cores ve TMA'nın eşzamansızlığından yararlanarak tüm hesaplama ile veri hareketini üst üste bindirir.
    • Blok düzeyinde işlemler: Blok bazlı matris çarpımı ile softmax işlemlerini dönüşümlü olarak yürütür.
    • Düşük hassasiyetli işleme: FP8 düşük hassasiyet desteğini kullanarak performansı artırır.
  • FlashAttention-3'ün performans artışı

    • GPU kullanım verimliliği: H100 GPU'nun azami performansının %75'ine kadar ulaşarak önceki sürümlerden 1.5-2 kat daha hızlıdır.
    • Düşük hassasiyet performansı: FP8 kullanarak işleme hızını artırır ve bellek kullanımını azaltır.
    • Uzun bağlam işleme: Attention mekanizmasını hızlandırarak daha uzun metinleri verimli şekilde işleyebilir.
  • FlashAttention özeti

    • FlashAttention, Attention hesaplamasını yeniden düzenleyip tiling ve yeniden hesaplama kullanarak hızı büyük ölçüde artırır ve bellek kullanımını azaltır.
    • Tiling ile giriş bloklarını yükler, ilgili blok üzerinde Attention uygular ve ardından çıktıyı günceller.
    • Ara Attention matrisini belleğe yazmayarak bellek okuma/yazma miktarını azaltır.
  • Hopper GPU'nun yeni donanım özellikleri

    • WGMMA: Yeni Tensor Cores'u kullanarak yüksek throughput sağlar.
    • TMA: Global bellek ile paylaşımlı bellek arasındaki veri aktarımını hızlandıran donanım birimi.
    • FP8 düşük hassasiyet: FP8 kullanarak Tensor Core throughput'unu iki katına çıkarır.
  • Eşzamansızlık: GEMM ile Softmax'ı üst üste bindirme

    • Üst üste bindirmenin gerekliliği: GEMM ile softmax'ı paralel yürütüp performansı en üst düzeye çıkarır.
    • Ping-pong scheduling: İki warp grubu sırayla GEMM ve softmax yürütürerek performansı artırır.
    • Warp grubu içinde üst üste bindirme: Aynı warp grubu içinde GEMM ile softmax paralel yürütülerek throughput artırılır.
  • Düşük hassasiyet: Tutarsız olmayan işleme ile kuantizasyon hatasını azaltma

    • Tutarsız olmayan işleme: Hadamard dönüşümünü kullanarak kuantizasyon hatasını azaltır.
    • Deney sonuçları: Tutarsız olmayan işleme ile kuantizasyon hatası 2.6 kat azaltılmıştır.
  • Attention benchmark'ları

    • FP16: FlashAttention-2'den yaklaşık 1.6-1.8 kat daha hızlıdır.
    • FP8: En fazla 1.2 PFLOPS'a ulaşır.

GN⁺ özeti

  • FlashAttention-3, GPU'nun yeni donanım özelliklerinden yararlanarak Attention mekanizmasının performansını büyük ölçüde artırır.
  • Uzun bağlamı verimli şekilde işleyebildiği için büyük dil modellerinin performansını en üst düzeye çıkarır.
  • PyTorch gibi başlıca framework'lere entegre edilme olasılığı yüksek olduğundan, gelecekte yapay zeka araştırmaları ve uygulamaları üzerinde büyük etkisi olacaktır.
  • Benzer işlevler sunan projeler arasında Triton ve cuDNN bulunur.

1 yorum

 
GN⁺ 2024-07-12
Hacker News görüşleri
  • Tri Dao'nun FA3 çalışmasına 2022 Nisan'da başlamış göründüğü söyleniyor

    • Hopper/H100 duyurusundan sonra kodun ancak 2 yıl sonra yayımlanmasının nedeni, muhtemelen daha iyi bir çözümün hazır olması olabilir
    • Tri'nin son araştırmaları SSM ve Mamba tarzı mimarilere odaklanıyor
    • Flash Attention, dizi uzunluğu açısından ikinci dereceden zaman karmaşıklığına sahip, ancak daha yeni algoritmalar ikinci derecenin altında karmaşıklığa sahip
    • Dao ve Gu, bu yıl Mamba/SSM'in Transformer ile benzer donanım hızlandırması alabilmesini formüle eden bir makale yayımladı
  • Flash Attention algoritmasının donanıma ne kadar bağımlı olduğu merak ediliyor

    • H100 GPU'nun asenkron özelliklerinden yararlandığı belirtiliyor
    • Flash Attention kütüphanesi CUDA gerektiriyor, ancak Metal'e port edilmiş gibi görünüyor
    • Algoritma saf bir fonksiyonsa, herhangi bir GPU/ML framework'ünde uygulanabileceği düşünülüyor
  • Derleyicilerin FlashAttention gibi optimizasyonları kendi başlarına bulup bulamayacağı merak ediliyor

    • TVM ve tinygrad bu yönde çalışıyor, ancak bunun uygulanabilirliği sorgulanıyor
  • ROCm/AMD MI300x'e port etmek isteyenlerin iletişime geçmesi isteniyor

    • Hesaplama süresi bağışlamaya istekli olunduğu belirtiliyor
  • TMA (Tensor Memory Accelerator), global bellek ile paylaşımlı bellek arasındaki veri aktarımını hızlandıran bir donanım birimi

    • Register'ları serbest bırakarak tile boyutunu ve verimliliği artırıyor
  • FlashAttention-3, Hopper GPU'lar (ör. H100) için optimize edilmiş

    • Tüketici GPU'larda (ör. 3090, 4090) nasıl çalıştığı merak ediliyor
  • Modern LLM'lerde sigmoid gibi aktivasyon fonksiyonlarının çok yavaş olduğu belirtiliyor

    • SiLU, Swish, SOLU gibi aktivasyon fonksiyonları yaygın olarak kullanılıyor
    • ReLU performansı daha az düşürüyorsa, ReLU'ya geri dönmek daha iyi olabilir
  • Değişken maskeleme varken Flash Attention'ın, maskeleme yokken olduğundan neden 5 kat daha yavaş olduğu merak ediliyor

    • İyi maskeleme desteğinin eksikliği, optimizasyonları neredeyse tamamen etkisiz kılıyor
  • FlashAttention'ın LLM'lerdeki attention işleminin yerini alıp alamayacağı merak ediliyor

    • LLM'lerin FA kullanacak şekilde özel olarak eğitilmesi gerekip gerekmediği sorgulanıyor
    • FA'nin GQA (grouped query attention) veya sliding window attention gibi stratejilerle nasıl ilişkili olduğu merak ediliyor
    • llama.cpp Flash Attention desteği eklediğinde, yalnızca Flash Attention'ın sağladığı CUDA kernel'lerini mi kullandığı sorgulanıyor
    • FlashAttention ile Triton'u karşılaştırmanın ne anlama geldiğini anlamanın zor olduğu belirtiliyor
  • Pahalı donanım gerekiyor