Simple Science

La science de pointe expliquée simplement

# Informatique # Calcul et langage # Intelligence artificielle

NITRO : Un game changer pour les LLM sur les NPU

NITRO comble le fossé pour faire tourner des LLM sur des NPU, améliorant la performance et l'efficacité.

Anthony Fei, Mohamed S. Abdelfattah

― 10 min lire


NITRO booste les LLM sur NITRO booste les LLM sur les NPU. écoénergétique. sur les NPU pour un computing NITRO améliore la performance des LLM
Table des matières

Les grands modèles de langage (LLMs) sont un peu les stars de la tech en ce moment. Ils aident avec tout, des chatbots à diverses tâches de recherche. Si tu as déjà parlé avec un assistant virtuel, alors tu as rencontré un LLM. Un des trucs excitants dans la tech en ce moment, c'est de créer du hardware qui fonctionne parfaitement avec ces modèles. Un de ces matériels s'appelle un Unité de Traitement Neural (NPU).

En 2023, un gros fabricant de puces a lancé le processeur Intel Core Ultra, appelé Meteor Lake. Ce processeur a trois composants principaux : une unité centrale de traitement (CPU), une unité de traitement graphique (GPU) et un NPU. Mais attention : le logiciel disponible pour ces NPUs ne supporte pas les besoins dynamiques des LLMs tout de suite. Alors, les chercheurs cherchent à améliorer ça. C'est là qu'entre en jeu le concept de NITRO.

Qu'est-ce que NITRO ?

NITRO est un cadre conçu pour aider les LLMs à tourner sur des NPUs. Il est construit avec Python et fonctionne avec le cadre OpenVINO d'Intel. Pense à ça comme un assistant sympa qui s'assure que les LLMs peuvent générer du texte et tenir des conversations efficacement sur ce matériel spécialisé.

Qu'est-ce qui est spécial à Meteor Lake ?

Le processeur Meteor Lake, c'est un peu comme un couteau suisse, avec plusieurs tuiles qui servent à différentes fonctions. Ces tuiles incluent des zones pour le calcul, les graphismes, le contrôle système, et la gestion des entrées/sorties. Si tu imagines une ville animée avec différents quartiers, tu n'es pas trop loin de la réalité !

Parmi ces tuiles, le NPU se démarque. Il se spécialise dans l'exécution de tâches d'IA, et il le fait avec une faible consommation d'énergie. Pour te donner une idée, le NPU peut gérer un nombre impressionnant d'opérations par seconde, ce qui est dingue pour un petit appareil. Ça le rend bien adapté aux tâches comme faire tourner des LLMs. Mais il doit aussi faire face à quelques défis, surtout parce qu'il ne peut travailler qu'avec des modèles statiques. Imagine essayer de monter un puzzle où certaines pièces changent de forme pendant que tu essaies de les emboîter !

Le défi avec les LLMs

Les LLMs fonctionnent de manière dynamique ; imagine ça comme une recette où tu ajoutes des ingrédients au fur et à mesure que tu cuisines. Ils créent constamment de nouvelles données pendant le processus de génération de texte. Malheureusement, l'exigence de modèle statique de la plupart des NPUs ne correspond pas vraiment à ce processus d'ajout d'ingrédients.

Donc, les chercheurs se grattent la tête, essayant de trouver un moyen de faire fonctionner ces modèles dynamiques sur le matériel qui peut les supporter. C’est un peu comme essayer de mettre un carré dans un trou rond-frustrant et souvent impossible.

Le rôle d'OpenVINO

OpenVINO d'Intel est un kit d'outils qui aide les développeurs à déployer des modèles d'apprentissage machine sur divers appareils Intel, y compris les CPU, GPU, et NPUs. Il présente les modèles dans un format spécifique. Mais quand il s'agit de soutenir les LLMs, OpenVINO a quelques limites.

Les modèles qu'il gère sont principalement pour des opérations statiques, ce qui signifie que chaque partie du modèle doit avoir une forme définie. Quand tu penses à l'architecture transformer que les LLMs utilisent, ça complique un peu les choses. Les transformers fonctionnent en ajustant leur structure selon l'entrée qu'ils reçoivent, mais l'exigence statique empêche cette flexibilité.

Un aperçu d'OpenVINO

OpenVINO est composé de fichiers de modèles spécifiques qui détaillent comment le modèle fonctionne. Chaque modèle est similaire à un plan, avec des nœuds représentant diverses opérations (comme déplacer des données) et des bords qui les relient. Tandis que cette structure fonctionne bien pour de nombreuses applications d'apprentissage machine, ce n'est pas idéal pour les LLMs à cause de leur nature dynamique.

En termes simples, si OpenVINO était une salle de classe, chaque nœud représenterait un gamin attendant son tour de parler. Mais comme les LLMs ajoutent sans cesse de nouveaux ‘élèves’ (c'est-à-dire, des données) chaque seconde, l'organisation est un peu chaotique.

Comment NITRO fonctionne

Alors plongeons dans comment NITRO fonctionne pour combler ce fossé. Le cadre a quelques principes directeurs pour être efficace. D'abord, il vise à rester fidèle au design d'OpenVINO, ce qui signifie qu'il laisse OpenVINO faire la majorité du travail lourd tandis que NITRO intervient pour les tâches qui nécessitent une aide supplémentaire.

Deuxièmement, le cadre est conçu pour être flexible. Avec autant d'idées qui circulent dans la recherche, il est important que NITRO puisse s'adapter et gérer diverses tâches. Enfin, garder tout facile à comprendre et à maintenir est une priorité. Après tout, personne ne veut gérer un code enchevêtré qui nécessite un diplôme pour être déchiffré.

Réécrire les modèles PyTorch

Pour faire fonctionner les LLMs avec les NPUs, les chercheurs réécrivent souvent des modèles existants. Imagine prendre un roman classique et l'adapter en une bande dessinée facile à lire. C'est ce qui se passe ici. En retravaillant ces modèles, ils peuvent être convertis en un format compatible avec OpenVINO.

Un changement implique de simplifier les entrées dans les modèles. Beaucoup de modèles existants utilisent des configurations complexes ; ça peut mener à des conversions ratées. En rationalisant tout, ça devient beaucoup plus facile de passer d'un modèle PyTorch au format IR d'OpenVINO.

Étendre les caches KV

Le système de cache clé-valeur dans les LLMs, qui stocke des données pour un accès rapide, peut devenir délicat quand on doit maintenir des formes statiques. NITRO résout ça en étendant les caches pour s'assurer qu'il y a toujours un peu d'espace disponible. C'est un peu comme réserver quelques chaises supplémentaires à un dîner-tu ne sais jamais quand des invités supplémentaires pourraient arriver !

Déplacer les embeddings rotatifs

Un autre changement concerne les embeddings rotatifs, qui sont des techniques mathématiques qui aident les LLMs à comprendre le contexte. NITRO déplace ces embeddings dans la zone de travail principale plutôt que de les gérer séparément. Cet ajustement aide à rationaliser le processus et garde tout mieux organisé.

Conversion efficace des modèles

Une fois les modèles réécrits et correctement configurés, ils sont prêts à être convertis en IR d'OpenVINO. Mais attention : les modèles plus grands peuvent rapidement dépasser les limites de mémoire, comme empiler trop de livres sur une étagère. Pour contrer ça, les chercheurs utilisent une méthode appelée “chunking”.

Cette technique consiste à casser le modèle en morceaux plus petits, qui peuvent être traités un à un au lieu d'essayer de tout gérer en même temps. C'est une manière efficace de gérer les ressources et assure des transitions réussies des modèles PyTorch vers OpenVINO.

L'importance des noms

Au fur et à mesure que les modèles sont convertis, le nommage est crucial. Tout comme avoir un classeur bien organisé, avoir des noms clairs pour chaque partie du modèle rend tout plus facile à suivre. Quand les nœuds ont des noms descriptifs, ça simplifie le processus de recherche et de gestion des données tout au long du fonctionnement du modèle.

La structure du répertoire des modèles

Après conversion, chaque modèle est organisé dans une structure de répertoire nette. Cette organisation est essentielle pour s'assurer que tout est facilement accessible et bien défini. Si tu as déjà essayé de te repérer dans un placard en désordre, tu apprécieras la valeur d'un setup bien rangé !

Tout mettre ensemble pour l'inférence

Une fois que tout est en place, NITRO met en place un pipeline standard pour générer du texte. C'est le moment où ça fonctionne comme une machine bien huilée, prenant des entrées et produisant des sorties textuelles cohérentes. Le cadre abstrait la complexité pour que les développeurs n'aient pas à se soucier des détails compliqués.

Évaluer la performance

Les chercheurs ont été occupés à tester comment ces modèles tournent sur le NPU par rapport à d'autres matériels comme les CPU et GPU. Ils ont installé un laptop équipé du processeur Meteor Lake pour effectuer divers tests, surveillant la rapidité avec laquelle différents modèles peuvent générer du texte.

Alors que le GPU pourrait être le champion en vitesse brute, le NPU montre beaucoup de promesse, surtout pour les modèles de taille moyenne. Les résultats révèlent que, même si le NPU est généralement plus lent que le GPU, il a toujours des avantages en efficacité énergétique. C'est comme choisir entre une voiture de sport flashy et une berline fiable et économe en carburant-tout dépend de ce que tu apprécies le plus !

Gestion des erreurs et défis

Malgré tous les progrès, il y a des couacs en cours de route. En testant diverses configurations, les résultats ne correspondent pas toujours aux attentes. Plus précisément, des problèmes ont surgi avec certaines techniques de compression de poids, et des erreurs apparaissent quand certaines combinaisons sont utilisées.

Mais ne t'inquiète pas ! C'est une partie du parcours dans le développement technologique. Tout comme un chef doit parfois ajuster sa recette, les chercheurs doivent adapter leurs méthodes pour surmonter ces défis.

NITRO vs. D'autres bibliothèques

En comparant NITRO avec d'autres bibliothèques d'accélération NPU, les résultats montrent que NITRO offre des performances significativement meilleures. L'approche de NITRO conduit à des temps d'inférence plus rapides, surpassant les alternatives.

Cependant, il reste des domaines où un développement supplémentaire peut aider à améliorer l'efficacité et les performances globales.

À l'horizon

Bien que NITRO ait fait de grands pas pour permettre aux LLMs de tourner sur les NPUs, il y a encore de la marge pour s'améliorer. Les travaux futurs pourraient se concentrer sur le perfectionnement des embeddings rotatifs ou le développement de nouvelles méthodes pour rationaliser l'ensemble du processus d'inférence.

L'objectif ultime reste de faire des NPUs une option privilégiée pour faire tourner les LLMs, surtout au vu de leur potentiel en efficacité énergétique. Être conscient de la consommation d'énergie est plus important que jamais, et les NPUs pourraient bien être le meilleur candidat pour répondre à cette exigence.

Conclusion

Dans le grand schéma de la technologie, les développeurs font face à des défis constants pour suivre les avancées des LLMs et du matériel. Le travail continu avec des cadres comme NITRO montre des promesses pour une intégration et une optimisation futures. Au fur et à mesure que la recherche progresse et que des améliorations sont apportées, l'espoir est qu'on voit un monde où des appareils économes en énergie peuvent gérer sans effort les lourdes tâches de l'IA avancée.

Donc, même si le parcours a ses obstacles, l'avenir s'annonce rayonnant pour les NPUs, les LLMs, et la communauté tech dans son ensemble. Après tout, on dit que la nécessité est la mère de l'invention, et avec des demandes croissantes pour des systèmes plus intelligents, on peut s'attendre à des innovations passionnantes juste au coin de la rue !

Source originale

Titre: NITRO: LLM Inference on Intel Laptop NPUs

Résumé: Large Language Models (LLMs) have become essential tools in natural language processing, finding large usage in chatbots such as ChatGPT and Gemini, and are a central area of research. A particular area of interest includes designing hardware specialized for these AI applications, with one such example being the neural processing unit (NPU). In 2023, Intel released the Intel Core Ultra processor with codename Meteor Lake, featuring a CPU, GPU, and NPU system-on-chip. However, official software support for the NPU through Intel's OpenVINO framework is limited to static model inference. The dynamic nature of autoregressive token generation in LLMs is therefore not supported out of the box. To address this shortcoming, we present NITRO (NPU Inference for Transformers Optimization), a Python-based framework built on top of OpenVINO to support text and chat generation on NPUs. In this paper, we discuss in detail the key modifications made to the transformer architecture to enable inference, some performance benchmarks, and future steps towards improving the package. The code repository for NITRO can be found here: https://github.com/abdelfattah-lab/nitro.

Auteurs: Anthony Fei, Mohamed S. Abdelfattah

Dernière mise à jour: Dec 15, 2024

Langue: English

Source URL: https://arxiv.org/abs/2412.11053

Source PDF: https://arxiv.org/pdf/2412.11053

Licence: https://creativecommons.org/licenses/by/4.0/

Changements: Ce résumé a été créé avec l'aide de l'IA et peut contenir des inexactitudes. Pour obtenir des informations précises, veuillez vous référer aux documents sources originaux dont les liens figurent ici.

Merci à arxiv pour l'utilisation de son interopérabilité en libre accès.

Articles similaires