Simple Science

La science de pointe expliquée simplement

# Informatique# Apprentissage automatique# Intelligence artificielle# Calcul et langage

Améliorer l'efficacité des modèles de transformateur

Une nouvelle pile logicielle booste les performances des modèles de langage basés sur les Transformers dans les applications du quotidien.

― 9 min lire


Accélérer la vitesse desAccélérer la vitesse desmodèles Transformermodèles basés sur les Transformers.considérablement l'inférence pour lesUn nouveau logiciel accélère
Table des matières

Dernièrement, les modèles de langage basés sur les Transformers sont devenus super populaires pour des tâches en traitement du langage naturel (NLP). Ces modèles sont super utiles, mais ils rencontrent quelques défis quand il s'agit de les utiliser dans des applications réelles. Les principaux soucis sont les exigences élevées en termes de vitesse et les réponses rapides nécessaires dans de nombreux environnements industriels. Pour rendre les modèles plus simples à utiliser, on met en place des techniques comme la compression de modèle. L'une de ces techniques, c'est l'Élagage structuré, qui aide à améliorer l'efficacité d'exécution de ces modèles.

Défis dans l'Inférence de Modèle

Beaucoup d'outils utilisés actuellement pour faire fonctionner des réseaux de neurones ne supportent pas pleinement la sparsité structurée. Ce manque de support veut dire qu'ils peuvent ne pas bien fonctionner avec les améliorations apportées par l'élagage structuré. Dans cet article, on se concentre sur la création d'une pile logicielle efficace pour faire tourner des modèles de langage basés sur des Transformers. Dans notre approche, on utilise une méthode où les poids du modèle sont élagués par blocs de taille fixe.

Notre Approche pour l'Inference Sparse

On a développé un accélérateur logiciel conçu spécifiquement pour l'Apprentissage profond sparse. Cet accélérateur fonctionne bien avec les modèles Transformer et profite au maximum de la technologie Deep Learning Boost d'Intel. Cette technologie aide à améliorer la performance d'une opération spécifique appelée multiplication de matrice sparse - matrice dense (SpMM) sur les CPU.

Notre implémentation de SpMM surpasse de loin les bibliothèques existantes comme oneMKL, TVM et LIBXSMM. Cette amélioration se voit à travers différentes formes et niveaux de sparsité. En utilisant notre accélérateur, on a atteint jusqu'à cinq fois de meilleures performances comparé aux opérations de matrice dense traditionnelles. On a testé notre logiciel sur des modèles Transformer populaires, y compris Bert-Mini, DistilBERT, Bert-Base et BERT-Large. Sous certaines configurations, notre logiciel a montré une accélération de 1,5 fois par rapport à la solution Deepsparse de Neural Magic.

En plus, quand on a comparé notre approche avec des solutions comme ONNX Runtime et PyTorch, on a constaté que notre logiciel était beaucoup plus rapide, montrant jusqu'à 37 fois plus rapide que ONNX Runtime et 345 fois que PyTorch.

La Croissance des Modèles Transformer

Les modèles basés sur des Transformers deviennent de plus en plus gros. Ils vont de modèles avec des millions de paramètres, comme BERT-Large, à ceux avec des milliards, comme Turing-Megatron et GPT-3. Ces modèles se sont révélés très efficaces pour diverses tâches de NLP, atteignant une précision impressionnante. Cependant, déployer de tels grands modèles peut être difficile à cause des besoins énormes en ressources de calcul et des exigences de timing strictes qui existent dans de nombreux cas d'utilisation réels.

Pour gérer ces défis, il est souvent essentiel de compresser et d'optimiser les modèles pour les rendre plus efficaces. Les méthodes courantes pour cela sont l'élagage et la Quantification.

Types d'Élagage

L'élagage peut se faire de deux manières : l'élagage non structuré et l'élagage structuré. L'élagage non structuré ne nécessite pas de motif spécifique, tandis que l'élagage structuré utilise un motif uniforme pour les poids. En général, il est plus difficile de montrer des améliorations de performance sans des niveaux élevés de sparsité dans les modèles non structurés. Bien que les modèles structurés puissent améliorer l'efficacité, ils nécessitent souvent du matériel spécialisé pour montrer des augmentations de vitesse significatives.

Quantification dans la Compression de Modèle

La quantification est une autre technique bien connue pour la compression de modèle, qui peut augmenter la vitesse d'inférence. Cette technique peut se faire de deux manières : la quantification après entraînement (PTQ) ou l'entraînement conscient de quantification (QAT). PTQ nécessite une phase de calibration sur des échantillons représentatifs, tandis que QAT implique un ajustement pendant le processus d'entraînement.

Notre Approche Combinée

Dans notre travail, on combine la sparsité structurée et la quantification pour créer une pile logicielle efficace pour les modèles basés sur des Transformers. On a défini un motif de sparsité structuré qui utilise une taille de bloc de 4x1. À partir de ce motif, on peut générer des modèles spars tout en maintenant des niveaux d'exactitude acceptables.

Pour mesurer la performance de nos modèles spars, on a implémenté le noyau SpMM et un noyau d'attention sparse. On a testé notre implémentation SpMM à travers différentes formes typiques en utilisant cinq niveaux de sparsité différents. Les résultats ont montré que notre implémentation performait nettement mieux que les bibliothèques existantes. En particulier, notre noyau SpMM a démontré une meilleure vitesse par rapport aux noyaux GEMM spars structurés et non structurés des bibliothèques populaires et aux noyaux GEMM denses.

Améliorations de Performance

Quand il s'agit de vitesse, notre noyau SpMM a atteint des résultats remarquables. Par exemple, en le comparant à d'autres bibliothèques, il a montré des accélérations allant jusqu'à 17 fois contre oneMKL et jusqu'à 41 fois contre TVM pour des tâches à thread unique. Pour les tâches multi-threadées, il a surpassé oneMKL par 20 fois et TVM par 62 fois. De plus, notre noyau s'adapte bien des environnements à thread unique aux environnements multi-threadés.

Application aux Modèles Transformer

On a appliqué nos méthodes à des modèles Transformer largement utilisés comme Bert-Mini, DistilBERT, Bert-Base et BERT-Large. Les résultats ont montré que notre accélérateur logiciel sparse a atteint des augmentations de vitesse allant jusqu'à 1,5 fois par rapport à la solution Deepsparse de Neural Magic et a surperformé significativement l'ONNX Runtime et PyTorch sur le même matériel.

Travaux Liés à la Compression de Modèle

Les techniques de compression ont pris de l'ampleur alors que les gens cherchent des moyens de rendre de grands modèles plus gérables. L'élagage a montré qu'il peut aider à réduire la taille des modèles tout en maintenant la qualité. Plus récemment, l'élagage structuré est devenu populaire, utilisant des motifs prédéfinis pour la gestion des poids. Cela peut mener à des modèles plus efficaces prêts pour diverses tâches.

La quantification joue également un rôle essentiel dans l'amélioration de l'efficacité des modèles. La distillation des connaissances est une autre technique où un modèle plus petit est entraîné pour imiter un plus grand, atteignant une haute précision tout en étant plus efficace.

Outils Existants et Solutions d'Inference

Plusieurs bibliothèques existent pour soutenir les opérations sparse et dense sur les CPU et GPU. La bibliothèque de noyaux mathématiques oneAPI (oneMKL) a des fonctionnalités pour les deux types mais a des limites dans le support de certains types de données. LIBXSMM est axée sur les multiplications de petites matrices haute performance mais nécessite des ajustements supplémentaires. Apache TVM agit comme une pile de compilation conçue pour l'apprentissage profond, tandis que la bibliothèque oneAPI Deep Neural Network (oneDNN) offre un bon support pour les noyaux denses.

Les frameworks modernes d'apprentissage profond offrent également des solutions pour l'entraînement et l'inférence. Cela inclut TensorFlow, PyTorch et ONNX Runtime. Cependant, beaucoup de ces options manquent de support pour les modèles spars. Neural Magic est un acteur important dans l'espace d'inférence CPU, se concentrant sur les améliorations conscientes de la sparsité pour la performance.

Conception d'un Accélérateur Logiciel Sparse

On a développé une solution logicielle complète pour améliorer l'inférence des modèles basés sur des Transformers. Notre approche met l'accent sur un motif de sparsité structuré qui correspond à la capacité des processeurs Intel Xeon Scalables. On a réussi cela en se concentrant sur la conception de la sparsité structurée et en optimisant l'exécution du noyau GEMM sparse.

Dans l'implémentation, on a développé des techniques pour les opérations GEMM et d'attention spars. Un objectif principal était de s'assurer que notre approche soit compatible avec les CPU et utilise pleinement leurs capacités. On a examiné différentes stratégies, y compris la fusion d'opérateurs, pour minimiser les surcharges et optimiser l'accès à la mémoire.

Cadre d'Optimisation de Bout en Bout

Notre cadre d'inférence sparse se compose de plusieurs niveaux d'optimisation : opérateur, graphe et runtime. L'optimisation des opérateurs se concentre sur la recherche des meilleurs noyaux pour les opérations spars et denses. On a aussi développé un allocateur de mémoire personnalisé pour améliorer l'utilisation des données et réduire les surcharges d'allocation.

L'optimisation du graphe inclut plusieurs étapes comme le repli de constantes et la quantification, tandis que l'optimisation du runtime garantit un plan efficace des threads et une utilisation efficace de la mémoire.

Configuration Expérimentale et Résultats

On a testé notre logiciel sur des instances CPU x86 populaires. Les expériences se sont concentrées sur différentes configurations pour démontrer le débit et la performance en latence. Les résultats ont montré que nos modèles spars maintiennent une haute efficacité dans des conditions de production proxy, atteignant des augmentations de vitesse significatives par rapport aux options traditionnelles.

Durant les benchmarks, on a varié les niveaux de sparsité pour examiner leur impact sur la performance. Les résultats ont montré une relation presque linéaire dans l'amélioration de la performance à travers plusieurs modèles, renforçant l'efficacité de nos méthodes.

Conclusion et Directions Futures

En résumé, on a développé une pile logicielle efficace qui améliore significativement le traitement des modèles de langage basés sur des Transformers. Le noyau SpMM que nous avons implémenté a dépassé les solutions existantes, atteignant des gains de vitesse substantiels à travers des modèles représentatifs. Comme prochaines étapes, on vise à étendre notre logiciel pour supporter plus d'architectures CPU et contribuer nos découvertes à la plus grande communauté d'utilisateurs de modèles Transformer.

Globalement, notre travail représente un pas en avant pour rendre ces modèles puissants plus accessibles et efficaces pour des applications réelles.

Source originale

Titre: An Efficient Sparse Inference Software Accelerator for Transformer-based Language Models on CPUs

Résumé: In recent years, Transformer-based language models have become the standard approach for natural language processing tasks. However, stringent throughput and latency requirements in industrial applications are limiting their adoption. To mitigate the gap, model compression techniques such as structured pruning are being used to improve inference efficiency. However, most existing neural network inference runtimes lack adequate support for structured sparsity. In this paper, we propose an efficient sparse deep learning inference software stack for Transformer-based language models where the weights are pruned with constant block size. Our sparse software accelerator leverages Intel Deep Learning Boost to maximize the performance of sparse matrix - dense matrix multiplication (commonly abbreviated as SpMM) on CPUs. Our SpMM kernel outperforms the existing sparse libraries (oneMKL, TVM, and LIBXSMM) by an order of magnitude on a wide range of GEMM shapes under 5 representative sparsity ratios (70%, 75%, 80%, 85%, 90%). Moreover, our SpMM kernel shows up to 5x speedup over dense GEMM kernel of oneDNN, a well-optimized dense library widely used in industry. We apply our sparse accelerator on widely-used Transformer-based language models including Bert-Mini, DistilBERT, Bert-Base, and BERT-Large. Our sparse inference software shows up to 1.5x speedup over Neural Magic's Deepsparse under same configurations on Xeon on Amazon Web Services under proxy production latency constraints. We also compare our solution with two framework-based inference solutions, ONNX Runtime and PyTorch, and demonstrate up to 37x speedup over ONNX Runtime and 345x over PyTorch on Xeon under the latency constraints. All the source code is publicly available on Github: https://github.com/intel/intel-extension-for-transformers.

Auteurs: Haihao Shen, Hengyu Meng, Bo Dong, Zhe Wang, Ofir Zafrir, Yi Ding, Yu Luo, Hanwen Chang, Qun Gao, Ziheng Wang, Guy Boudoukh, Moshe Wasserblat

Dernière mise à jour: 2023-06-28 00:00:00

Langue: English

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

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

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.

Plus d'auteurs

Articles similaires