Was FlashAttention bei Transformer-Inference verändert

Automatische Übersetzung

Dieser Artikel wurde automatisch aus der englischen Originalversion übersetzt.

FlashAttention berechnet exakte Attention, ohne die vollständigen Matrizen der Attention-Scores und Wahrscheinlichkeiten im Hauptspeicher der GPU abzulegen. Es verarbeitet kleinere Blöcke und kombiniert ihre Ergebnisse mit einem Online-Softmax. Das reduziert Speicherverkehr und Zwischenspeicherung, während der Rechenaufwand dichter Attention weiterhin quadratisch mit der Sequenzlänge wächst.

Weniger Speicherbedarf bedeutet nicht, dass der Rechenaufwand dichter Attention linear wächst.

Speicherbedarf und Rechenaufwand unterscheiden

Standardmäßige materialisierte Attention berechnet Scores für jedes sichtbare Query/Key-Paar, normalisiert diese Scores und multipliziert sie mit den Values. Eine unmaskierte quadratische Attention-Matrix enthält für N Tokens N² Einträge.

Die ursprüngliche FlashAttention-Veröffentlichung ordnet diese Berechnung in Blöcken an, die auf den Chip passen. Sie hält laufende Normalisierungsstatistiken und Ausgabeakkumulatoren vor, statt alle Wahrscheinlichkeiten in HBM zu schreiben. Bei festen Head-Dimensionen wächst der benötigte Speicher für Attention-Zwischenergebnisse linear mit der Sequenzlänge. Die durch die Attention-Maske geforderten dichten Query/Key-Interaktionen werden weiterhin ausgewertet.

Der Algorithmus berechnet exakte Attention; unterschiedliche Ausführungsreihenfolgen bei Gleitkommaoperationen können kleine numerische Unterschiede verursachen. Es handelt sich nicht um ein approximatives Sparse-Attention-Verfahren, das ausgewählte Token-Paare auslässt.

Implementierung und Workload bleiben relevant

FrageWarum sie geprüft werden sollte
Unterstützt das Backend diese GPU und Präzision?Kernel-Implementierungen zielen auf bestimmte Hardware ab
Werden Head-Dimension, Maske und Cache-Layout unterstützt?Nicht unterstützte Formen können zur Auswahl eines anderen Backends führen
Macht Attention einen großen Teil der Anfragezeit aus?Ein großer Gewinn im Kernel kann insgesamt wenig bewirken
Handelt es sich um Prefill oder Decode für einen einzelnen Token?Die parallel ausführbare Arbeit unterscheidet sich

FlashAttention-2 parallelisiert zusätzlich Blöcke der Query-Sequenz neben Batch und Heads und reduziert weiteren Ausführungsaufwand. FlashAttention-3 nutzt Hopper-spezifische Ausführungsfunktionen. Versionsnamen beschreiben Algorithmen und Implementierungen; sie belegen nicht, welches Backend Ihr Server tatsächlich ausgewählt hat.

Prüfen Sie das ausgewählte Backend in der Serving-Runtime mit festgelegter Version. Messen Sie Prompt-Latenz, maximalen Speicherbedarf und End-to-End-Throughput bei repräsentativen Längen und Batch-Größen. Vergleichen Sie identische Masken und Präzision. Ein Benchmark, der nur Kernel-TFLOPS angibt, belegt keine Verbesserung der für Nutzer sichtbaren Token-Latenz.

Engineering-Leitfaden: FlashAttention behandelt die aufeinanderfolgenden Versionen und ihre Messungen im jeweiligen Geltungsbereich.