FlashAttention-3 (FA)
FlashAttention-3 — الگوریتمی برای بهینهسازی مکانیزم توجه (attention) در شبکههای عصبی ترنسفورمر است که برای بهرهبرداری حداکثری از قابلیتهای سختافزاری GPU معماری NVIDIA Hopper (H100) طراحی شده است[1]. این الگوریتم در سال ۲۰۲۴ توسط گروهی از پژوهشگران شرکتهای Colfax Research، Meta، NVIDIA، Georgia Tech، دانشگاه Princeton و Together AI معرفی شد. این اثر در کنفرانس NeurIPS 2024 پذیرفته شد و به عنوان spotlight برگزیده شد[2].
FlashAttention-3 سومین نسخه در خانواده این الگوریتمهاست که پس از FlashAttention (2022) و FlashAttention-2 (2023) ارائه شده است. هدف اصلی آن افزایش چشمگیر سرعت آموزش و inference مدلهای زبانی بزرگ (LLM) با حفظ دقت محاسبات است.
مقدمه و پیشینه
مشکل مکانیزم توجه
مؤلفه اصلی ترنسفورمرها مکانیزم self-attention است؛ با این حال، پیچیدگی محاسباتی و مصرف حافظه آن با افزایش طول دنباله ورودی (n) به صورت درجه دوم (O(n²)) رشد میکند[1]. این امر یک «گلوگاه» جدی ایجاد میکند، زیرا GPUهای مدرن برای ضرب ماتریسی سریع بهینه شدهاند، اما محاسبه توابع نمایی (مانند Softmax) چندین مرتبه کندتر است. علاوه بر این، در پیادهسازی ساده، یک tensor بزرگ توجه میانی باید در حافظه GPU نگهداری شود که مقیاسپذیری مدلها را محدود میکند.
FlashAttention و FlashAttention-2
برای حل این مشکل، در سال ۲۰۲۲ FlashAttention معرفی شد که حجم دسترسی به حافظه سراسری کند (HBM) را با دو تکنیک کاهش داد:
- پردازش بلوکی (tiling): محاسبات به بلوکهایی (tile) تقسیم میشوند که در حافظه سریع رویتراشه (SRAM) پردازش میشوند.
- ادغام عملیات: تمام عملیاتها (ضرب ماتریسی، Softmax) در یک kernel واحد GPU اجرا میشوند بدون اینکه نتایج میانی در حافظه سراسری نوشته شوند.
این رویکرد پیچیدگی حافظه را از درجه دوم به خطی کاهش داد و محاسبات را ۲ تا ۴ برابر سریعتر کرد.
در سال ۲۰۲۳، نسخه بهبودیافتهای با نام FlashAttention-2 معرفی شد که موازیسازی محاسبات را بهینه کرد. بر روی GPU معماری NVIDIA Ampere (A100) این نسخه به ~۷۰٪ از اوج عملکرد نظری دست یافت[3]. با این حال، بر روی معماری جدیدتر NVIDIA Hopper (H100) کارایی آن به طور قابل توجهی پایینتر بود — حدود ۳۵٪[1]. این به دلیل عدم بهرهبرداری الگوریتم از قابلیتهای سختافزاری جدید Hopper بود که انگیزه اصلی برای ایجاد FlashAttention-3 شد.
قابلیتهای سختافزاری جدید GPU Hopper (H100)
معماری NVIDIA Hopper مجموعهای از قابلیتهای جدید ارائه داد که FlashAttention-3 برای دستیابی به حداکثر عملکرد از آنها استفاده میکند[4]:
- WGMMA (Warpgroup Matrix Multiply-Accumulate): نوع جدیدی از دستورالعملها برای هستههای tensor که ضرب ماتریسی را با افزایش عملکرد تقریباً دو برابری نسبت به معماری Ampere انجام میدهد.
- TMA (Tensor Memory Accelerator): ماژول سختافزاری که انتقال داده بین حافظه سراسری (HBM) و حافظه مشترک (shared memory) را تسریع میکند. TMA محاسبات آدرس را به طور خودکار انجام میدهد و هستههای محاسباتی را تخلیه میکند.
- فرمت FP8: پشتیبانی سختافزاری از فرمت داده ممیز شناور ۸ بیتی که عملکرد نظری را نسبت به FP16 دو برابر میکند، اما به دلیل محدوده دینامیکی محدود خطر کاهش دقت را به همراه دارد.
نوآوریهای فنی FlashAttention-3
این الگوریتم سه روش بهینهسازی کلیدی را که به طور خاص برای معماری Hopper طراحی شدهاند پیادهسازی میکند[4]:
۱. اجرای ناهمزمان و تخصصیابی warp
FlashAttention-3 از اصل warp-specialization استفاده میکند که در آن گروههای مختلفی از threadها (warps) در GPU برای وظایف مختلف تخصص مییابند:
- Producer warps: دادهها را از حافظه سراسری با کمک TMA بارگذاری میکنند.
- Consumer warps: ضرب ماتریسی را روی هستههای tensor اجرا میکنند.
به لطف ناهمزمانی سختافزاری Hopper، این عملیاتها در زمان همپوشانی دارند. در حالی که یک گروه از warpها محاسبات را انجام میدهند، گروه دیگر به طور موازی دادههای بلوک بعدی را بارگذاری میکند. این رویکرد pipelineای که بر اساس اصل «پینگ-پنگ» (ping-pong scheduling) سازماندهی شده، امکان پنهان کردن تأخیرهای ناشی از عملیات کند (مانند Softmax) را فراهم میکند و تمام ماژولهای عملکردی GPU را به حداکثر بارگذاری میرساند.
۲. کمینهسازی عملیات حافظه
الگوریتم فلسفه tiling از نسخههای قبلی را حفظ میکند، اما به طور فعال از TMA برای بارگذاری ناهمزمان بلوکهای بعدی داده به صورت موازی با محاسبات جاری استفاده میکند. انتقال داده از HBM کند به SRAM سریع در واقع «در سایه» محاسبات اصلی انجام میشود، به طوری که GPU کمتر در انتظار داده بیکار میماند.
۳. دقت پایین (FP8) با کاهش خطای کوانتیزاسیون
انتقال به FP8 سرعت را دو برابر میکند، اما میتواند به افت دقت قابل توجهی به دلیل کوانتیزاسیون منجر شود. برای مقابله با این موضوع، توسعهدهندگان روش incoherent processing را پیادهسازی کردند[4]. ماهیت این روش به شرح زیر است:
- پیش از محاسبه توجه، بردارهای ویژگی (پرسوجوهای Q و کلیدهای K) در یک ماتریس متعامد تصادفی (مانند ماتریس Hadamard) ضرب میشوند.
- این تبدیل مقادیر با قدر مطلق غیرعادی بزرگ (outlier) را در تمام مختصات «پخش» میکند و توزیع آنها را یکنواختتر میسازد.
- پس از آن کوانتیزاسیون به FP8 انجام میشود که اکنون با خطای کمتری صورت میگیرد.
- از آنجا که این تبدیل متعامد است، نتیجه نهایی توجه (QKᵀ) را تحریف نمیکند، زیرا اثر ماتریس هنگام ضرب خنثی میشود.
این تکنیک باعث شد خطای محاسبه توجه در FP8 تقریباً ۲.۶ برابر نسبت به کاربرد استاندارد FP8 بدون تبدیل کاهش یابد[4].
عملکرد و اهمیت
بهکارگیری تکنیکهای مذکور به FlashAttention-3 امکان داد تا برتری قابل توجهی نسبت به نسخههای قبلی بر روی GPU H100 حاصل کند:
- تسریع ۱.۵ تا ۲ برابری نسبت به FlashAttention-2.
- استفاده بالا از GPU: به ~۷۵ تا ۸۵٪ از حداکثر نظری عملکرد H100 میرسد.
- توان عملیاتی:
- تا ۷۴۰ تا ۸۴۰ TFLOPS برای دقت نیمه (FP16/BF16).
- تا ۱.۲ تا ۱.۳ PFLOPS (پتافلاپس) با استفاده از دقت ۸ بیتی (FP8)[2].
کارایی بالای FlashAttention-3 مستقیماً بر توسعه و کاربرد LLM تأثیر میگذارد:
- کاهش زمان آموزش: تسریع ۷۵ تا ۱۰۰ درصدی توجه به طور قابل توجهی زمان آموزش مدلها را که میتواند هفتهها یا ماهها طول بکشد کوتاه میکند.
- افزایش پنجره متن: مدلها میتوانند دنبالههای طولانیتر (صدها هزار token) را به طور مؤثر پردازش کنند که برای تحلیل اسناد بزرگ یا کد اهمیت دارد[1].
- استفاده بهینه از منابع: امکان دستیابی به همان عملکرد با تعداد کمتری از GPU یا دریافت سرعت بیشتر با همان سختافزار را فراهم میکند که هزینه استقرار مدلها را کاهش میدهد.
دسترسی و یکپارچهسازی
نویسندگان کد منبع FlashAttention-3 را تحت مجوز آزاد در GitHub منتشر کردند[4]. انتظار میرود که در چارچوبهای پیشرو یادگیری عمیق مانند PyTorch و کتابخانههای Hugging Face Transformers ادغام شود که فناوری را برای طیف گستردهای از توسعهدهندگان و پژوهشگران قابل دسترس میکند. نسخههای قبلی در حال حاضر به استاندارد de facto صنعت تبدیل شدهاند و 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. [۱]
- ↑ 2.0 2.1 Шах, Джей, и др. «FlashAttention-3: Fast and Accurate Attention with Asynchrony and Low-precision». OpenReview. [۲]
- ↑ Шах, Джей, и др. «FlashAttention-3: Fast and Accurate Attention with Asynchrony and Low-precision». arXiv:2407.08608v2 [cs.LG], 15 июля 2024 г. [۳]
- ↑ 4.0 4.1 4.2 4.3 4.4 Шах, Джей, и др. «FlashAttention-3: Fast and Accurate Attention with Asynchrony and Low-precision». Together AI Blog. [۴]