Cette recherche Microsoft permet aux développeurs de traiter plus d'un million de textes saisis 10 fois plus rapidement sur une seule machine à carte.
Le Large Language Model (LLM) est entré dans l'ère du traitement de contexte long, et la fenêtre contextuelle qu'il prend en charge est passée des 128 Ko précédents au niveau de jeton de 10 M. Cependant, en raison de la complexité quadratique du mécanisme d'attention, le modèle peut prendre plusieurs minutes pour traiter l'invite de saisie (c'est-à-dire l'étape de pré-remplissage) et commencer à générer le premier jeton. En conséquence, la génération du premier jeton prend trop de temps, ce qui affecte sérieusement l'expérience utilisateur, ce qui limite également considérablement l'application généralisée du LLM à contexte long. Par exemple (comme le montre la figure 2a), lors du service de LLaMA-3-8B sur une seule machine équipée d'A100, s'il indique qu'il y a 300 000 jetons, le modèle prendra 6 minutes pour terminer le préréglage. Pendant la phase de pré-remplissage, si l'invite passe à 1 million de jetons, ce nombre passera à 30 minutes. La surcharge de calcul de l'auto-attention représente plus de 90 % du délai total de pré-remplissage, ce qui en fait le principal goulot d'étranglement lorsque LLM gère des contextes longs. Les méthodes de pré-remplissage accéléré existantes ne parviennent souvent pas à maintenir une précision ou une efficacité acceptable lorsqu'elles sont appliquées à des LLM à contexte long. Afin de résoudre les problèmes ci-dessus, des chercheurs de Microsoft et de l'Université de Surrey ont proposé une méthode de calcul clairsemée conçue pour accélérer le pré-remplissage dans le traitement de séquences longues : MInference (Milliontokens Inference).
- Adresse du papier : https://arxiv.org/pdf/2407.02490
- Page d'accueil du papier : https://hqjiang.com/minference.html
- Titre du papier : MInference 1.0 : Accélération Le pré-remplissage des LLM à contexte long via Dynamic Sparse Attention
MInference peut être directement appliqué aux LLM existants sans modifications des paramètres de pré-formation ni ajustements supplémentaires. En testant diverses tâches en aval (y compris InfiniteBench, RULER, PG-19 et Needle In A Haystack) et modèles (y compris LLaMA-3-1M, Yi-200K, GLM-4-1M, Phi-3- 128K et Qwen2-128K), les expériences démontrent que MInference peut réduire efficacement la latence d'inférence pré-remplie sur l'A100 jusqu'à 10 fois tout en conservant la précision.
Grâce à MInference 1.0, les LLM à contexte long (tels que LLaMA-3-8B-1M, GLM-4-1M) permettent d'obtenir une vitesse d'inférence 10 fois supérieure sur un seul A1 00, et est plus précis. Introduction à la méthodeLes auteurs ont proposé MInference, un nom qui reflète leur ambition de réaliser une inférence d'un million de jetons sur une machine A100. MInference est une méthode efficace et sans formation pour la phase de pré-population du LLM en contexte long basée sur une attention dynamique et clairsemée. Les chercheurs pensent que l'attention, en particulier dans les contextes longs, est clairsemée et dynamique, c'est-à-dire que dans différentes entrées, le modèle clairsemé est très différent. Cette rareté dynamique présente trois modèles d'agrégation spatiale uniques qui s'appliquent à toutes les entrées : forme A, barre oblique verticale et bloc clairsemé. MInference détermine d'abord le meilleur modèle dynamique clairsemé hors ligne pour chaque tête à l'aide d'un algorithme de recherche de modèle clairsemé sensible au noyau, comme indiqué dans l'algorithme 1. Lors de l'inférence, il se rapproche dynamiquement de l'indice de parcimonie dynamique en fonction du motif de la tête, comme le montrent les algorithmes 2, 3. Enfin, les auteurs utilisent des noyaux GPU optimisés pour effectuer un calcul dynamique efficace de l’attention clairsemée, ce qui réduit considérablement la latence de l’étape de pré-population du LLM à contexte long. Par exemple, pour le mode "verticale - diagonale", l'auteur utilise d'abord le calcul d'attention entre les derniers Q et K pour estimer le meilleur indice de la verticale et de la diagonale. Ils ont ensuite exploité les compilateurs dynamiques clairsemés PIT et Triton pour créer un noyau FlashAttention à barre oblique verticale qui accélère le calcul de l'attention. Pour les modèles en forme de A, à pente verticale et à blocs clairsemés, les auteurs utilisent d'abord la mise en commun moyenne de Q et K dans le calcul de l'attention. En utilisant le pooling moyen et la propriété d'échange de MatMul, l'indice blocky-sparse peut être estimé. Ils ont ensuite utilisé le noyau FlashAttention clairsemé du bloc de construction Triton pour accélérer le calcul de l’attention. Voir l'Annexe C.4 et le code pour une implémentation détaillée du noyau. Résultats d'évaluation sur des benchmarks à contexte long
Les auteurs ont testé MInference dans une gamme de scénarios, notamment l'assurance qualité, l'encodage, les tâches basées sur la récupération, l'assurance qualité multi-sauts, la synthèse et les tâches mathématiques. Le benchmark RULER comprend plusieurs tâches complexes multi-sauts ou multi-aiguilles, reflétant efficacement la taille réelle de la fenêtre contextuelle de LLM. Comme le montre le tableau 1, MInference préserve efficacement les capacités réelles de gestion de la fenêtre contextuelle de LLM et étend même légèrement la taille réelle de la fenêtre contextuelle à 32 Ko. Les auteurs ont également testé MInference sur un plus large éventail de tâches à l'aide d'InfiniteBench avec une longueur moyenne de jeton de 214 Ko, comme le montre le tableau 2. Par rapport à la référence SoTA, MInference maintient systématiquement de bonnes performances dans toutes les tâches. Notamment, dans les tâches de récupération plus difficiles telles que la tâche de récupération KV, toutes les lignes de base n'ont pas permis de faire des prédictions précises, avec une précision inférieure à 1,2 %. Cependant, MInference conserve avec succès la capacité de gérer la récupération dynamique des paires KV. Pour évaluer plus en détail les performances de différentes longueurs de contexte et différentes positions des informations clés dans l'invite, les auteurs ont testé divers modèles et méthodes en utilisant la tâche « une aiguille dans une botte de foin ». Comme le montre la figure 1, MInference fonctionne bien sous différents modèles, fenêtres contextuelles et emplacements d'informations de repère, et ses performances restent les mêmes, voire légèrement améliorées, par rapport au modèle d'origine. Dans le cas de LLaMA-3-8B et GLM-4-9B-1M, MInference atteint des performances entièrement vertes dans des fenêtres contextuelles jusqu'à 1M. En revanche, les performances de StreamingLLM et InfLLM tombent en dessous de 20 % au milieu de l'invite, même dans une fenêtre contextuelle de 70 000 octets. Les auteurs ont également testé MInference sur une tâche de modèle de langage utilisant PG-19, qui comprenait jusqu'à 100 000 jetons.Comme le montre la figure 2, MInference maintient efficacement la perplexité de LLaMA-3-8B et Yi-9B-200K, tandis que toutes les lignes de base montrent divers degrés de dégradation de la perplexité. De plus, StreamingLLM utilisant des configurations de dilatation et de foulée maintient mieux les performances de perplexité par rapport au StreamingLLM standard. Latence et mode clairsemé dans le noyau La figure 3 montre les trois modes d'attention proposés dans cet article et les résultats du micro-benchmark de FlashAttention. On peut voir que Vertical-Slash est le plus lent des trois modes, mais sous une fenêtre contextuelle de 1 M, il atteint toujours une accélération 13x par rapport à FlashAttention. La figure 4 montre l'index clairsemé dans le noyau d'en-tête Vertical-Slash. Les lignes verticales sont calculées à l'aide de blocs 1x64 via PIT FlashAttention, tandis que les lignes diagonales sont calculées à l'aide de blocs 64x64 via FlashAttention au niveau du bloc. Lien de référence : https://hqjiang.com/minference.htmlCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!