FlashAttention-3 (BG)
FlashAttention-3 — това е алгоритъм за оптимизиране на механизма на внимание (attention) в трансформерни невронни мрежи, разработен за максимално използване на хардуерните възможности на GPU архитектура NVIDIA Hopper (H100)[1]. Алгоритъмът е представен през 2024 година от група изследователи от компаниите Colfax Research, Meta, NVIDIA, Georgia Tech, Принстънски университет и Together AI. Работата е приета на конференцията NeurIPS 2024 и отбелязана като spotlight[2].
FlashAttention-3 е третата итерация в семейството от алгоритми, следваща FlashAttention (2022) и FlashAttention-2 (2023). Основната му цел е значително ускоряване на обучението и инференса на големи езикови модели (LLM), при запазване на точността на изчисленията.
Въведение и предистория
Проблемът с механизма на внимание
Ключов компонент на трансформерите е механизмът на самовнимание (self-attention), но неговата изчислителна сложност и потреблението на памет нарастват квадратично (O(n²)) с увеличаването на дължината на входната последователност (n)[1]. Това създава сериозно „тясно място", тъй като съвременните GPU са оптимизирани за бързи матрични умножения, но изчисляването на експоненциални функции (например в Softmax) е с порядъци по-бавно. Освен това при наивна реализация в паметта на GPU трябва да се съхранява голям междинен тензор на вниманието, което ограничава мащабируемостта на моделите.
FlashAttention и FlashAttention-2
За решаване на този проблем през 2022 година е предложен FlashAttention, който намалява броя на обращенията към бавната глобална памет (HBM) чрез две техники:
- Блокова обработка (tiling): Изчисленията се разбиват на блокове (тайлове), които се обработват в бързата on-chip памет (SRAM).
- Сливане на операции: Всички операции (матрично умножение, Softmax) се изпълняват в едно ядро на GPU, без записване на междинни резултати в глобалната памет.
Това позволи да се намали сложността по памет от квадратична до линейна и ускори изчисленията 2–4 пъти.
През 2023 година е представена подобрена версия — FlashAttention-2, която оптимизира разпаралелването на изчисленията. На GPU архитектура NVIDIA Ampere (A100) тя достига ~70% от пиковата теоретична производителност[3]. Обаче на по-новата архитектура NVIDIA Hopper (H100) ефективността ѝ се оказа значително по-ниска — около 35%[1]. Причината е, че алгоритъмът не използва новите хардуерни възможности на Hopper, което послужи като тласък за създаването на FlashAttention-3.
Нови хардуерни възможности на GPU Hopper (H100)
Архитектурата NVIDIA Hopper предоставя редица нови функции, които FlashAttention-3 използва за постигане на максимална производителност[4]:
- WGMMA (Warpgroup Matrix Multiply-Accumulate): Нов тип инструкции за тензорни ядра, изпълняващ матрични умножения с почти двукратен прираст на производителността в сравнение с архитектурата Ampere.
- TMA (Tensor Memory Accelerator): Хардуерен модул, който ускорява предаването на данни между глобалната (HBM) и споделената (shared memory) памет. TMA автоматично извършва адресните изчисления, разтоварвайки изчислителните ядра.
- Формат FP8: Хардуерна поддръжка на 8-битен формат на данни с плаваща запетая, който удвоява теоретичната производителност в сравнение с FP16, но носи риск от загуба на точност поради ограничения динамичен диапазон.
Технически иновации на FlashAttention-3
Алгоритъмът реализира три ключови метода за оптимизация, специално разработени за архитектурата Hopper[4]:
1. Асинхронно изпълнение и специализация на варпове
FlashAttention-3 използва принципа warp-specialization, при който различни групи нишки (warps) на GPU се специализират в различни задачи:
- Producer warps: Зареждат данни от глобалната памет с помощта на TMA.
- Consumer warps: Изпълняват матрични умножения на тензорните ядра.
Благодарение на хардуерната асинхронност на Hopper, тези операции се припокриват по време. Докато една група варпове изпълнява изчисления, друга паралелно зарежда данни за следващия блок. Този конвейерен подход (pipeline), организиран по принципа „пинг-понг" (ping-pong scheduling), позволява да се скрият закъсненията от бавните операции (например Softmax) и максимално да се натоварят всички функционални модули на GPU.
2. Минимизиране на операциите с памет
Алгоритъмът запазва идеологията tiling от предишните версии, но активно използва TMA за асинхронно зареждане на следващите блокове данни паралелно с текущите изчисления. Предаването на данни от бавната HBM в бързата SRAM фактически се извършва „в сянката" на основните изчисления, благодарение на което GPU по-малко престоява в очакване на данни.
3. Ниска точност (FP8) с намаляване на грешката при квантуване
Преминаването към FP8 удвоява скоростта, но може да доведе до съществена загуба на точност поради квантуване. За борба с това разработчиците въведоха метода incoherent processing[4]. Неговата същност е следната:
- Преди изчисляването на вниманието векторите на признаците (заявките Q и ключовете K) се умножават по случайна ортогонална матрица (например матрицата на Адамар).
- Това преобразование „размазва" стойностите с аномално голям модул (отклонения) по всички координати, изравнявайки тяхното разпределение.
- След това се извършва квантуване в FP8, което вече се провежда с по-малка грешка.
- Тъй като преобразованието е ортогонално, то не изкривява крайния резултат от вниманието (QKᵀ), тъй като ефектът от матрицата се нивелира при умножението.
Тази техника позволи да се намали грешката при изчисляване на вниманието в FP8 приблизително 2,6 пъти в сравнение със стандартното прилагане на FP8 без преобразования[4].
Производителност и значение
Прилагането на изброените техники позволи на FlashAttention-3 да постигне значително превъзходство над предишните версии на GPU H100:
- Ускорение 1.5–2 пъти в сравнение с FlashAttention-2.
- Висока утилизация на GPU: Достига ~75–85% от теоретичния максимум на производителността на H100.
- Пропускателна способност:
- До 740–840 TFLOPS за половинна точност (FP16/BF16).
- До 1.2–1.3 PFLOPS (петафлопса) при използване на 8-битна точност (FP8)[2].
Високата ефективност на FlashAttention-3 пряко влияе върху разработването и прилагането на LLM:
- Намаляване на времето за обучение: Ускоряването на вниманието с 75–100% значително намалява времето за обучение на модели, което може да отнеме седмици или месеци.
- Увеличаване на контекстния прозорец: Моделите могат ефективно да обработват по-дълги последователности (стотици хиляди токени), което е важно за анализ на големи документи или код[1].
- Рационално използване на ресурсите: Позволява постигане на същата производителност с по-малко GPU или получаване на по-голяма скорост на същото оборудване, което намалява разходите за разгръщане на модели.
Достъпност и интеграция
Авторите публикуваха изходния код на FlashAttention-3 под отворен лиценз в GitHub[4]. Очаква се интеграцията му в водещите фреймуъркове за дълбоко обучение, като PyTorch и библиотеките Hugging Face Transformers, което ще направи технологията достъпна за широк кръг разработчици и изследователи. Предишните версии вече се превърнаха в де факто стандарт в индустрията, и FlashAttention-3 вероятно ще продължи тази тенденция.
Връзки
- Официално хранилище на FlashAttention в GitHub
- Блог на Together AI с обявата за FlashAttention-3
Литература
- Shah, J. et al. (2024). FlashAttention-3: Fast and Accurate Attention with Asynchrony and Low-precision. arXiv:2407.08608.
- 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.
- 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. arXiv:2410.01359.
- Abbott, V.; Zardini, G. (2025). FlashAttention on a Napkin: A Diagrammatic Approach to Deep Learning IO-Awareness. arXiv:2412.03317.
Бележки
- ↑ 1.0 1.1 1.2 1.3 «FlashAttention-3 unleashes the power of H100 GPUs for LLMs». VentureBeat. [1]
- ↑ 2.0 2.1 Шах, Джей, и др. «FlashAttention-3: Fast and Accurate Attention with Asynchrony and Low-precision». OpenReview. [2]
- ↑ Шах, Джей, и др. «FlashAttention-3: Fast and Accurate Attention with Asynchrony and Low-precision». arXiv:2407.08608v2 [cs.LG], 15 июля 2024 г. [3]
- ↑ 4.0 4.1 4.2 4.3 4.4 Шах, Джей, и др. «FlashAttention-3: Fast and Accurate Attention with Asynchrony and Low-precision». Together AI Blog. [4]