Techniques de parcimonie pour une accélération 100x de l’inférence des grands modèles de langage. Découvrez comment les compilateurs parcimonieux révolutionnent l’inférence des LLM, débloquant une efficacité et une vitesse sans précédent. Dans la discussion précédente sur « Comment les LLM accélèrent l’inférence grâce à la parcimonie », nous avons exploré la deuxième partie, « Accélérer l’inférence avec la parcimonie d’activation ». Cliquez ici pour revoir la première partie, « Comment les LLM effectuent l’élagage ». Dans cet article, nous allons nous pencher sur la troisième partie, « L’impact des compilateurs parcimonieux sur l’inférence des LLM. »
Le besoin de compilateurs
Les développements récents indiquent que les calculs en apprentissage profond deviennent de plus en plus parcimonieux, c’est-à-dire que les opérations sont effectuées sur des tenseurs contenant de nombreux zéros. Outre les poids de modèle parcimonieux (généralement statiques et connus à l’avance), on a découvert des motifs de parcimonie dépendant des entrées et connus uniquement à l’exécution, appelés parcimonie dynamique. Par exemple, les grands modèles de langage (LLM) tels que GPT et OPT présentent divers types de parcimonie dynamique. Premièrement, les modèles Transformer (ainsi que d’autres types de modèles) montrent une parcimonie dynamique inhérente dans leurs entrées, activations et gradients. Dans les graphes d’activation, seuls très peu d’éléments sont non nuls (par exemple, 3,0 % pour T5-Base, 6,3 % pour ViT-B/16). Deuxièmement, on exploite la parcimonie dynamique pour passer à l’échelle les modèles de réseaux de neurones profonds. La plupart des modèles existants avec plus d’un billion de paramètres adoptent une architecture de mélange d’experts (MoE), qui active dynamiquement des experts sur la base d’entrées parcimonieuses. De plus, l’entraînement avec parcimonie dynamique élimine dynamiquement les connexions les moins importantes du modèle pendant l’entraînement, attirant de plus en plus l’attention pour son efficacité de calcul supérieure. La parcimonie dynamique, dont les motifs sont inconnus avant l’exécution, pose des défis importants à l’apprentissage profond. Les solutions avancées d’apprentissage profond tenant compte de la parcimonie se limitent à des motifs statiques prédéfinis en raison du surcoût important lié au prétraitement. L’exécution efficace de calculs dynamiquement parcimonieux se heurte souvent à une incohérence entre les configurations de blocs de tenseurs adaptées aux GPU pour une exécution efficace et la minimisation de la couverture gaspillée (valeurs non nulles dans les tenseurs) dans les formes de blocs tenant compte de la parcimonie. La parcimonie dans les LLM nécessite l’utilisation d’opérateurs parcimonieux, et les bibliothèques traditionnelles comme cuSPARSE ou Sputnik, en raison de leurs conceptions génériques plutôt qu’optimales, impliquent soit de ne prendre en charge que des noyaux parcimonieux compilés statiquement, soit de devoir convertir dynamiquement les matrices parcimonieuses au format dense, ce qui entraîne un surcoût de performance important dans les scénarios de parcimonie dynamique.
Comparaison des compilateurs mainstream
Les principaux compilateurs de calcul parcimonieux actuels incluent cuSPARSE, Sputnik, OpenAI Block Sparse, SparTA et PIT, comme référencé dans [11]. Voici un tableau comparatif des données d’accélération : Scénario : Multiplication de matrices de taille 4096 × 4096 × 4096 Métrique : Latence (ms)
Il convient de mentionner que PIT surpasse l’optimisation parcimonieuse de pointe, réalisant des accélérations allant jusqu’à 88,7x, 5,8x, 17,5x et 5,7x par rapport à cuSPARSE, Sputnik, OpenAI Block Sparse et SparTA, respectivement.
L’impact des compilateurs sur l’inférence des LLM
OPT
L’expérience [11] évalue PIT en utilisant le jeu de données Alpaca sur deux versions du modèle OPT : OPT13B et 30B, sur huit GPU V100–32GB. PIT applique deux optimisations de parcimonie dynamique sur OPT : (1) élimination du surcoût de padding pour des phrases de longueurs différentes dans le même lot ; (2) exploitation de la parcimonie fine (jusqu’à 99 %) créée par les activations ReLU dans les couches FFN. La taille de lot est fixée à 32, et PyTorch-S utilise Triton comme backend.
Latence de bout en bout par lot et empreintes mémoire d’OPT
Les performances de PIT surpassent PyTorch, PyTorchS et DeepSpeed de respectivement 2,1x ∼ 2,3x, 2,5x ∼ 3,0x et 2,0x ∼ 2,2x. Le fait d’éviter le padding dans les séquences dynamiques contribue à une accélération de 1,6x ∼ 1,7x par rapport à la ligne de base. En exploitant davantage la parcimonie dynamique dans les activations ReLU des couches FFN, PIT améliore encore les performances de 1,3x ∼ 1,4x. Comparé à PyTorch-S utilisant des noyaux par blocs parcimonieux Triton avec une taille de bloc 32x32, PIT utilise des micro-blocs plus petits (c’est-à-dire 1x32) et des calculs efficaces avec SRead et SWrite, évitant le gaspillage de calcul. De plus, PyTorch-S est également affecté par le surcoût de conversion de format parcimonieux, d’où la latence la plus élevée. En termes de consommation mémoire, DeepSpeed a l’utilisation mémoire la plus faible car il fusionne l’ensemble de la couche de l’encodeur en un seul opérateur, économisant la mémoire d’activation.
MOE
Dans les expériences [11] sur SwinMoE, un grand modèle de vision avec une structure d’encodeur et MoE, les performances de PIT ont été évaluées sur A100 avec la précision float16. Pour les transformers visuels, les images d’entrée dans le même lot ont été redimensionnées à la même résolution pour garantir une longueur de séquence cohérente. Dans nos expériences, nous avons comparé la latence d’inférence de bout en bout et l’utilisation mémoire de Swin-MoE avec différentes tailles de lot et nombres d’experts. MegaBlocks surpasse les autres lignes de base en exécutant tous les experts simultanément, utilisant efficacement des noyaux parcimonieux pour éviter le gaspillage de calcul. PIT améliore encore les performances en prenant en charge le réarrangement des données lors du déplacement des données entre les hiérarchies mémoire par rapport à MegaBlocks.
Latence de bout en bout et empreintes mémoire de SwinMoE sur A100
Comparé à PyTorch, PyTorchS, Tutel, DeepSpeed et MegaBlocks, PIT a obtenu des accélérations respectives de 1,5x ∼ 6,3x, 1,5x ∼ 2,9x, 1,1x ∼ 1,8x, 1,2x ∼ 1,6x et 1,1x ∼ 1,4x. L’amélioration des performances de PIT sur Swin-MoE est inférieure à celle sur Switch Transformer, car Swin-MoE a nettement moins d’experts que Switch Transformer. Par conséquent, lorsque le nombre d’experts passe de 8 à 32, la couche MoE ne contribue qu’à 23,6 % à 61,2 % de la latence de bout en bout. En comparant la latence de la seule couche MoE, PIT est environ 1,2x à 1,7x plus rapide que MegaBlocks. Voici les données de comparaison compilées pour PIT :

Enfin, discutons du support matériel nécessaire à l’accélération.
GPU
NVIDIA A100
L’A100 utilise la nouvelle architecture Ampere, avec jusqu’à 6912 cœurs CUDA et 40 Go de mémoire HBM2 à haute vitesse. Il prend également en charge la technologie NVLink de deuxième génération, permettant une communication rapide entre GPU et accélérant la vitesse d’entraînement des grands modèles. L’A100 introduit de puissants nouveaux cœurs Tensor de troisième génération, avec un support complet pour les types de données DL et HPC, ainsi que de nouvelles capacités de parcimonie pour doubler encore le débit. Les opérations TF32 Tensor Core de l’A100 fournissent une voie simple pour accélérer les données d’entrée/sortie FP32 dans les frameworks DL et HPC, fonctionnant 10 fois plus vite que les opérations FP32 FMA du V100, ou 20 fois plus vite dans le cas de la parcimonie. Pour le DL en précision mixte FP16/FP32, les performances de l’A100 sont 2,5 fois celles du V100, passant à 5 fois avec la parcimonie. Lors de l’exécution de modèles IA avec le framework PyTorch, par rapport à la puce V100 de la génération précédente, l’A100 démontre une amélioration des performances de 6x pour l’entraînement du modèle BERT et de 7x pour l’inférence BERT.
GPU Intel Max Series
Selon la référence [18], des implémentations récentes de deux opérations matricielles parcimonieuses sur le GPU NVIDIA V100 ont montré des gains de performance allant jusqu’à 10 fois par rapport à l’implémentation de référence sur V100.
Conclusion
En résumé, voici trois conclusions concernant l’accélération de l’inférence des LLM par la parcimonie :
- La parcimonie des poids (50 %), la parcimonie des activations (90 %) et la parcimonie MoE (par exemple, Mistral 8x7B avec 75 % de parcimonie dynamique) sont des facteurs orthogonaux (les effets peuvent se cumuler, mais les performances du modèle peuvent être affectées). Combinés à l’effet d’accélération de 2 à 3x du compilateur PIT sur les modèles parcimonieux, par rapport aux frameworks d’inférence mainstream actuels (TGI/vLLM, etc.), on obtient une limite d’accélération théorique de 5 à 30 fois.
- La latence est le principal objectif des techniques de parcimonie actuelles (la parcimonie a une certaine efficacité ; plus la taille de lot est grande, moins l’effet de la parcimonie est bon). La direction du débit (throughput) constituera une nouvelle direction d’optimisation car la parcimonie d’activation suit une certaine loi de puissance, offrant un potentiel d’optimisation technique important.
- Convertir les activations non ReLU en activations ReLU dans les LLM entraîne des coûts relativement faibles (environ 3 % de coût de fine-tuning ; la qualité des données est relativement importante). De plus, l’entraînement des prédicteurs dans DejaVu entraîne des coûts plus faibles (entraînement rapide et indépendant des données). Combiné à la réduction des coûts apportée par l’augmentation de la vitesse d’inférence, il s’agit d’une initiative à fort ROI et commercialement viable.
Références
[11] Pit: Optimization of dynamic sparse deep learning models via permutation invariant transformation
[18] Performance Optimization of Deep Learning Sparse Matrix Kernels on Intel Max Series GPU
novita.ai fournit l’API Stable Diffusion et des centaines d’API de génération d’images IA les plus rapides et les moins chères pour 10 000 modèles. 🎯 Génération la plus rapide en seulement 2s, paiement à l’utilisation, à partir de 0,0015 $ par image standard, vous pouvez ajouter vos propres modèles et éviter la maintenance GPU. Partage gratuit d’extensions open source.
Lecture recommandée Unveiling LLM-Pruner Techniques: Doubling Inference Speed
