Pile matérielle et logicielle de l'IA

Quel est le principe essentiel des implémentations rapides de l'attention comme FlashAttention ?

  1. ADécouper le calcul en tuiles traitées dans la mémoire interne à la puce et ne pas écrire le grand tableau intermédiaire n×n en HBM, afin de réduire les accès mémoire
  2. BOmettre le calcul de l'attention et produire une réponse approchée
  3. CCalculer l'attention sur le CPU
Afficher la réponse et l'explication

Réponse : A. Découper le calcul en tuiles traitées dans la mémoire interne à la puce et ne pas écrire le grand tableau intermédiaire n×n en HBM, afin de réduire les accès mémoire

Une implémentation naïve écrit le tableau n×n en HBM, le relit pour le softmax puis encore pour le produit avec les Value ; les accès mémoire déterminent alors les performances. FlashAttention découpe Query, Key et Value en blocs chargés en mémoire partagée et mène le calcul d'une traite en mettant à jour le softmax progressivement, sans écrire le tableau en HBM. Le volume de calcul est identique, mais les accès mémoire diminuent fortement et le traitement s'accélère.

S'entraîner sur ce thème Retour au thème

Autres questions sur Pile matérielle et logicielle de l'IA

  1. Quel est le principal objectif de la « fusion d'opérateurs » utilisée dans les calculs d'IA ?
  2. Le traitement consistant à ajouter un biais au résultat d'un produit matriciel puis à appliquer une ReLU est fusionné de trois noyaux séparés en un seul. Qu'est-ce qui diminue principalement ?
  3. Quel est le principal traitement effectué par les compilateurs d'IA comme XLA, TVM ou la fonction de compilation de PyTorch ?
  4. Quelle définition du « graphe de calcul » utilisé dans les frameworks et compilateurs d'IA est correcte ?
  5. Quelle définition d'ONNX est correcte ?

Comparatifs sur ce thème