Tile-Level Activation Overlap for Efficient LLM Inference
Cet article présente deux noyaux spécialisés basés sur CUTLASS pour SM90 qui fusionnent l'activation SwiGLU avec la multiplication matricielle au niveau du tile afin d'éliminer le surcoût de matérialisation des tenseurs intermédiaires, atteignant jusqu'à 2,47x d'accélération et 79,5 % d'utilisation de crête sur les GPU NVIDIA H100 tout en surpassant PyTorch et cuBLAS en termes d'efficacité et de précision numérique.
Article original sous licence CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Ceci est une explication générée par l'IA de l'article ci-dessous. Elle n'a pas été rédigée ni approuvée par les auteurs. Pour une précision technique, consultez l'article original. Lire la clause de non-responsabilité complète
Imaginez que vous dirigez une usine à haute vitesse qui construit des robots complexes (ces robots sont des Modèles de Langage de Grande Taille ou LLM, comme ceux qui alimentent les chatbots). Pour construire chaque robot, votre usine dispose d'une ligne d'assemblage spécifique appelée MLP (une partie centrale du cerveau du robot).
Pendant longtemps, cette ligne d'assemblage a souffert d'une inefficacité majeure. Voici le problème et la solution présentée dans cet article, expliqués simplement.
Le Problème : Le goulot d'étranglement du « Intermédiaire »
Dans les usines de robots modernes, une étape spécifique appelée SwiGLU est utilisée pour rendre les robots plus intelligents. Considérez SwiGLU comme un contrôle qualité qui nécessite deux calculs distincts :
- Calcul A : Mesurer l'état actuel du robot.
- Calcul B : Mesurer le potentiel du robot.
- La Colle : Combiner ces deux mesures pour obtenir le résultat final.
L'Ancienne Méthode (Le Goulot d'Étranglement) :
Dans la configuration standard d'une usine (comme celle utilisée par PyTorch), après avoir effectué le Calcul A, les ouvriers doivent noter les résultats sur un immense tableau blanc dans le couloir (Mémoire à Haute Bande Passante ou HBM). Ensuite, ils doivent marcher jusqu'au tableau, lire ce résultat, effectuer le Calcul B, écrire ce nouveau résultat sur un second tableau blanc, et enfin revenir lire les deux tableaux pour effectuer l'étape de la « Colle ».
L'article a découvert que pour les petits robots (petits modèles d'IA), ce « trajet vers le tableau blanc » représente 30 % à 37 % du temps total. C'est comme un chef qui passerait la moitié de son temps à marcher jusqu'au garde-manger pour attraper une seule épice, plutôt qu'à cuisiner.
La Solution : Deux nouvelles « Super-Cuisines »
Les auteurs ont construit deux nouvelles cuisines personnalisées (appelées Kernels) qui éliminent totalement les tableaux blancs. Au lieu d'écrire les résultats et de faire des allers-retours, les ouvriers gardent les ingrédients dans leurs mains (dans les Registres) et effectuent tout en un mouvement continu.
Ils ont créé deux stratégies différentes selon la taille de l'usine :
1. La Cuisine « Ping-Pong » (Kernel-1)
- Comment ça marche : Imaginez une course de relais. Pendant qu'un ouvrier va chercher la prochaine fournée d'ingrédients (chargement des données), un autre ouvrier est déjà en train de mélanger la fournée actuelle.
- L'Astuce : Ils utilisent un programme « Ping-Pong ». Pendant que la machine est occupée à chercher le deuxième ensemble d'ingrédients, les ouvriers utilisent exactement ce même temps pour effectuer le calcul de la « Colle » sur le premier ensemble.
- Idéal pour : Les usines fabriquant de très gros robots (Grands Modèles) ou faisant fonctionner beaucoup de robots en même temps (Grands Batches). C'est comme une ligne d'assemblage massive où il y a assez d'ouvriers pour que les grosses machines soient pleinement occupées.
2. La Cuisine « Entrelacée » (Kernel-2)
- Comment ça marche : Imaginez que vous emballez des boîtes. Au lieu d'emballer tous les objets rouges, puis tous les bleus, vous emballez un objet rouge, puis un bleu, puis un rouge, en les alternant parfaitement.
- L'Astuce : Ils mélangent les deux matrices de poids (les « recettes » pour les calculs) avant de commencer. Cela permet aux ouvriers de saisir un ingrédient « rouge » et un « bleu » simultanément et de les traiter ensemble immédiatement.
- Idéal pour : Les usines fabriquant de plus petits robots ou faisant fonctionner moins de robots à la fois (Petits Batches). Cette méthode est si efficace qu'elle maintient le sol de l'usine entièrement rempli d'ouvriers, évitant que quiconque ne reste à attendre sans rien faire.
Les Résultats : Vitesse et Précision
Les auteurs ont testé ces nouvelles cuisines sur des puces NVIDIA H100 (les processeurs d'IA les plus puissants disponibles) en utilisant diverses tailles de robots (allant de minuscules modèles de 0,5 Md à des modèles massifs de 72 Md).
- Accélérations Massives : Pour les plus petits robots, les nouvelles cuisines étaient 2,47 fois plus rapides que l'ancienne méthode standard. C'est comme réduire une tâche de 10 minutes à 4 minutes.
- Déplacement du Goulot d'Étranglement : L'ancien système était « Limité par la Mémoire » (passant trop de temps à marcher vers le tableau blanc). Le nouveau système est « Limité par le Calcul » (passant tout son temps à réellement faire les mathématiques). Ils ont atteint 79,5 % de la vitesse théorique maximale de la puce.
- Le Compilateur ne peut pas le faire : Les auteurs ont tenté d'utiliser le logiciel « pilote automatique » standard (le
torch.compilede PyTorch) pour corriger cela automatiquement. Il a échoué. Le pilote automatique était 3 à 7 fois plus lent que leurs cuisines personnalisées. Cela prouve que pour ce problème spécifique, il faut un expert humain pour concevoir la solution à la main ; l'ordinateur ne peut pas encore le découvrir par lui-même. - Meilleure Précision : Étonnamment, les nouvelles cuisines personnalisées étaient également plus précises que la méthode standard. La méthode standard présentait de petites erreurs mathématiques dans 4,5 % à 11 % des résultats, tandis que les nouvelles cuisines affichaient zéro erreur.
Résumé
L'article montre qu'en réorganisant le fonctionnement du plancher de l'usine — spécifiquement en empêchant les ouvriers de marcher constamment vers le tableau blanc pour lire ou écrire des notes intermédiaires — nous pouvons faire fonctionner les modèles d'IA beaucoup plus rapidement, en particulier pour les modèles plus petits utilisés sur les appareils de bord (comme les téléphones ou les ordinateurs portables). Ils ont prouvé que les outils logiciels standards ne peuvent pas reproduire cette efficacité, nécessitant du code spécialisé écrit à la main pour atteindre ces résultats.
Noyé(e) sous les articles dans votre domaine ?
Recevez des digests quotidiens des articles les plus récents correspondant à vos mots-clés de recherche — avec des résumés techniques, dans votre langue.