FlashAttention-3 (EL)
FlashAttention-3 — είναι ένας αλγόριθμος για τη βελτιστοποίηση του μηχανισμού attention σε transformer νευρωνικά δίκτυα, σχεδιασμένος για τη μέγιστη αξιοποίηση των δυνατοτήτων του υλικού GPU αρχιτεκτονικής NVIDIA Hopper (H100)[1]. Ο αλγόριθμος παρουσιάστηκε το 2024 από ομάδα ερευνητών των εταιρειών Colfax Research, Meta, NVIDIA, Georgia Tech, Πανεπιστήμιο του Princeton και 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 πρέπει να αποθηκεύει ένα μεγάλο ενδιάμεσο tensor 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): Νέος τύπος εντολών για tensor cores, που εκτελεί πολλαπλασιασμούς πινάκων με σχεδόν διπλή απόδοση σε σχέση με την αρχιτεκτονική Ampere.
- TMA (Tensor Memory Accelerator): Μονάδα υλικού που επιταχύνει τη μεταφορά δεδομένων μεταξύ της καθολικής μνήμης (HBM) και της κοινόχρηστης μνήμης (shared memory). Το TMA εκτελεί αυτόματα υπολογισμούς διευθύνσεων, αποφορτίζοντας τους υπολογιστικούς πυρήνες.
- Μορφή FP8: Υποστήριξη υλικού για τη μορφή δεδομένων κινητής υποδιαστολής 8 bit, η οποία διπλασιάζει τη θεωρητική απόδοση σε σχέση με το FP16, αλλά ενέχει κίνδυνο απώλειας ακρίβειας λόγω περιορισμένης δυναμικής εμβέλειας.
Τεχνικές καινοτομίες του FlashAttention-3
Ο αλγόριθμος υλοποιεί τρεις βασικές μεθόδους βελτιστοποίησης, σχεδιασμένες ειδικά για την αρχιτεκτονική Hopper[4]:
1. Ασύγχρονη εκτέλεση και εξειδίκευση warps
Το FlashAttention-3 χρησιμοποιεί την αρχή warp-specialization, κατά την οποία διαφορετικές ομάδες νημάτων (warps) στο GPU εξειδικεύονται σε διαφορετικές εργασίες:
- Producer warps: Φορτώνουν δεδομένα από την καθολική μνήμη χρησιμοποιώντας TMA.
- Consumer warps: Εκτελούν πολλαπλασιασμούς πινάκων στα tensor cores.
Χάρη στην υλικώς υποστηριζόμενη ασυγχρονία του Hopper, αυτές οι λειτουργίες αλληλεπικαλύπτονται χρονικά. Ενώ μία ομάδα warps εκτελεί υπολογισμούς, μία άλλη φορτώνει παράλληλα δεδομένα για το επόμενο μπλοκ. Αυτή η διοχετευτική προσέγγιση (pipeline), οργανωμένη κατά την αρχή «ping-pong» (ping-pong scheduling), επιτρέπει την απόκρυψη των καθυστερήσεων από αργές λειτουργίες (όπως το Softmax) και τη μέγιστη δυνατή φόρτωση όλων των λειτουργικών μονάδων του GPU.
2. Ελαχιστοποίηση λειτουργιών μνήμης
Ο αλγόριθμος διατηρεί τη φιλοσοφία tiling των προηγούμενων εκδόσεων, αλλά χρησιμοποιεί ενεργά το TMA για ασύγχρονη φόρτωση των επόμενων μπλοκ δεδομένων παράλληλα με τους τρέχοντες υπολογισμούς. Η μεταφορά δεδομένων από την αργή HBM στη γρήγορη SRAM πραγματοποιείται ουσιαστικά «στη σκιά» των κύριων υπολογισμών, με αποτέλεσμα το GPU να αδρανεί λιγότερο αναμένοντας δεδομένα.
3. Χαμηλή ακρίβεια (FP8) με μείωση του σφάλματος κβαντισμού
Η μετάβαση στο FP8 διπλασιάζει την ταχύτητα, αλλά μπορεί να οδηγήσει σε σημαντική απώλεια ακρίβειας λόγω κβαντισμού. Για την αντιμετώπιση αυτού, οι προγραμματιστές εισήγαγαν τη μέθοδο incoherent processing[4]. Η ουσία της είναι η εξής:
- Πριν από τον υπολογισμό του attention, τα διανύσματα χαρακτηριστικών (queries Q και keys K) πολλαπλασιάζονται με έναν τυχαίο ορθογώνιο πίνακα (π.χ. πίνακα Hadamard).
- Αυτός ο μετασχηματισμός «απλώνει» τιμές με ανώμαλα μεγάλο πλάτος (outliers) σε όλες τις συντεταγμένες, εξισορροπώντας την κατανομή τους.
- Στη συνέχεια εκτελείται κβαντισμός σε 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 (petaflops) κατά τη χρήση ακρίβειας 8 bit (FP8)[2].
Η υψηλή αποδοτικότητα του FlashAttention-3 επηρεάζει άμεσα την ανάπτυξη και εφαρμογή LLM:
- Μείωση χρόνου εκπαίδευσης: Η επιτάχυνση του attention κατά 75–100% μειώνει σημαντικά τον χρόνο εκπαίδευσης μοντέλων, που μπορεί να διαρκεί εβδομάδες ή μήνες.
- Αύξηση παραθύρου περιβάλλοντος: Τα μοντέλα μπορούν να επεξεργάζονται αποτελεσματικά μεγαλύτερες ακολουθίες (εκατοντάδες χιλιάδες tokens), κάτι σημαντικό για την ανάλυση μεγάλων εγγράφων ή κώδικα[1].
- Ορθολογική χρήση πόρων: Επιτρέπει την επίτευξη της ίδιας απόδοσης με μικρότερο αριθμό GPU ή την απόκτηση μεγαλύτερης ταχύτητας στο ίδιο υλικό, μειώνοντας το κόστος ανάπτυξης μοντέλων.
Διαθεσιμότητα και ενσωμάτωση
Οι συγγραφείς δημοσίευσαν τον πηγαίο κώδικα του FlashAttention-3 υπό ανοιχτή άδεια στο GitHub[4]. Αναμένεται η ενσωμάτωσή του στα κορυφαία frameworks βαθιάς μάθησης, όπως το 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. [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]