FlashAttention-2 (DE)
FlashAttention-2 ist ein fortschrittlicher Algorithmus zur Berechnung des Attention-Mechanismus in großen Sprachmodellen (LLMs). Der Algorithmus wurde von Tri Dao und Forschern der Stanford University entwickelt und im Juli 2023 vorgestellt[1]. Sein Hauptziel ist die signifikante Beschleunigung des Trainings und der Inferenz von Transformer-Modellen durch eine effizientere Nutzung der GPU-Hardware, wobei die Berechnungsergebnisse im Vergleich zum Standard-Attention-Mechanismus exakt identisch bleiben, d.h. ohne Genauigkeitsverlust.
FlashAttention-2 ist die logische Weiterentwicklung des FlashAttention-Algorithmus, der 2022 vom selben Team vorgestellt wurde. Die neue Version behebt das Problem der unvollständigen GPU-Auslastung des Vorgängers und erreicht eine nahezu doppelte Geschwindigkeitssteigerung im Vergleich zur ersten Version.
Hintergrund: Das Attention-Problem in Transformern
Der Standard-Self-Attention-Mechanismus stellt bei der Verarbeitung langer Textsequenzen in Transformern einen Engpass dar. Seine Rechenkomplexität und sein Speicherbedarf wachsen quadratisch (O(N²)) mit der Sequenzlänge (N), was die maximale Kontextlänge und die Skalierbarkeit von LLMs stark einschränkt[1].
Um dieses Problem zu lösen, wurde 2022 der Algorithmus FlashAttention vorgestellt[2]. Seine zentralen Ideen sind:
- Berücksichtigung der GPU-Speicherhierarchie (IO-Awareness): Der Algorithmus minimiert die aufwendigen Lese- und Schreibvorgänge zwischen dem langsamen GPU-Speicher (HBM) und dem schnellen On-Chip-SRAM.
- Blockweise Verarbeitung (Tiling): Die Berechnungen werden in kleine Blöcke (Tiles) aufgeteilt, die im schnellen SRAM verarbeitet werden. Dadurch wird die Materialisierung der vollständigen Attention-Matrix im Speicher vermieden.
Dies ermöglichte einen linearen Anstieg des Speicherverbrauchs (O(N)) und eine Beschleunigung um den Faktor 2–4 im Vergleich zu Standardimplementierungen[2]. FlashAttention fand breite Anwendung und trug zur Entwicklung von Modellen mit deutlich vergrößertem Kontext bei, beispielsweise von 2.000–4.000 Tokens (GPT-3) auf 128.000 (GPT-4) und mehr[3]. So beschleunigte der Einsatz von FlashAttention im Modell Falcon-40B die Inferenz um das 3-fache und die gesamte Generierungsleistung um das 5-fache im Vergleich zu GPT-3[4].
Entwicklung und Ziele von FlashAttention-2
Trotz seines Erfolgs nutzte die erste Version von FlashAttention die Rechenressourcen der GPUs nicht vollständig aus. Auf NVIDIA A100-Grafikkarten erreichte die Leistung nur 25–40 % des theoretischen Maximums (FLOPs/s)[1]. Hauptgrund dafür waren eine suboptimale Auslastung der Streaming Multiprocessors und redundante Operationen mit dem gemeinsam genutzten Speicher[5].
Das Ziel von FlashAttention-2 war es, die Berechnungen durch eine effizientere Parallelisierung der Arbeit und die Minimierung von Hilfsoperationen weiter zu beschleunigen. Der Algorithmus wurde unter Verwendung von Low-Level-Primitiven aus der NVIDIA CUTLASS 3.x-Bibliothek vollständig neu geschrieben, um maximale Leistung zu erzielen[6].
Technische Architektur und Funktionsprinzipien
FlashAttention-2 führt drei wesentliche Verbesserungen ein, um Parallelität und Effizienz zu steigern[1]:
1. Minimierung von Nicht-Matrix-Operationen
Der Algorithmus reduziert die Anzahl der Hilfsoperationen mit Gleitkommazahlen, die keine Matrixmultiplikationen sind (non-matmul FLOPs). Da die Tensor Cores der GPUs speziell für Matrixoperationen (GEMM) optimiert sind und diese bis zu 16-mal schneller ausführen, ermöglicht diese Änderung, die leistungsfähigsten GPU-Einheiten die meiste Zeit zu nutzen.
2. Verbesserter Parallelismus
Im ursprünglichen FlashAttention wurde die Arbeit an einem einzelnen Attention-Head nicht parallelisiert, was bei langen Sequenzen und kleinen Batch-Größen zu Leerlauf führte. FlashAttention-2 führt eine blockübergreifende Parallelisierung ein: Die Berechnungen für einen einzelnen Attention-Head werden nun auf verschiedene Streaming Multiprocessors der GPU verteilt, was deren Auslastung erheblich verbessert.
3. Optimierte Arbeitsaufteilung innerhalb eines Blocks
Auf der Ebene eines einzelnen Rechenblocks wurde die Arbeit zwischen den Thread-Gruppen (Warps) neu verteilt, um den Datenaustausch über den gemeinsam genutzten Speicher (Shared Memory) zu reduzieren. Dies verringert die Anzahl der redundanten Lese- und Schreibvorgänge, die für die Softmax-Normalisierung erforderlich sind.
Leistung und Effizienz
Dank der architektonischen Verbesserungen zeigt FlashAttention-2 eine signifikante Leistungssteigerung:
- Zweifache Beschleunigung: Der Algorithmus ist etwa doppelt so schnell wie die erste Version von FlashAttention[1].
- Hohe GPU-Auslastung: Auf einer NVIDIA A100-GPU werden 50–73 % des theoretischen maximalen Durchsatzes (TFLOPs) erreicht, was der Effizienz optimierter Matrixmultiplikationen (GEMM) nahekommt[1].
- Rekordverdächtige Rechengeschwindigkeit:
- Auf einer A100-GPU wird eine Geschwindigkeit von bis zu 225 TFLOP/s im End-to-End-Trainingszyklus eines GPT-ähnlichen Modells erreicht, was einer Auslastung der Recheneinheiten von 72 % entspricht. Zum Vergleich: Standard-Attention lastete die GPU unter denselben Bedingungen mit weniger als 100 TFLOP/s aus[7].
- Auf einer H100-GPU erreicht die Leistung 335 TFLOP/s[7].
Diese Leistungssteigerung ermöglicht es beispielsweise, ein Modell mit einem Kontextfenster von 16k Tokens in der gleichen Zeit zu trainieren, die zuvor für ein Fenster von 8k Tokens benötigt wurde[5]. Wichtig ist, dass der Algorithmus exakt und deterministisch bleibt, sodass seine Anwendung die Qualität der Modellvorhersagen nicht beeinträchtigt[8].
Anwendung und Integration in das Ökosystem
FlashAttention-2 wurde schnell zu einem Standardwerkzeug im LLM-Ökosystem. Es ist in viele gängige Frameworks und Bibliotheken integriert:
- PyTorch: Native Unterstützung.
- Hugging Face Transformers: Die Unterstützung wird beim Laden des Modells mit dem Parameter `attn_implementation="flash_attention_2"` aktiviert[9]. Kompatibel mit Dutzenden von Architekturen (GPT, Llama, Falcon, BERT usw.)[10].
- TensorRT-LLM, xFormers und Triton: Der Algorithmus ist für diese Plattformen implementiert, was eine breite Anwendung gewährleistet[7].
Die Integration ermöglicht es, FlashAttention-2 einfach mit anderen Optimierungsmethoden wie Quantisierung (GPTQ, QLoRA) und effizientem Fine-Tuning (PEFT) zu kombinieren[9].
Vergleich mit nachfolgenden Versionen
FlashAttention-3
Die Forschung im Bereich der Attention-Optimierung wird fortgesetzt. Im Juli 2024 stellte Tri Dao FlashAttention-3 vor, das auf die Nutzung der Fähigkeiten der NVIDIA Hopper-GPU-Architektur (H100/H200) abzielt. Die wichtigsten Neuerungen sind[3]:
- Unterstützung für FP8: Nutzt 8-Bit-Gleitkommaberechnungen für weitere Beschleunigung.
- Asynchrone Operationen: Nutzt die asynchronen Fähigkeiten der GPU effizienter.
FlashAttention-3 bietet eine Beschleunigung um den Faktor 1,5–2 im Vergleich zu FlashAttention-2 auf H100-GPUs und erreicht eine Leistung von bis zu 740 TFLOP/s (75 % des theoretischen Maximums)[11].
Literatur
- 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.
- Dao, T. 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.
Einzelnachweise
- ↑ 1.0 1.1 1.2 1.3 1.4 1.5 Dao, Tri. „FlashAttention-2: Faster Attention with Better Parallelism and Work Partitioning“. arXiv:2307.08691 [cs.LG], 17. Juli 2023. [1]
- ↑ 2.0 2.1 „Optimizing LLMs for Speed and Memory“. Hugging Face Documentation. [2]
- ↑ 3.0 3.1 Dao, Tri. „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 Dao, Tri. „FlashAttention-2: Faster Attention with Better Parallelism and Work Partitioning“ (PDF). arXiv:2307.08691. [7]
- ↑ Raschka, Sebastian. „Llama 2 and FlashAttention 2“. Ahead of AI Magazine. [8]
- ↑ 9.0 9.1 Belkada, Younes. „Faster and more memory efficient models with Flash Attention 2!“. LinkedIn. [9]
- ↑ „GPU inference“. Hugging Face Documentation. [10]
- ↑ Dao, Tri, et al. „FlashAttention-3: Fast and Accurate Attention with Asynchrony and Low-precision“. arXiv:2407.08608 [cs.LG], 11. Juli 2024. [11]