1 poin oleh GN⁺ 2024-07-12 | 1 komentar | Bagikan ke WhatsApp
  • Pentingnya Attention

    • Attention adalah lapisan inti dalam arsitektur Transformer dan menjadi bottleneck pada model bahasa besar serta aplikasi dengan konteks panjang.
    • FlashAttention dan FlashAttention-2 memelopori pendekatan untuk mempercepat Attention di GPU dengan meminimalkan operasi baca/tulis memori.
    • Hal ini membuat panjang konteks LLM meningkat secara signifikan.
  • Teknologi utama FlashAttention-3

    • Memanfaatkan asinkroni: Memanfaatkan sifat asinkron Tensor Cores dan TMA untuk menumpangtindihkan seluruh komputasi dan perpindahan data.
    • Operasi per blok: Menjalankan perkalian matriks dan operasi softmax secara bergantian per blok.
    • Pemrosesan presisi rendah: Meningkatkan performa dengan dukungan presisi rendah FP8.
  • Peningkatan performa FlashAttention-3

    • Efisiensi pemanfaatan GPU: Memanfaatkan hingga 75% performa maksimum GPU H100, sehingga 1,5-2 kali lebih cepat dibanding versi sebelumnya.
    • Performa presisi rendah: Menggunakan FP8 untuk meningkatkan kecepatan pemrosesan dan mengurangi penggunaan memori.
    • Pemrosesan konteks panjang: Mempercepat mekanisme Attention sehingga teks yang lebih panjang dapat diproses dengan efisien.
  • Ringkasan FlashAttention

    • FlashAttention menyusun ulang komputasi Attention dan memanfaatkan tiling serta rekalkulasi untuk secara signifikan meningkatkan kecepatan dan mengurangi penggunaan memori.
    • Melalui tiling, blok input dimuat, Attention dijalankan pada blok tersebut, lalu output diperbarui.
    • Jumlah operasi baca/tulis memori dikurangi dengan tidak menuliskan matriks Attention antara ke memori.
  • Fitur hardware baru pada GPU Hopper

    • WGMMA: Memberikan throughput tinggi dengan memanfaatkan Tensor Cores baru.
    • TMA: Unit hardware yang mempercepat transfer data antara global memory dan shared memory.
    • Presisi rendah FP8: Menggandakan throughput Tensor Core dengan menggunakan FP8.
  • Asinkroni: menumpangtindihkan GEMM dan Softmax

    • Kebutuhan overlap: Memaksimalkan performa dengan menjalankan GEMM dan softmax secara paralel.
    • Penjadwalan ping-pong: Dua kelompok warp secara bergantian menjalankan GEMM dan softmax untuk meningkatkan performa.
    • Overlap dalam kelompok warp: Meningkatkan throughput dengan menjalankan GEMM dan softmax secara paralel dalam kelompok warp yang sama.
  • Presisi rendah: pemrosesan incoherent untuk mengurangi error kuantisasi

    • Pemrosesan incoherent: Mengurangi error kuantisasi dengan menggunakan transformasi Hadamard.
    • Hasil eksperimen: Pemrosesan incoherent mengurangi error kuantisasi hingga 2,6 kali.
  • Benchmark Attention

    • FP16: Sekitar 1,6-1,8 kali lebih cepat dibanding FlashAttention-2.
    • FP8: Mencapai hingga 1,2 PFLOPS.

Ringkasan GN⁺

  • FlashAttention-3 secara signifikan meningkatkan performa mekanisme Attention dengan memanfaatkan fitur hardware baru pada GPU.
  • Teknologi ini dapat memproses konteks panjang secara efisien sehingga memaksimalkan performa model bahasa besar.
  • Karena kemungkinan besar akan diintegrasikan ke framework utama seperti PyTorch, dampaknya terhadap riset dan aplikasi AI ke depan diperkirakan besar.
  • Proyek lain yang menyediakan fungsi serupa antara lain Triton dan cuDNN.

1 komentar

 
GN⁺ 2024-07-12
Komentar Hacker News
  • Tampaknya Tri Dao mulai mengerjakan FA3 sejak April 2022

    • Kemungkinan alasan kode baru dirilis setelah 2 tahun sejak pengumuman Hopper/H100 adalah karena solusi yang lebih baik telah disiapkan
    • Riset Tri belakangan ini berfokus pada arsitektur bergaya SSM dan Mamba
    • Flash Attention memiliki kompleksitas waktu kuadratik terhadap panjang sekuens, tetapi algoritme terbaru memiliki kompleksitas sub-kuadratik
    • Dao dan Gu tahun ini menerbitkan makalah yang memformalkan agar Mamba/SSM bisa memperoleh akselerasi hardware yang sama seperti Transformer
  • Ada yang penasaran seberapa bergantung algoritme Flash Attention pada hardware

    • Disebutkan bahwa ia memanfaatkan kemampuan asinkron pada GPU H100
    • Library Flash Attention membutuhkan CUDA, tetapi tampaknya sudah di-port ke Metal
    • Jika algoritmenya adalah fungsi murni, orang membayangkan ini bisa diimplementasikan di GPU/framework ML mana pun
  • Ada yang penasaran apakah compiler bisa menemukan sendiri optimisasi seperti FlashAttention

    • TVM dan tinygrad sedang mengarah ke sana, tetapi masih diragukan apakah itu benar-benar memungkinkan
  • Siapa pun yang ingin melakukan port ke ROCm/AMD MI300x diminta untuk menghubungi

    • Ada yang bersedia menyumbangkan waktu komputasi
  • TMA (Tensor Memory Accelerator) adalah unit hardware yang mempercepat transfer data antara memori global dan memori bersama

    • Ini membebaskan register sehingga ukuran tile dan efisiensi dapat meningkat
  • FlashAttention-3 dioptimalkan untuk GPU Hopper (misalnya H100)

    • Ada yang penasaran bagaimana kinerjanya di GPU konsumen (misalnya 3090, 4090)
  • Disebutkan bahwa fungsi aktivasi seperti sigmoid sangat lambat pada LLM modern

    • Fungsi aktivasi seperti SiLU, Swish, dan SOLU banyak digunakan
    • Jika Relu menyebabkan penurunan performa yang lebih kecil, mungkin lebih baik kembali ke Relu
  • Ada yang penasaran mengapa Flash Attention 5 kali lebih lambat saat ada variable masking dibanding saat tidak ada

    • Kurangnya dukungan masking yang baik hampir meniadakan optimisasi
  • Ada yang penasaran apakah FlashAttention bisa menggantikan operasi attention pada LLM

    • Apakah LLM perlu dilatih secara khusus agar menggunakan FA
    • Bagaimana FA berhubungan dengan strategi seperti GQA (grouped query attention) atau sliding window attention
    • Saat llama.cpp menambahkan dukungan Flash Attention, apakah itu hanya memakai CUDA kernel yang disediakan Flash Attention
    • Sulit memahami apa arti membandingkan FlashAttention dengan Triton
  • Membutuhkan hardware yang mahal