Türkçe Haberler
Son haberler
Yapay Zeka ve Teknoloji

FlashAttention ölçeklendirme, çoklu-GPU eğitimi ve ağırlık kuantizasyonu

Kablo tavaları ve borular içeren örnek bir bina servisleri tavanı, bir veri merkezi değil.
Kablo tavaları ve borular içeren örnek bir bina servisleri tavanı, bir veri merkezi değil.

Modern yapay zeka altyapısı, devasa modelleri verimli şekilde eğitmek ve sunmak için donanım-duyarlı attention çekirdeklerine, dağıtık çoklu-GPU paralelliğine ve düşük-bit kuantizasyona dayanır. Bu üç teknik, teorik model ölçeği ile fiziksel GPU sınırları arasındaki boşluğu kapatır.

1. Hopper (H100) GPU'larda FlashAttention-2 ve FlashAttention-3

Orijinal FlashAttention bellek bant genişliği darboğazını çözmüş olsa da, modern GPU'larda önemli miktarda ham hesaplama performansını hâlâ kullanılmadan bırakıyordu. FlashAttention-2 (2023) ve FlashAttention-3 (2024), GPU thread'lerinin ve donanım motorlarının nasıl koordine olduğunu yeniden tasarladı.

  • FlashAttention-2 (Daha İyi İş Bölümleme).
  • Matmul Dışı İşlemleri Azaltma. GPU Tensor Core'ları matris çarpımlarını (matmul), standart CUDA çekirdeklerinin Softmax yeniden ölçeklendirme gibi skaler işlemleri yürütmesinden kabaca 16× daha hızlı yürütür. FlashAttention-2, çevrimiçi Softmax matematiğini yeniden yazarak yeniden ölçeklendirmeyi iç döngünün en sonuna erteledi ve yavaş matmul dışı talimatları azalttı.
  • Dizi Uzunluğu Üzerinden Paralelleştirme. Orijinal sürüm işi esas olarak batch boyutu ve attention head'leri arasında paralelleştiriyor, uzun diziler ve küçük batch boyutlarıyla eğitim yapılırken GPU çekirdeklerini boş bırakıyordu. FlashAttention-2, dizi uzunluğu boyutu boyunca paralellik ekler ve döngü sırasını ters çevirir (dış döngü Q blokları üzerinde, iç döngü K ve V üzerinde), yavaş paylaşılan bellek yazmalarını en aza indirir.
  • FlashAttention-3 (Hopper H100 Donanımından Yararlanma).
  • Eşzamansız Veri Taşıma (TMA). NVIDIA'nın Hopper mimarisi, hesaplama thread'lerini meşgul etmeden global HBM ile çip üzeri SRAM arasında veri kopyalayan özel bir donanım birimi olan Tensor Memory Accelerator'ı (TMA) tanıttı.
  • Warp Uzmanlaşması (Üretici-Tüketici Modeli). FlashAttention-3, GPU warp'larını (32 thread'lik gruplar) özel rollere böler. Üretici warp'ları, K ve V'nin gelecekteki tile'larını SRAM'e önceden getirmek için TMA'yı kullanırken, Tüketici warp'ları mevcut tile'ları Tensor Core'lara (WGMMA talimatları) besler. Bu, bellek aktarımlarını matris matematiği ve Softmax hesaplamalarıyla eşzamanlı olarak örtüştürür.
  • FP8 Düşük Hassasiyet Desteği. FlashAttention-3, Hopper'ın FP8 Tensor Core'larını açarak ham verimliliği FP16'ya kıyasla ikiye katlar. FP8'de aykırı aktivasyonlardan kaynaklanan hassasiyet kaybını önlemek için blok kuantizasyon (küçük tile'ları bağımsız olarak ölçeklendirme) ve tutarsız işleme (kuantize etmeden önce aşırı değerleri yumuşatmak için Q ve K'yı rastgele dik matrislerle çarpma) kullanır.

2. Çoklu-GPU Ölçeklendirme Stratejileri (3D Paralellik)

Bir model onlarca veya yüzlerce milyar parametreye sahip olduğunda, ağırlıkları, gradyanları ve optimizer durumları tek bir GPU'nun VRAM'ini aşar. Büyük ölçekli eğitim, genellikle 3D Paralellik olarak adlandırılan üç farklı paralelleştirme stratejisini birleştirir.

Stratejiİşi Nasıl Bölerİletişim DarboğazıEn İyi Kullanım Durumu
Veri Paralelliği (DP / FSDP)Modeli GPU'lar arasında çoğaltır; her GPU farklı bir veri batch'i işler.GPU'lar arasında gradyanların ve bölünmüş ağırlıkların All-Reduce / All-Gather işlemi.Katmanlar tek bir cihaza sığdığında eğitim verimliliğini yüzlerce GPU arasında ölçeklendirme.
Tensör Paralelliği (TP)Tek tek ağırlık matrislerini (katmanları) GPU'lar arasında dikey veya yatay olarak böler.Her bir Transformer katmanından sonra All-Reduce (ultra hızlı NVLink gerektirir).Tek bir GPU'ya sığmayan, kesinlikle tek bir 8-GPU'lu sunucu düğümü içinde tutulan devasa katmanlar.
Pipeline Paralelliği (PP)Modeli derinliğe göre böler ve ardışık katman gruplarını farklı GPU'lara yerleştirir.Pipeline aşamaları arasında Noktadan Noktaya (P2P) aktivasyon aktarımları.Daha yavaş InfiniBand/Ethernet ağlarıyla bağlanan birden fazla sunucu düğümü arasında ölçeklendirme.
  • Veri Paralelliği & ZeRO / FSDP. Standart Veri Paralelliğinde her GPU modelin tam bir kopyasını tutar ve belleği israf eder. Modern çerçeveler, parametreleri, gradyanları ve optimizer durumlarını tüm GPU'lar arasında bölen ve her katmanın ağırlıklarını tam hesaplama anında toplayan ZeRO (Zero Redundancy Optimizer) veya PyTorch FSDP (Fully Sharded Data Parallel) kullanır.
  • Tensör Paralelliği (Katman İçi). Devasa bir ileri beslemeli matris çarpımı Y = XW'yi çoğaltmak yerine, Tensör Paralelliği W'yi sütun bazında GPU'lar arasında böler (W = [W_1, W_2]). Her GPU çıktının kendi yarısını eşzamanlı hesaplar ve kısmi sonuçları yüksek hızlı NVLink üzerinden değiş tokuş eder (H100'lerde 900 GB/s).
  • Pipeline Paralelliği (Katmanlar Arası). 1–8. katmanlar GPU 1'de, 9–16. katmanlar GPU 2'de bulunur ve böyle devam eder. Sonraki GPU'ların önceki katmanların bitmesini beklerken boşta kalmasını önlemek için ("pipeline baloncuğu"), çerçeveler her eğitim batch'ini daha küçük mikro-batch'lere böler, böylece tüm GPU'lar montaj hattı tarzında meşgul kalır.

3. Kuantizasyon (GPTQ, AWQ) ve Anlık Dekuantizasyon Çekirdekleri

Çıkarım sırasında (token'ları tek tek üretirken), Büyük Dil Modelleri hesaplama değil, bellek bant genişliği sınırlıdır. Tek bir token üretmek için 70 milyar 16-bit parametreyi (140 GB) VRAM'den yüklemek, Tensor Core'ları bellek aktarımlarını beklerken bırakır. Kuantizasyon, ağırlıkları 16-bit float'lardan 4-bit tam sayılara (INT4) sıkıştırarak bellek boyutunu ve aktarım süresini yaklaşık 4× azaltır.

  • GPTQ (Hessian Kalibrasyonu ile Eğitim Sonrası Kuantizasyon).
  • 16-bit ağırlıkların 4-bit tam sayılara naif yuvarlanması model doğruluğunu yok eder. GPTQ, küçük bir kalibrasyon veri setini modelden geçirir ve her ağırlığın ne kadar hassas olduğunu ölçmek için ikinci dereceden matematik (ters Hessian matrisi) kullanır.
  • Ağırlıkları sütun sütun kuantize eder; bir ağırlığı yuvarlamak hata oluşturduğunda, GPTQ hatayı gidermek için o satırdaki kalan kuantize edilmemiş ağırlıkları matematiksel olarak ayarlar.
  • AWQ (Aktivasyon-Duyarlı Ağırlık Kuantizasyonu).
  • Araştırmacılar, büyük aktivasyon değerleriyle çarpıldıkları için ağırlık kanallarının kabaca %0,1 ile %1'inin geri kalanından çok daha önemli olduğunu keşfetti.
  • Bu kritik ağırlıkları 16-bit'te tutmak (karmaşık, yavaş karışık hassasiyetli bellek düzenleri oluşturur) yerine, AWQ bu belirgin ağırlık kanallarını kuantizasyondan önce yukarı ölçeklendirir ve çalışma zamanında karşılık gelen girdi aktivasyonlarını aşağı ölçeklendirir; böylece ağırlıkların %100'ünü tek tip 4-bit formatta tutarken doğruluğu korur.
  • Özel CUDA Çekirdekleri Anlık Olarak Nasıl Dekuantize Eder (W4A16).
  • GPU'lar 16-bit bir aktivasyonu (FP16) doğrudan 4-bit bir tam sayı ağırlıkla (INT4) çarpamaz. Bunun yerine, özel çıkarım çekirdekleri (Marlin veya ExLlama gibi) W4A16 (4-bit Ağırlıklar, 16-bit Aktivasyonlar) yürütmesi gerçekleştirir:
  • 1. Sıkıştırılmış HBM Okuması: Çekirdek, paketlenmiş 4-bit ağırlıkları (tek bir 32-bit tam sayının içine paketlenmiş sekiz INT4 değeri) yavaş global VRAM'den yükleyerek bellek bant genişliği kullanımını 4× azaltır.
  • 2. Yazmaç Düzeyinde Açma: GPU'nun ultra hızlı yazmaçları içinde, CUDA çekirdeği hızlı bit kaydırmaları (>>) ve bit maskeleri (&) kullanarak INT4 tam sayılarını açar ve bunları anlık olarak FP16 değerlerine geri dönüştürmek için saklanan ölçek/sıfır-noktası faktörlerini uygular.
  • 3. Anında Tensor Core Matematiği: Yeni açılmış FP16 ağırlıkları, genişletilmiş 16-bit ağırlıklar hiçbir zaman VRAM'e geri yazılmadan, FP16 aktivasyonlarıyla birlikte doğrudan Tensor Core'lara beslenir.

Diğer haberler: Yapay Zeka ve Teknoloji