Faire tourner des Transformers sur RISC-V : Une nouvelle approche
Exécution efficace des modèles de transformateurs sur une plateforme RISC-V open-source.
― 7 min lire
Table des matières
- C’est quoi les Transformateurs ?
- Défis avec les Transformateurs
- Le Besoin d’une Exécution Efficace
- La Plateforme RISC-V
- Conception du Système
- Architecture Multi-Cœurs
- Instructions Spécialisées
- Gestion de la mémoire
- Résultats de Performance
- Évaluation avec des Modèles de Base
- Contributions Clés
- Conclusion
- Source originale
- Liens de référence
Ces dernières années, les modèles basés sur des Transformateurs sont devenus super importants pour plein de tâches, surtout dans le traitement du langage et des images. Ils tournent surtout sur des cartes graphiques puissantes ou du matériel spécial conçu juste pour ça. Par contre, on n’a pas trop mis l’accent sur l’utilisation de RISC-V, une plateforme générale. Cet article parle de comment les modèles de transformateurs peuvent être exécutés efficacement sur une plateforme RISC-V open-source avec plein de petits cœurs.
C’est quoi les Transformateurs ?
Les transformateurs sont des modèles complexes capables d’analyser et de comprendre des séquences de données, comme des phrases ou des images. Ils font ça en utilisant un truc appelé "attention", qui aide le modèle à comprendre quels éléments de l’entrée sont essentiels. Ces modèles peuvent apprendre à partir d’une énorme quantité de données sans avoir besoin d’exemples étiquetés, ce qui les rend super polyvalents.
Il existe différents types de transformateurs. Certains se concentrent uniquement sur la compréhension des entrées (modèles uniquement encodeurs), tandis que d'autres peuvent générer des sorties (modèles uniquement décodeurs). La capacité à gérer ces tâches rend les transformateurs adaptés à plein d’applications, comme répondre à des questions, traduire des langues ou même créer de nouveaux textes.
Défis avec les Transformateurs
Bien que les transformateurs aient montré d’excellentes performances, ils ont aussi leurs défis. Un gros problème est la façon dont ils gèrent les scores d’attention, qui peuvent devenir assez complexes à mesure que l’entrée grandit. Le mécanisme d’attention calcule des scores pour chaque élément d’entrée par rapport aux autres, ce qui entraîne une charge de calcul lourde, surtout avec des séquences plus longues.
En plus, utiliser l’opération Softmax pour normaliser ces scores peut être lent et compliqué, surtout pour de gros ensembles de données. Ça crée un besoin de méthodes améliorées pour gérer l’attention d'une manière qui maintient la performance tout en étant efficace.
Le Besoin d’une Exécution Efficace
Avec la demande croissante pour une exécution efficace des transformateurs, beaucoup de boîtes ont développé du matériel spécialisé. Cependant, ça limite souvent la flexibilité. L’idée ici est de créer une plateforme open-source qui peut gérer à la fois les besoins de calcul des transformateurs et la flexibilité nécessaires pour s’adapter à des charges de travail changeantes.
L’objectif est d’établir un environnement où les modèles peuvent tourner efficacement sans être collés à un matériel spécifique. En utilisant une plateforme RISC-V qui exploite plein de petits cœurs, on peut explorer de nouvelles façons d’optimiser tant le hardware que le software utilisés.
La Plateforme RISC-V
L'architecture RISC-V est open-source et permet des conceptions personnalisées. Cette flexibilité signifie qu’on peut créer un système qui correspond aux besoins des modèles de transformateurs. Notre approche consiste à utiliser une configuration multi-cœurs où chaque cœur peut traiter efficacement des parties d’un modèle. Ça veut dire qu’on peut s’attaquer à des modèles complexes sans avoir besoin des énormes ressources normalement associées.
En ayant plein de cœurs, on peut paralléliser efficacement les tâches. Cette configuration permet à la plateforme de gérer plusieurs opérations en même temps, ce qui est super utile pour faire tourner de gros modèles comme les transformateurs.
Conception du Système
Architecture Multi-Cœurs
Notre système est basé sur une structure multi-cœurs, où chaque cœur peut gérer indépendamment des tâches de calcul. Ce design permet à plusieurs opérations de se dérouler simultanément, améliorant ainsi la performance globale. Chaque groupe de cœurs est configuré pour gérer différentes parties des modèles de transformateurs, permettant un chargement et un traitement efficaces des données.
Instructions Spécialisées
Pour améliorer la performance, on a mis en place des instructions spécialisées dans notre architecture RISC-V. Ces instructions aident à simplifier les opérations courantes nécessaires pour traiter les transformateurs, comme gérer des calculs flottants et gérer des flux de données. En optimisant ces tâches, on peut améliorer significativement l’efficacité de l’exécution des modèles.
Gestion de la mémoire
Une gestion efficace de la mémoire est cruciale pour faire tourner des transformateurs. Notre architecture inclut des capacités avancées de transfert de données, permettant aux cœurs de communiquer rapidement les uns avec les autres. Ça minimise les délais qui viennent généralement avec l’accès à une mémoire plus lente.
Le système utilise un mélange de mémoire partagée sur puce et de connexions à une mémoire externe. Cette configuration permet d’accéder rapidement aux données essentielles tout en ayant encore de la place pour de plus grands ensembles de données.
Résultats de Performance
Évaluation avec des Modèles de Base
Pour évaluer notre système, on l’a testé avec plusieurs modèles de base, y compris des transformateurs uniquement encodeurs et uniquement décodeurs. Ces benchmarks nous permettent de voir comment notre plateforme performe par rapport à des configurations standards.
Modèles Uniquement Encodeurs
Pour les modèles uniquement encodeurs, on a obtenu des gains de vitesse impressionnants par rapport aux implémentations de référence. Les optimisations faites pour l’architecture RISC-V nous ont permis d’atteindre des taux d’utilisation des unités flottantes (FPU) plus élevés, ce qui veut dire que les cœurs fonctionnaient plus efficacement.
Modèles Uniquement Décodeurs
Dans le cas des modèles uniquement décodeurs, on a aussi vu des améliorations notables. Dans différents modes de fonctionnement, notre plateforme a surpassé les alternatives conventionnelles. Cette efficacité est attribuée à nos instructions sur mesure et nos techniques de gestion des données.
Contributions Clés
Bibliothèque Open-Source : On a créé une bibliothèque open-source complète pour déployer des modèles de transformateurs sur l’architecture RISC-V. Cette bibliothèque supporte à la fois les modèles uniquement encodeurs et uniquement décodeurs, ce qui la rend polyvalente pour diverses applications.
Boosts de Performance : Nos benchmarks montrent qu’en utilisant des instructions spécialisées et des techniques de gestion de mémoire, on peut obtenir des améliorations de performance significatives, atteignant jusqu’à 35 fois un temps d'exécution meilleur que les modèles de référence.
Scalabilité : L’architecture est conçue pour être facilement évolutive. Ça veut dire qu’au fur et à mesure que les demandes ou la complexité des modèles augmentent, notre système peut s’adapter sans devoir tout refondre.
Conclusion
Grâce à notre travail, on a montré qu’il est possible de faire tourner efficacement des modèles de transformateurs à la pointe de la technologie sur une plateforme RISC-V flexible et open-source. La combinaison d’une architecture multi-cœurs, d’instructions spécialisées et d’une gestion de mémoire efficace offre une approche prometteuse pour transformer la façon dont on gère des modèles à grande échelle.
Les avancées faites sur notre plateforme mettent en évidence le potentiel de création de systèmes adaptables qui peuvent suivre le rythme de l’évolution des modèles d’IA. Les travaux futurs se concentreront sur l’amélioration de l’écoulement d’exécution et l’exploration d’optimisations supplémentaires pour maintenir cette flexibilité et cette performance.
Cette recherche vise à ouvrir la porte à plus de chercheurs et développeurs pour expérimenter des solutions d'IA efficaces dans un environnement open-source, facilitant des approches innovantes pour l'apprentissage automatique et l'intelligence artificielle.
Titre: Optimizing Foundation Model Inference on a Many-tiny-core Open-source RISC-V Platform
Résumé: Transformer-based foundation models have become crucial for various domains, most notably natural language processing (NLP) or computer vision (CV). These models are predominantly deployed on high-performance GPUs or hardwired accelerators with highly customized, proprietary instruction sets. Until now, limited attention has been given to RISC-V-based general-purpose platforms. In our work, we present the first end-to-end inference results of transformer models on an open-source many-tiny-core RISC-V platform implementing distributed Softmax primitives and leveraging ISA extensions for SIMD floating-point operand streaming and instruction repetition, as well as specialized DMA engines to minimize costly main memory accesses and to tolerate their latency. We focus on two foundational transformer topologies, encoder-only and decoder-only models. For encoder-only models, we demonstrate a speedup of up to 12.8x between the most optimized implementation and the baseline version. We reach over 79% FPU utilization and 294 GFLOPS/W, outperforming State-of-the-Art (SoA) accelerators by more than 2x utilizing the HW platform while achieving comparable throughput per computational unit. For decoder-only topologies, we achieve 16.1x speedup in the Non-Autoregressive (NAR) mode and up to 35.6x speedup in the Autoregressive (AR) mode compared to the baseline implementation. Compared to the best SoA dedicated accelerator, we achieve 2.04x higher FPU utilization.
Auteurs: Viviane Potocnik, Luca Colagrande, Tim Fischer, Luca Bertaccini, Daniele Jahier Pagliari, Alessio Burrello, Luca Benini
Dernière mise à jour: 2024-05-29 00:00:00
Langue: English
Source URL: https://arxiv.org/abs/2405.19284
Source PDF: https://arxiv.org/pdf/2405.19284
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.