TileFuse: A Fused Mixed-Precision Kernel Library for Efficient Quantized LLM Inference on AMD NPUs
Ce document présente TileFuse, une bibliothèque de noyaux à précision mixte proche du matériel pour les NPU AMD XDNA2 qui fusionne le dépaquetage, la déquantification et les opérations matricielles afin de permettre un support natif et efficace pour l'inférence de LLM quantifiés de type AWQ, atteignant des gains significatifs de performance et d'efficacité énergétique par rapport aux bases de référence existantes sur les appareils de bord clients.
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 avez un camion de livraison flambant neuf et ultra-rapide (le NPU) garé dans votre garage, mais que la seule carte routière dont vous disposez (le logiciel) vous indique comment conduire un vieux vélo lent. Vous ne pouvez pas utiliser la vitesse du camion car la carte ne sait pas naviguer dans ses voies de circulation.
C'est le problème de l'exécution des chatbots d'IA modernes (LLM) sur les nouvelles puces d'ordinateurs portables aujourd'hui. Ces puces possèdent des « moteurs d'IA » puissants (NPU) conçus pour économiser la batterie et être rapides, mais le logiciel force généralement l'IA à changer de forme pour s'adapter au moteur, plutôt que de laisser le moteur s'adapter à l'IA.
TileFuse est un nouvel ensemble d'outils qui corrige cela. C'est comme construire une autoroute personnalisée à grande vitesse spécifiquement pour le camion, lui permettant de transporter de lourdes charges de données compressées sans avoir à les réemballer.
Voici comment l'article explique cette solution en utilisant des analogies simples :
1. Le Problème : Le goulot d'étranglement du « réemballage »
Habituellement, pour exécuter une IA sur ces nouvelles puces, vous devez prendre les poids « compressés » de l'IA (qui sont comme des livres emballés étroitement dans une petite valise) et les déballer dans un format volumineux (comme sortir les livres et les étaler à plat sur une table) juste pour que la puce puisse les lire.
- L'ancienne méthode : La puce lit la valise, déballe les livres, les remet dans une autre valise, et ensuite commence à les lire. Cela gaspille du temps et de l'énergie.
- La méthode TileFuse : La puce lit la valise, l'ouvre, et lit les livres pendant qu'ils sont encore en train d'être déballés. Elle fait tout en un seul mouvement fluide.
2. La Solution : Les noyaux (Kernels) « Fusionnés »
Les auteurs ont créé une bibliothèque appelée TileFuse. Considérez un « noyau » comme un manuel d'instructions spécifique pour la puce.
- Fusion : Au lieu d'avoir trois travailleurs distincts (un pour déballer, un pour convertir, un pour calculer), TileFuse les combine en un seul super-travailleur. Ce travailleur saisit les données compressées, les convertit à la volée, et effectue les calculs, le tout en un seul mouvement continu.
- Le Résultat : C'est comme un chef qui ne se contente pas de couper les légumes ; il les coupe, les assaisonne et les cuit en un seul mouvement continu. L'article affirme que cela rend la partie « déballage » du processus jusqu'à 2,8 fois plus rapide pour certaines tâches par rapport aux anciennes méthodes.
3. La disposition « Entrelacée » (Interleaved) : Organiser l'entrepôt
Les grands modèles d'IA possèdent des listes massives de nombres (poids). Le système de mémoire de la puce a une limite sur la distance qu'il peut parcourir pour saisir la pièce de donnée suivante. Si les données sont stockées de manière désordonnée et éparpillée, la puce doit faire de longs trajets lents pour obtenir la pièce suivante.
- L'analogie : Imaginez un entrepôt où les boîtes sont empilées de manière aléatoire. Un chariot élévateur doit parcourir 50 pieds pour obtenir la boîte suivante.
- La correction de TileFuse : Ils réorganisent l'entrepôt (appelé « Interleaved Pre-tiling ») pour que les boîtes dont le chariot élévateur a besoin ensuite soient juste à côté les unes des autres. Cela permet à la puce de saisir de gros blocs de données en un seul mouvement fluide, supportant des modèles d'IA beaucoup plus larges (jusqu'à 32 000 éléments de large) qui ne могли pas auparavant tenir dans l'espace.
4. Le Problème du « GEMV » : Le bouchon de circulation
Les chatbots d'IA fonctionnent en deux phases :
- Le Pré-remplissage (Prefilling) : Lire une longue instruction d'un coup (comme lire un livre entier). C'est rapide et facile pour le camion.
- La Génération de Tokens : Écrire un mot à la fois (comme écrire une phrase). C'est lent et délicat.
- Le Problème : Lorsqu'il écrit un mot à la fois, le « camion » de la puce reste souvent inactif car il est conçu pour transporter de grosses charges, pas de petites. C'est comme utiliser un semi-remorque pour livrer une seule lettre ; le moteur tourne, mais le camion est vide.
- La Correction : TileFuse a redessiné le flux de circulation pour cette phase. Au lieu d'envoyer les données vers une seule voie de l'autoroute, il distribue le travail sur les 32 voies de la puce simultanément. Cela maintient tout le moteur occupé, même lorsque la « charge » est petite.
5. Résultats dans le monde réel
L'équipe a testé cela sur de vrais ordinateurs portables AMD (Ryzen AI) et a comparé les résultats à l'utilisation de la carte graphique standard (iGPU) de l'ordinateur.
- Vitesse : Pour la lecture de longues instructions (pré-remplissage), le NPU avec TileFuse était jusqu'à 2 fois plus rapide que la carte graphique.
- Batterie : Comme le NPU est plus efficace, il a utilisé 64 % d'énergie en moins pour accomplir le même travail.
- Le Bémol : Pour l'écriture d'un mot à la fois (génération de tokens), le NPU était parfois plus lent que la carte graphique. Cela est dû au fait que le « temps de configuration » pour configurer le NPU est trop long pour des tâches aussi petites et rapides.
- La Solution Hybride : L'article suggère une approche du « meilleur des deux mondes » : Utiliser le NPU pour le gros du travail (lecture de longues instructions) et la carte graphique pour les tâches rapides (écriture de mots). Cette combinaison offre la meilleure vitesse et la meilleure autonomie de batterie.
Résumé
TileFuse est un pont. Il prend les formats d'IA compressés populaires que les développeurs utilisent déjà (comme AWQ) et les fait fonctionner nativement sur les nouvelles puces d'IA d'AMD sans avoir besoin de modifier les modèles d'IA eux-mêmes. En fusionnant les étapes de déballage et de calcul, en organisant parfaitement les données et en utilisant toute la puissance des voies de la puce, il rend l'exécution de l'IA sur les ordinateurs portables nettement plus rapide et plus économe en énergie.
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.