Qu'est-ce que Intensité arithmétique ?

Nombre d'opérations d'un traitement divisé par le nombre d'octets lus et écrits en mémoire. Plus elle est grande, plus le traitement tend à être limité par le calcul ; plus elle est faible, plus il tend à être limité par la mémoire.

Nom japonais: 演算強度

« Intensité arithmétique » apparaît dans 8 questions d'entraînement réparties sur 3 thèmes, dont Pile matérielle et logicielle de l'IA, CPU et architecture, Analyse des performances.

Domaine: Pile matérielle et logicielle de l'IA

S'entraîner : questions sur Intensité arithmétique

Quel modèle représente graphiquement, avec l'intensité arithmétique (opérations par octet) en abscisse, si les performances d'un programme sont limitées par la puissance de calcul ou par la bande passante mémoire ?

  1. ALoi d'Amdahl
  2. BModèle roofline
  3. CModèle de Poisson
Afficher la réponse et l'explication

Réponse : B. Modèle roofline

Le modèle roofline porte en abscisse l'intensité arithmétique (opérations par octet lu en mémoire) et en ordonnée les performances. Les traitements à faible intensité plafonnent à la bande passante mémoire (droite oblique), ceux à forte intensité à la performance de calcul crête (droite horizontale). Par exemple, avec 1 TB/s de bande passante et 100 TFLOPS, un traitement d'intensité inférieure à 100 FLOP/octet est limité par la mémoire. Il sert à choisir l'orientation des améliorations (réutilisation des données ou efficacité du calcul).

Pour le produit de deux matrices N×N en FP16 (2 octets), en supposant que chaque entrée est lue une fois et le résultat écrit une fois, quelle est approximativement l'intensité arithmétique (opérations par octet) ?

  1. A1/3
  2. BN/3
  3. C3N
Afficher la réponse et l'explication

Réponse : B. N/3

Le nombre d'opérations est 2N³ ; les accès mémoire portent sur trois matrices, soit 3N² éléments, ou 6N² octets en FP16. L'intensité arithmétique vaut 2N³ ÷ 6N² = N/3, soit environ 340 pour N = 1024. Plus le produit matriciel est grand, plus le calcul par octet augmente ; c'est donc un traitement qui exploite facilement les performances des unités de calcul. À l'inverse, des traitements comme l'addition élément par élément ont une intensité arithmétique inférieure à 1 et leur vitesse est déterminée par la bande passante mémoire.

« Intensité arithmétique » dans les explications

Questions mentionnant « Intensité arithmétique » (8)

  1. Quel modèle représente graphiquement, avec l'intensité arithmétique (opérations par octet) en abscisse, si les performances d'un programme sont limitées par la puissance de calcul ou par la bande passante mémoire ?
  2. Pour le produit de deux matrices N×N en FP16 (2 octets), en supposant que chaque entrée est lue une fois et le résultat écrit une fois, quelle est approximativement l'intensité arithmétique (opérations par octet) ?
  3. Sur un accélérateur de 100 TFLOPS en crête et 2 TB/s de bande passante mémoire, on exécute un traitement d'intensité arithmétique 10 FLOP/octet. Quelles performances atteignables estime le modèle Roofline ?
  4. Avec une seule entrée (taille de lot 1), pourquoi le calcul d'une couche entièrement connectée (produit matrice de poids-vecteur) tend-il à être limité par la mémoire ?
  5. En inférence, pourquoi l'augmentation de la taille de lot (nombre d'entrées traitées ensemble) tend-elle à améliorer l'efficacité globale ?
  6. L'inférence d'un grand modèle de langage se divise en une phase traitant l'ensemble du texte d'entrée (prefill) et une phase produisant la sortie jeton par jeton (décodage). Quelle combinaison des facteurs déterminant principalement leurs performances est correcte (pour un petit lot) ?
  7. Pourquoi les opérations élément par élément comme la ReLU ou la normalisation de couche prennent-elles souvent beaucoup de temps au regard de leur nombre d'opérations dans les calculs d'IA ?
  8. Dans le modèle Roofline, lorsqu'un traitement se situe dans la région limitée par la bande passante mémoire, quelle orientation est correcte pour améliorer les performances ?

Termes associés

Modèle Roofline Taille de lot (batch size) Inférence GPU Préremplissage (prefill) All-reduce Attention Cache KV Checkpointing de gradients Compilateur d'IA

Retour au glossaire