FlashAttention-2 (TL)
FlashAttention-2 — ito ay isang pinahusay na algorithm na dinisenyo para sa pagkalkula ng mekanismo ng attention sa malalaking language model (LLM). Ang algorithm ay binuo ni Tri Dao at ng mga mananaliksik mula sa Stanford University at ipinakita noong Hulyo 2023[1]. Ang pangunahing layunin nito — makabuluhang pabilisin ang pagsasanay at inference (pagpapalabas) ng mga transformer model sa pamamagitan ng mas mahusay na paggamit ng hardware na mapagkukunan ng GPU, habang pinapanatili ang ganap na pagkakatugma ng mga kalkulasyon sa karaniwang mekanismo ng attention, iyon ay nang walang pagkawala ng katumpakan.
Ang FlashAttention-2 ay lohikal na pagpapatuloy ng algorithm na FlashAttention, na ipinakita ng parehong koponan noong 2022. Ang bagong bersyon ay nalulutas ng problema ng hindi kumpletong pag-load ng GPU, na naobserbahan sa predecessor nito, at nakakamit ng halos dalawang beses na pagtaas ng bilis kumpara sa unang bersyon.
Mga Paunang Kondisyon: ang problema ng attention sa mga transformer
Ang karaniwang mekanismo ng self-attention ay isang bottleneck kapag nagtatrabaho sa mahabang pagkakasunod-sunod ng teksto sa mga transformer. Ang computational complexity nito at pagkonsumo ng memorya ay lumalaki nang parisukat (O(N²)) depende sa haba ng pagkakasunod-sunod (N), na naglalagay ng mabibigat na limitasyon sa maximum na haba ng konteksto at scalability ng LLM[1].
Para malutas ang problemang ito, noong 2022 ay ipinakita ang algorithm na FlashAttention[2]. Ang mga pangunahing ideya nito:
- Pagsasaalang-alang sa hierarchy ng memorya ng GPU (IO-awareness): Binibigyan ng algorithm ng minimum ang mga mahal na operasyon ng pagbabasa/pagsulat sa pagitan ng mabagal na memorya ng GPU (HBM) at ng mabilis na static na memorya (SRAM) sa chip.
- Block processing (tiling): Ang mga kalkulasyon ay nahahati sa maliliit na bloke (tile), na pinoproseso sa mabilis na SRAM, na nagpapahintulot na maiwasan ang materializasyon ng buong matrix ng attention sa memorya.
Pinahintulutan nito ang linear na paglago ng pagkonsumo ng memorya (O(N)) at pagpapabilis ng 2–4 beses kumpara sa mga karaniwang implementasyon[2]. Ang FlashAttention ay naging malawakang ginagamit at nag-ambag sa paglitaw ng mga modelo na may makabuluhang pinahabang konteksto, halimbawa, mula 2–4 libong token (GPT-3) hanggang 128 libo (GPT-4) at higit pa[3]. Kaya, sa modelong Falcon-40B ang paggamit ng FlashAttention ay nagpabilis ng inference ng 3 beses, at ng pangkalahatang performance ng generation — ng 5 beses kumpara sa GPT-3[4].
Pagbuo at Mga Layunin ng FlashAttention-2
Sa kabila ng tagumpay, ang unang bersyon ng FlashAttention ay hindi ganap na ginagamit ang mga computational na mapagkukunan ng GPU. Sa mga graphics card na NVIDIA A100 ang performance ay umabot lamang sa 25–40% ng theoretical maximum (FLOPs/s)[1]. Ang pangunahing dahilan ay hindi optimal na pag-load ng Streaming Multiprocessors at labis na mga operasyon sa shared memory[5].
Ang layunin ng FlashAttention-2 ay naging karagdagang pagpapabilis ng mga kalkulasyon sa pamamagitan ng mas mahusay na parallelization ng trabaho at pagbabawas ng mga auxiliary na operasyon. Ang algorithm ay ganap na naisulat muli gamit ang mga low-level na primitive ng library na NVIDIA CUTLASS 3.x para makamit ang maximum na performance[6].
Teknikal na Arkitektura at mga Prinsipyo ng Trabaho
Ang FlashAttention-2 ay nagpapakilala ng tatlong pangunahing pagpapabuti para sa pagpapataas ng parallelism at kahusayan[1]:
1. Pagbabawas ng mga non-matrix na operasyon
Binabawasan ng algorithm ang bilang ng mga auxiliary na floating-point na operasyon na hindi matrix multiplication (non-matmul FLOPs). Dahil ang tensor core ng GPU ay na-optimize para sa matrix na operasyon (GEMM) at isinasagawa ang mga ito nang hanggang 16 beses nang mas mabilis, ang pagbabagong ito ay nagpapahintulot na gamitin ang karamihan sa oras ang mga pinaka-productive na bloke ng GPU.
2. Pinahusay na parallelism
Sa orihinal na FlashAttention ang trabaho sa isang "ulo" ng attention ay hindi pina-parallelize, na humahantong sa idle kapag mahabang pagkakasunod-sunod at maliit na laki ng batch. Ang FlashAttention-2 ay nagpapakilala ng inter-block parallelism: ngayon ang mga kalkulasyon para sa isang ulo ng attention ay ipinamamahagi sa iba't ibang Streaming Multiprocessors ng GPU, na makabuluhang nagpapataas ng kanilang pag-load.
3. Optimisadong paghahati ng trabaho sa loob ng bloke
Sa antas ng isang computational block ang trabaho ay muling ipinamamahagi sa pagitan ng mga grupo ng thread (warps) upang mabawasan ang pagpapalitan ng data sa pamamagitan ng shared memory. Binabawasan nito ang bilang ng mga labis na operasyon ng pagbabasa/pagsulat na kinakailangan para sa normalisasyon ng Softmax.
Performance at Kahusayan
Sa pamamagitan ng mga arkitekturang pagpapabuti, ang FlashAttention-2 ay nagpapakita ng makabuluhang pagtaas ng performance:
- Dalawang beses na pagpapabilis: Ang algorithm ay gumagana nang humigit-kumulang 2 beses na mas mabilis kumpara sa unang bersyon ng FlashAttention[1].
- Mataas na GPU utilization: Sa GPU na NVIDIA A100 ay nakakamit ang 50–73% ng theoretical maximum na throughput (TFLOPs), na malapit sa kahusayan ng mga optimisadong operasyon ng matrix multiplication (GEMM)[1].
- Rekord na bilis ng kalkulasyon:
- Sa GPU na A100 ay nakakamit ang bilis na hanggang 225 TFLOP/s sa end-to-end na training cycle ng modelo na uri ng GPT, na naaayon sa 72% utilization ng mga computational block. Para sa paghahambing, ang karaniwang attention sa parehong mga kondisyon ay naglo-load ng GPU ng wala pang 100 TFLOP/s[7].
- Sa GPU na H100 ang performance ay umabot sa 335 TFLOP/s[7].
Ang ganitong pagtaas ng performance ay nagpapahintulot, halimbawa, na mag-train ng modelo na may context window na 16k token sa parehong oras na dati ay kinakailangan para sa window na 8k token[5]. Mahalaga na ang algorithm ay nananatiling tumpak at deterministiko, kaya ang paggamit nito ay hindi nakakaapekto sa kalidad ng mga prediksiyon ng modelo[8].
Paggamit at Integrasyon sa Ecosystem
Ang FlashAttention-2 ay mabilis na naging karaniwang tool sa ecosystem ng LLM. Ito ay isinama sa maraming sikat na framework at library:
- PyTorch: Native na suporta.
- Hugging Face Transformers: Ang suporta ay pinapagana ng parameter na `attn_implementation="flash_attention_2"` kapag naglo-load ng modelo[9]. Compatible sa dose-dosenang arkitektura (GPT, Llama, Falcon, BERT at iba pa)[10].
- TensorRT-LLM, xFormers at Triton: Ang algorithm ay ipinatupad para sa mga platform na ito, na nagbibigay ng malawak na paggamit[7].
Ang integrasyon ay nagpapahintulot na madaling pagsamahin ang FlashAttention-2 sa iba pang mga paraan ng optimisasyon, tulad ng quantization (GPTQ, QLoRA) at mahusay na fine-tuning (PEFT)[9].
Paghahambing sa mga Kasunod na Bersyon
FlashAttention-3
Ang pananaliksik sa larangan ng optimisasyon ng attention ay nagpapatuloy. Noong Hulyo 2024 ay ipinakita ni Tri Dao ang FlashAttention-3, na naglalayong gamitin ang mga kakayahan ng arkitektura ng GPU na NVIDIA Hopper (H100/H200). Mga pangunahing pagbabago[3]:
- Suporta sa FP8: Gumagamit ng 8-bit na floating-point na kalkulasyon para sa karagdagang pagpapabilis.
- Mga asynchronous na operasyon: Mas mahusay na ginagamit ang mga asynchronous na kakayahan ng GPU.
Ang FlashAttention-3 ay nagbibigay ng pagpapabilis na 1.5–2 beses kumpara sa FlashAttention-2 sa GPU H100, na nakakamit ng performance na hanggang 740 TFLOP/s (75% ng theoretical maximum)[11].
Talasanggunian
- Dao, T. (2023). FlashAttention-2: Faster Attention with Better Parallelism and Work Partitioning. arXiv:2307.08691.
- Dao, T. et al. (2022). FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness. arXiv:2205.14135.
- Shah, J. et al. (2024). FlashAttention-3: Fast and Accurate Attention with Asynchrony and Low-precision. arXiv:2407.08608.
- Kwon, W. et al. (2023). Efficient Memory Management for Large Language Model Serving with PagedAttention. arXiv:2309.06180.
- Ye, Z. et al. (2025). FlashInfer: Efficient and Customizable Attention Engine for LLM Inference Serving. arXiv:2501.01005.
- Chen, Y. et al. (2023). FlashDecoding++: Faster Large Language Model Inference on GPUs. arXiv:2311.01282.
- Liu, Y. et al. (2024). FastAttention: Extending FlashAttention-2 to NPUs and Low-Resource GPUs. OpenReview: 76NYyOrnfk.
- Dege, P. et al. (2025). FlashMLA-ETAP: Efficient Transpose Attention Pipeline for Accelerating MLA Inference on NVIDIA H20 GPUs. arXiv:2506.01969.
- Wang, G. et al. (2024). FlashMask: Efficient and Rich Mask Extension of FlashAttention. OpenReview: rog0J435OO.
- Abbott, V.; Zardini, G. (2025). FlashAttention on a Napkin: A Diagrammatic Approach to Deep Learning IO-Awareness. arXiv:2412.03317.
Mga Tala
- ↑ 1.0 1.1 1.2 1.3 1.4 1.5 Дао, Три. «FlashAttention-2: Faster Attention with Better Parallelism and Work Partitioning». arXiv:2307.08691 [cs.LG], 17 июля 2023 г. [1]
- ↑ 2.0 2.1 «Optimizing LLMs for Speed and Memory». Hugging Face Documentation. [2]
- ↑ 3.0 3.1 Дао, Три. «FlashAttention-3: Fast and Accurate Attention with Asynchrony and Low-precision». Tri Dao's Blog. [3]
- ↑ «FlashAttention vs FlashAttention-2 - an Analysis». E2E Networks Blog. [4]
- ↑ 5.0 5.1 «FlashAttention-2: Faster Attention with Better Parallelism and Work Partitioning». OpenReview. [5]
- ↑ «FlashAttention-2». Hazy Research, Stanford University. [6]
- ↑ 7.0 7.1 7.2 Дао, Три. «FlashAttention-2: Faster Attention with Better Parallelism and Work Partitioning» (PDF). arXiv:2307.08691. [7]
- ↑ Рашка, Себастьян. «Llama 2 and FlashAttention 2». Ahead of AI Magazine. [8]
- ↑ 9.0 9.1 Белькада, Юнес. «Faster and more memory efficient models with Flash Attention 2!». LinkedIn. [9]
- ↑ «GPU inference». Hugging Face Documentation. [10]
- ↑ Дао, Три, и др. «FlashAttention-3: Fast and Accurate Attention with Asynchrony and Low-precision». arXiv:2407.08608 [cs.LG], 11 июля 2024 г. [11]