FlashAttention-3 (HE)
FlashAttention-3 — אלגוריתם לאופטימיזציה של מנגנון ה-attention ברשתות נוירונים מסוג transformer, שפותח לניצול מרבי של יכולות החומרה של 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). מטרתו העיקרית — להאיץ משמעותית את האימון וה-inference של מודלי שפה גדולים (LLM), תוך שמירה על דיוק החישובים.
מבוא ורקע
בעיית מנגנון ה-attention
הרכיב המרכזי של ה-transformers הוא מנגנון ה-self-attention, אולם המורכבות החישובית וצריכת הזיכרון שלו גדלות ריבועית (O(n²)) עם גידול אורך רצף הקלט (n)[1]. זה יוצר "צוואר בקבוק" חמור, שכן GPU מודרני מותאם לכפל מטריצות מהיר, אך חישוב פונקציות אקספוננציאליות (לדוגמה, ב-Softmax) איטי בסדרי גודל. בנוסף, במימוש נאיבי יש לשמור בזיכרון ה-GPU טנזור attention ביניים גדול, מה שמגביל את יכולת ההרחבה של המודלים.
FlashAttention ו-FlashAttention-2
לפתרון בעיה זו הוצע ב-2022 FlashAttention, שצמצם את היקף הגישות לזיכרון הגלובלי האיטי (HBM) באמצעות שתי טכניקות:
- עיבוד בלוקים (tiling): החישובים מחולקים לבלוקים (tiles) המעובדים בזיכרון 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. ביצוע אסינכרוני והתמחות warps
FlashAttention-3 משתמש בעקרון warp-specialization, שבו קבוצות שונות של threads (warps) ב-GPU מתמחות במשימות שונות:
- Producer warps: טוענים נתונים מהזיכרון הגלובלי באמצעות TMA.
- Consumer warps: מבצעים כפל מטריצות על ליבות הטנזור.
הודות לאסינכרוניות החומרתית של Hopper, פעולות אלו מתחפיפות בזמן. בעוד שקבוצת warps אחת מבצעת חישובים, קבוצה אחרת טוענת במקביל נתונים לבלוק הבא. גישת pipeline זו, המאורגנת על פי עקרון ה-"פינג-פונג" (ping-pong scheduling), מאפשרת להסתיר השהיות של פעולות איטיות (לדוגמה, Softmax) ולמקסם את עומס כל המודולים הפונקציונליים של ה-GPU.
2. מינימיזציה של פעולות זיכרון
האלגוריתם שומר על גישת ה-tiling מגרסאות קודמות, אך עושה שימוש אינטנסיבי ב-TMA לטעינה אסינכרונית של בלוקי הנתונים הבאים במקביל לחישובים הנוכחיים. העברת הנתונים מה-HBM האיטי ל-SRAM המהיר מתבצעת למעשה "בצל" החישובים העיקריים, וכך ה-GPU ממתין פחות לנתונים.
3. דיוק נמוך (FP8) עם הפחתת שגיאת הכמות
מעבר ל-FP8 מכפיל את המהירות, אך עלול להוביל לאובדן דיוק משמעותי עקב quantization. כדי להתמודד עם כך, הפיתחו המפתחים את שיטת incoherent processing[4]. עיקרה הוא:
- לפני חישוב ה-attention, וקטורי המאפיינים (שאילתות Q ומפתחות K) מוכפלים במטריצה אורתוגונלית אקראית (לדוגמה, מטריצת Hadamard).
- טרנספורמציה זו "מרחה" ערכים בעלי גודל חריג (outliers) על פני כל הקואורדינטות, ומאזנת את התפלגותם.
- לאחר מכן מתבצע quantization ל-FP8, שעתה מתרחש עם שגיאה קטנה יותר.
- מאחר שהטרנספורמציה אורתוגונלית, היא אינה מעוותת את תוצאת ה-attention הסופית (QKᵀ), שכן השפעת המטריצה מתבטלת בכפל.
טכניקה זו אפשרה לצמצם את שגיאת חישוב ה-attention ב-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:
- קיצור זמן האימון: האצת ה-attention ב-75–100% מקצרת משמעותית את זמן אימון המודלים, שעשוי להימשך שבועות או חודשים.
- הרחבת חלון ההקשר: המודלים יכולים לעבד ביעילות רצפים ארוכים יותר (מאות אלפי tokens), דבר חשוב לניתוח מסמכים גדולים או קוד[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]