Pile matérielle et logicielle de l'IA
Découvrez le matériel et le logiciel de l'IA avec des QCM : inférence et entraînement, quantification, intensité arithmétique et modèle roofline, réseaux systoliques, fusion d'opérateurs et tiling.
Pile matérielle et logicielle de l'IA : points clés
L'essentiel des calculs d'un réseau de neurones consiste en de grandes multiplications-accumulations matricielles. Le matériel pour l'IA aligne donc de nombreuses unités de multiplication-accumulation et est conçu pour réutiliser au maximum les données afin de réduire le trafic vers la mémoire. L'entraînement exige bien plus de calcul et de mémoire que l'inférence, ainsi qu'une précision numérique plus élevée.
Les performances ne dépendent pas du seul nombre d'unités de calcul. L'intensité arithmétique, c'est-à-dire la quantité de calcul par octet de données, associée au modèle roofline, montre si une charge de travail est limitée par le calcul ou par la bande passante mémoire. Ce thème couvre aussi la manière dont les compilateurs pour l'IA et les runtimes d'inférence exploitent les performances du matériel grâce à la quantification, à la fusion d'opérateurs et au tiling.
Toutes les questions sur Pile matérielle et logicielle de l'IA (50)
- Quelle différence entre « entraînement » et « inférence » d'un réseau de neurones est correcte ?
- Laquelle des propositions suivantes n'explique pas pourquoi la mémoire nécessaire à l'entraînement est bien plus grande que pour l'inférence du même modèle ?
- Un modèle de 7 milliards de paramètres (7B) est entraîné en conservant poids, gradients et les deux états d'Adam en FP32 (4 octets). Quelle valeur est la plus proche de la mémoire nécessaire, activations exclues ?
- Si les poids d'un modèle de 7 milliards de paramètres (7B) sont stockés en FP16 (2 octets), quelle est approximativement la mémoire des poids ?
- Si le modèle 7B de la question précédente est quantifié de FP16 (environ 14 GB) en entiers 4 bits (INT4), quelle devient approximativement la mémoire des poids ?
- Quel est approximativement le nombre d'opérations en virgule flottante (multiplications et additions comptées séparément) du produit d'une matrice M×K par une matrice K×N ?
- 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) ?
- 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 ?
- 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 ?
- 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 ?
- Quel est l'inconvénient d'une taille de lot trop grande en inférence ?
- 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) ?
- Quel est le rôle du cache KV utilisé dans l'inférence des grands modèles de langage ?
- Dans l'inférence d'un grand modèle de langage, quel problème survient souvent avec des textes longs ou de grands lots ?
- Un modèle dont les poids occupent environ 14 GB en FP16 est décodé avec une taille de lot 1 sur un GPU de 2 TB/s de bande passante mémoire. Quelle valeur est la plus proche de la borne inférieure du temps de génération d'un jeton ?
- Comment le volume de calcul de l'auto-attention d'un Transformer croît-il avec la longueur n de la séquence d'entrée ?
- Quel est le principe essentiel des implémentations rapides de l'attention comme FlashAttention ?
- Quel est le principal objectif de la « fusion d'opérateurs » utilisée dans les calculs d'IA ?
- 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 ?
- Quel est le principal traitement effectué par les compilateurs d'IA comme XLA, TVM ou la fonction de compilation de PyTorch ?
- Quelle définition du « graphe de calcul » utilisé dans les frameworks et compilateurs d'IA est correcte ?
- Quelle définition d'ONNX est correcte ?
- Quelle est la principale raison pour laquelle les environnements d'exécution d'inférence comme TensorRT ou ONNX Runtime sont plus rapides qu'une inférence directe dans le framework d'entraînement ?
- 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 ?
- Dans les réseaux de neurones convolutifs, pourquoi le calcul de convolution est-il parfois converti en produit matriciel par une méthode comme im2col ?
- Quelle différence entre la quantification post-entraînement (PTQ) et l'entraînement tenant compte de la quantification (QAT) est correcte ?
- Dans une quantification post-entraînement des activations en INT8, quel est l'objectif de l'« étalonnage » (calibration) ?
- Dans la quantification des grands modèles de langage, la précision chute facilement lorsque quelques canaux présentent de fortes valeurs aberrantes. Quelle parade est courante ?
- Dans l'inférence des grands modèles de langage, pourquoi la quantification des seuls poids sur 4 bits, les activations restant en FP16 (W4A16), accélère-t-elle particulièrement le décodage ?
- Quelle affirmation sur l'élagage (pruning) des réseaux de neurones est correcte ?
- Quelle définition de la « parcimonie structurée 2:4 » prise en charge par les unités de calcul matriciel des GPU est correcte ?
- Quelle définition de la distillation des connaissances (knowledge distillation) est correcte ?
- Quelle définition du parallélisme de données pour l'entraînement sur plusieurs GPU est correcte ?
- Quelle définition du parallélisme de tenseur, qui répartit sur plusieurs GPU le produit matriciel d'une grande couche ne tenant pas dans la mémoire d'un seul GPU, est correcte ?
- En parallélisme de pipeline, où les couches du modèle sont réparties successivement sur plusieurs GPU, pourquoi découpe-t-on le lot en petits micro-lots ?
- Quel est le rôle de la communication all-reduce utilisée en entraînement distribué ?
- Quelle définition du point de contrôle des gradients (recalcul des activations) utilisé en entraînement est correcte ?
- Quelle est la principale raison pour laquelle le réseau systolique utilisé dans les accélérateurs d'IA calcule efficacement les produits matriciels ?
- Quelle est la principale raison pour laquelle certains accélérateurs d'IA embarquent sur la puce une grande SRAM (plusieurs dizaines à centaines de MB) ?
- Quelle définition du flux de données « weight stationary » (poids fixes), l'une des approches des accélérateurs d'IA, est correcte ?
- Laquelle des propositions suivantes n'est pas un avantage de l'inférence d'IA effectuée dans le terminal (edge), comme un smartphone, plutôt que sur un serveur dans le cloud ?
- Quelle est la principale raison pour laquelle le NPU d'un SoC de smartphone est plus efficace énergétiquement que le CPU pour l'inférence d'IA ?
- À quoi faut-il prendre garde concernant la valeur « xx TOPS » indiquée comme performance d'un accélérateur d'IA ?
- Quelle définition de la MFU (Model FLOPs Utilization), indicateur d'efficacité de l'entraînement à grande échelle, est correcte ?
- Quelle approximation est couramment utilisée pour estimer le nombre d'opérations nécessaires à l'entraînement d'un modèle Transformer, avec N le nombre de paramètres et D le nombre de jetons d'entraînement ?
- Pour un grand modèle de langage de N paramètres, quel est l'ordre de grandeur du nombre d'opérations nécessaires à l'inférence d'un jeton (hors attention) ?
- Lors du calcul de la fonction softmax exp(xi)/Σexp(xj), pourquoi soustrait-on souvent le maximum de chaque xi avant le calcul ?
- Quel est le principe du « décodage spéculatif », qui accélère l'inférence des grands modèles de langage ?
- Pourquoi la consultation de grandes tables d'embeddings, utilisées notamment dans les modèles de systèmes de recommandation, est-elle difficile à traiter pour le matériel d'IA ?
- Quel ordre de la pile logicielle d'IA, de la couche la plus proche de l'utilisateur à la plus proche du matériel, est correct ?
Autres thèmes de Systèmes informatiques
- Arithmétique des ordinateurs IEEE 754, virgule fixe, erreur d'arrondi
- ISA et assembleur RISC-V, modes d'adressage, conventions d'appel
- Compilateurs Analyse syntaxique, SSA, optimisation, registres
- Éditeurs de liens, chargeurs et exécutables ELF, symboles, relocalisation, liaison dynamique
- Système d'exploitation et matériel Interruptions, appels système, défauts de page
- Hiérarchie mémoire Cache, remplacement, trois types de défauts
- Multicœur et synchronisation MESI, instructions atomiques, barrières mémoire
- Programmation GPU Warps, mémoire partagée, coalescence, occupation
- Systèmes embarqués et firmware GPIO, UART/SPI/I2C, RTOS
- HDL et vérification Verilog, latches, machines à états, testbenches
- Interfaces d'E/S et bus PCIe, USB, SerDes, CXL
- Analyse des performances Loi d'Amdahl, CPI, goulots d'étranglement
- Sécurité matérielle Canaux auxiliaires, secure boot, TEE, PUF
- Gestion de l'énergie DVFS, power gating, états de veille