HyperAI

Algorithme FlashAttention

FlashAttention est un algorithme d'attention efficace et respectueux de la mémoire proposé par l'Université de Stanford et l'Université d'État de New York en 2022. Il vise à résoudre les problèmes de complexité de calcul élevée et d'occupation de la mémoire de la couche d'auto-attention dans le modèle Transformer traditionnel.Les résultats pertinents de l'article sontFlashAttention : attention précise rapide et efficace en termes de mémoire avec IO-AwarenessL'algorithme a été intégré à PyTorch 2.0 et a été implémenté par plusieurs frameworks open source tels que Triton et Xformer. Il accélère considérablement les calculs en réorganisant les calculs d'attention, en exploitant les techniques de pavage et de recalcul, et en réduisant l'utilisation de la mémoire, passant d'une séquence quadratique à une séquence linéaire.

L'introduction de FlashAttention permet aux grands modèles open source tels que LLaMA de Meta et Falcon lancés par les Émirats arabes unis d'accélérer le calcul et d'économiser la mémoire vidéo. De plus, la version ultérieure de FlashAttention, FlashAttention-2, a été améliorée sur la base originale, offrant un meilleur parallélisme et un meilleur partitionnement du travail, et a été publiée par Tri Dao en juillet 2023 dans l'article "FlashAttention-2 : une attention plus rapide avec un meilleur parallélisme et une meilleure répartition du travail"proposer.

FlashAttention-3 a été proposé conjointement par une équipe de recherche de Colfax Research, Meta, NVIDIA, Georgia Tech, l'Université de Princeton et Together AI en juillet 2024. L'article pertinent est «FlashAttention-3 : Attention rapide et précise avec asynchronie et faible précisionDernière version de la série, elle offre des performances significativement améliorées sur le GPU H100, 1,5 à 2,0 fois plus rapide que FlashAttention-2, jusqu'à 740 TFLOPS, soit 75% d'utilisation maximale théorique de FLOPS sur H100, et près de 1,2 PFLOPS 75 avec FP8. Ces améliorations rendent LLM nettement plus rapide à entraîner et à exécuter, tout en permettant l'utilisation de nombres de précision inférieure (FP8) tout en maintenant la précision, réduisant potentiellement l'utilisation de la mémoire et les coûts.