HyperAI

FlashAttention-Algorithmus

FlashAttention ist ein effizienter, speicherfreundlicher Aufmerksamkeitsalgorithmus, der 2022 von der Stanford University und der State University of New York vorgeschlagen wurde. Er zielt darauf ab, die Probleme der hohen Rechenkomplexität und Speicherbelegung der Selbstaufmerksamkeitsschicht im traditionellen Transformer-Modell zu lösen.Die relevanten Papierergebnisse sindFlashAttention: Schnelle und speichereffiziente Exact Attention mit IO-Awareness". Der Algorithmus wurde in PyTorch 2.0 integriert und von mehreren Open-Source-Frameworks wie Triton und Xformer integriert und implementiert. Er beschleunigt die Berechnung erheblich, indem er Aufmerksamkeitsberechnungen neu ordnet, Kachel- und Neuberechnungstechniken nutzt und den Speicherverbrauch in der Länge der Sequenz von quadratisch auf linear reduziert.

Die Einführung von FlashAttention ermöglicht großen Open-Source-Modellen wie Metas LLaMA und Falcon, die von den VAE eingeführt wurden, die Berechnung zu beschleunigen und Videospeicher zu sparen. Darüber hinaus wurde die nachfolgende Version von FlashAttention, FlashAttention-2, auf der ursprünglichen Basis verbessert, bietet bessere Parallelität und Arbeitsaufteilung und wurde im Juli 2023 von Tri Dao in dem Artikel „FlashAttention-2: Schnellere Aufmerksamkeit mit besserer Parallelität und Arbeitspartitionierung"vorschlagen.

FlashAttention-3 wurde im Juli 2024 gemeinsam von einem Forschungsteam aus Colfax Research, Meta, NVIDIA, Georgia Tech, Princeton University und Together AI vorgeschlagen. Das entsprechende Papier ist „FlashAttention-3: Schnelle und genaue Aufmerksamkeit mit Asynchronität und geringer Präzision". Als neueste Version der Serie erreicht es erhebliche Leistungsverbesserungen auf der H100-GPU, ist 1,5- bis 2,0-mal schneller als FlashAttention-2, bis zu 740 TFLOPS oder 75% theoretische maximale FLOPS-Auslastung auf H100 und nahe 1,2 PFLOPS 75 bei Verwendung von FP8. Diese Verbesserungen machen LLM deutlich schneller zu trainieren und auszuführen und ermöglichen gleichzeitig die Verwendung von Zahlen mit geringerer Genauigkeit (FP8) bei gleichbleibender Genauigkeit, was möglicherweise den Speicherverbrauch reduziert und Kosten spart.