Maison > Périphériques technologiques > IA > Deepseek-V3 expliquée 1: Attention latente multi-tête

Deepseek-V3 expliquée 1: Attention latente multi-tête

PHPz
Libérer: 2025-02-26 03:00:17
original
631 Les gens l'ont consulté

Deepseek-V3 Explication détaillée Série d'articles: Mécanisme d'attention potentiel des taureaux (MLA)

Cet article est le premier article de la série "Explication détaillée de Deepseek-V3".

Cette série d'articles couvrira deux sujets principaux:

  • Les principales innovations architecturales de Deepseek-V3 incluent MLA (Bulner Potential Attention) [3], Deepseekmoe [4], l'équilibrage de la charge sans perte auxiliaire [5] et une formation de prédiction multi-marquée.
  • Processus de formation Deepseek-V3, y compris les phases d'alignement d'apprentissage pré-formation, de réglage fin et de renforcement.

Cet article se concentre principalement sur le mécanisme d'attention potentiel multi-tête (MLA) , qui a été initialement proposé dans le développement de Deepseek-V2 et a été appliqué dans Deepseek-V3.

Catalogue:

  • CONTEXTE: Nous allons commencer par le MHA standard et expliquer pourquoi le cache de valeur clé est nécessaire pendant la phase d'inférence, comment MQA et GQA essaient de l'optimiser et comment fonctionne la corde, etc.
  • Mécanisme de potentiel d'attention (MLA): Introduction approfondie au MLA, y compris ses motivations, pourquoi il doit découpler la corde et ses performances.
  • références.
arrière-plan

Pour mieux comprendre le MLA et faire cet article un en un, nous passerons en revue plusieurs concepts connexes dans cette section avant de plonger dans les détails de MLA.

MHA dans le transformateur de décodeur

Notez que MLA est développé pour accélérer l'inférence de la génération de texte autorégressive, donc le MHA discuté dans ce contexte est pour le transformateur uniquement du décodeur.

La figure suivante compare trois architectures de transformateur pour le décodage, où (a) montre le codeur et le décodeur proposés dans le papier "l'attention de l'attention est tout ce dont vous avez besoin". La partie de décodeur est ensuite simplifiée par [6] pour obtenir le modèle de transformateur uniquement du décodeur indiqué dans (b), qui a été utilisé plus tard par de nombreux modèles génératifs tels que GPT [8].

Aujourd'hui, les grands modèles de langage choisissent le plus souvent la structure indiquée en (C) pour une formation plus stable, appliquez une normalisation sur les entrées plutôt que sur les sorties, et améliorez la norme Layernor à RMS. Cela servira d'architecture de base dont nous discutons dans cet article.

Dans ce contexte, les calculs MHA suivent largement le processus dans [6], comme le montre la figure ci-dessous: DeepSeek-V3 Explained 1: Multi-head Latent Attention

Supposons que nous ayons DeepSeek-V3 Explained 1: Multi-head Latent Attention n_h têtes d'attention, et la dimension de chaque tête d'attention est exprimée comme d_h , donc la dimension connectée sera ( h_n · d_h ).

pour les modèles avec

l calque, si nous représentons l'entrée de la balise T-th dans cette couche comme h_t avec une dimension de d , puis Nous devons utiliser une matrice de mappage linéaire pour cartographier les dimensions de h_t de d à ( h_n · d_h ).

Plus formellement, nous avons (Eq de [3]):

DeepSeek-V3 Explained 1: Multi-head Latent Attention w ^ q , w ^ k et w ^ v sont des matrices de cartographie linéaires:

Après cartographie, divisez le

q_t DeepSeek-V3 Explained 1: Multi-head Latent Attention, k_t et v_t dans n_h t pour calculer le produit à points proportionnel.

w ^ o

est une autre matrice de projection utilisée pour cartographier les dimensions inversement de (DeepSeek-V3 Explained 1: Multi-head Latent Attention h_n · d_h ) à d : Notez que les procédures décrites ci-dessus dans l'équation (1) à (8) ne sont que pour un seul marqueur. Pendant le processus de raisonnement, nous devons répéter ce processus pour chaque balisage nouvellement généré, qui implique de nombreux calculs répétés. Cela conduit à une technique appelée mise en cache de valeur clé.

cache de valeur clé DeepSeek-V3 Explained 1: Multi-head Latent Attention

Comme son nom l'indique, la mise en cache des valeurs clés est une technique conçue pour accélérer le processus d'autorégression en mettant en cache et en réutilisant les clés et valeurs précédentes, plutôt que de les recalculer à chaque étape de décodage.

Notez que le cache KV n'est généralement utilisé que dans la phase d'inférence, car pendant la formation, nous devons encore traiter la séquence d'entrée entière en parallèle.

Le cache

KV est généralement implémenté en tant que tampon de roulement. Dans chaque étape de décodage, seule la nouvelle requête Q est calculée, et les K et V stockés dans le cache seront réutilisés afin de calculer l'attention en utilisant le nouveau Q et Resseuched K et V. Dans le même temps, les nouveaux taggés K et V seront également ajoutés au cache pour une utilisation ultérieure.

Cependant, l'accélération apportée par le cache de valeur clé se fait au prix de la mémoire, car les caches de valeur clé varient généralement avec

Taille du lot × longueur de séquence × taille cachée × nombre de têtes

Lorsque nous avons plus grand cela Peut provoquer des goulots d'étranglement de mémoire lorsque la taille ou la séquence du lot est plus longue.

Cela conduit en outre à deux techniques conçues pour aborder cette limitation: l'attention multi-remerge et l'attention de la requête en groupe.

Attention à requête multiple (MQA) par rapport à l'attention de groupe (GQA)

La figure suivante montre la comparaison entre le MHA d'origine, l'attention de la requête groupée (GQA) [10] et l'attention multi-remery (MQA) [9].

L'idée de base de la MQA est de partager des clés uniques et des en-têtes à valeur unique dans tous les en-têtes de requête, ce qui peut réduire considérablement l'utilisation de la mémoire mais affectera également la précision de l'attention.

GQA peut être considéré comme une méthode d'interpolation entre MHA et MQA, où une seule paire de clés et d'en-têtes de valeur sera partagée par un seul ensemble d'en-têtes de requête, pas toutes les requêtes. Mais cela conduira toujours à des résultats pires que MHA. DeepSeek-V3 Explained 1: Multi-head Latent Attention

Dans les chapitres ultérieurs, nous verrons comment MLA parvient à équilibrer l'efficacité de la mémoire et la précision de la modélisation.

corde (position rotative intégrée)

Le dernier fond que nous devons mentionner est la corde [11], qui code directement sur la position dans le mécanisme d'attention en faisant tourner la requête et les vecteurs clés dans l'attention multi-tête à l'aide d'une fonction sinusoïdale.

Plus précisément, Rope applique la matrice de rotation dépendante de la position à la requête et au vecteur clé de chaque balise et utilise les fonctions sinus et cosinus comme base, mais les applique d'une manière unique pour implémenter Rotate.

Pour comprendre ce qui rend la position dépendante de la position, considérez un vecteur d'intégration de jouets avec seulement 4 éléments, c'est-à-dire (x_1, x_2, x_3, x_4).

Pour appliquer une corde, nous regroupons d'abord les dimensions continues en paires:

    (x_1, x_2) - & gt;
  • (x_3, x_4) - & gt;
  • Ensuite, nous appliquons la matrice de rotation pour faire tourner chaque paire:

où θ = θ (p) = p ⋅ θ_0, et θ_0 est la fréquence fondamentale

. Dans notre exemple de jouet 4D, cela signifie (x_1, x_2) tournera θ_0, tandis que (x_3, x_4) fera tourner 2 ⋅ θ_0.

DeepSeek-V3 Explained 1: Multi-head Latent Attention C'est pourquoi nous appelons cette matrice de rotation liée à la position : À chaque position (ou chaque paire), nous appliquerons une matrice de rotation différente où l'angle de rotation est déterminé par la position.

La corde

est largement utilisée dans les modèles modernes de grande langue en raison de son efficacité dans le codage de longues séquences, mais comme nous pouvons le voir à partir de la formule ci-dessus, il a une sensibilité positionnelle à la fois Q et K, ce qui le rend dans certains aspects incompatibles avec MLA. Mécanisme d'attention potentiel des Bules

Enfin, nous pouvons continuer à discuter de la section MLA. Dans cette section, nous élaborerons d'abord les idées avancées de MLA, puis plongerons pourquoi elle nécessite une modification de la corde. Enfin, nous présenterons également les algorithmes détaillés et leurs performances de MLA.

MLA: pensées avancées

L'idée de base de MLA est de compresser l'attention de l'attention

h_t

dans un vecteur laté de faible dimension dont la dimension est

d_c

, où d_c est beaucoup plus petit que l'original ( h_n · d_h ). Plus tard, lorsque nous devons calculer l'attention, nous pouvons ramener ce vecteur latent à un espace de haute dimension pour restaurer les clés et les valeurs. Par conséquent, seul le vecteur potentiel doit être stocké, réduisant ainsi considérablement l'utilisation de la mémoire. Ce processus peut être décrit plus formellement avec l'équation suivante, où c ^ {kv} _t est le vecteur latent, et

w ^ {dkv}

est à H_T est mappée de ( h_n · d_h ) à la matrice de compression de d_c (D dans l'expositement représente ici "la projection de réduction de la dimensionnalité de dimensionnalité ", ce qui signifie la compression, et w ^ {uk} et w ^ {uv} sont tous deux des matrices de projection supérieures que la carte partageait les vecteurs latents à un espace de haute dimension. De même, nous pouvons mapper la requête à un vecteur potentiel de basse dimension, puis le ramener à l'espace de haute dimension d'origine:

DeepSeek-V3 Explained 1: Multi-head Latent Attention ### Pourquoi avez-vous besoin de découpler la corde

Comme mentionné précédemment, la corde est un choix courant pour la formation de modèles génératifs pour gérer de longues séquences. Si nous appliquons directement la politique MLA ci-dessus, cela sera incompatible avec la corde.

Pour voir cela plus clairement, considérons ce qui se passe lorsque nous calculons l'attention en utilisant l'équation. La matrice w ^ q et w ^ {uk} apparaîtra au milieu, et leur combinaison est équivalente à d_c à d un seul Dimension de cartographie pour . Dans l'article d'origine [3], l'auteur le décrit comme w ^ {uk} qui peut être absorbé par "

" dans

w ^ q , par conséquent, Nous n'avons pas besoin de stocker w ^ {uk} dans le cache, réduisant ainsi davantage l'utilisation de la mémoire. Cependant, ce n'est pas le cas lorsque nous considérons la matrice de rotation de la figure (4), car la corde appliquera la matrice de rotation à gauche de w ^ {uk} et cette matrice de rotation finira par être Situé entre w ^ q

et

w ^ {uk} transposé. Comme nous l'avons expliqué dans la section d'arrière-plan, cette matrice de rotation dépend de la position, ce qui signifie que la matrice de rotation pour chaque position est différente. Par conséquent, w ^ {uk} ** ne peut pas être absorbé par w ^ q **

******************** **************************************************** être absorbé plus par

w ^ q ** . Pour résoudre ce conflit, les auteurs ont proposé ce qu'ils ont appelé " Corde découplée

", en introduisant des vecteurs de requête supplémentaires ainsi que des vecteurs clés partagés, et en utilisant ces vecteurs supplémentaires uniquement dans le processus de corde, au niveau du En même temps, garder les touches d'origine isolément de la matrice de rotation dans une certaine mesure.

L'ensemble du processus MLA peut être résumé comme suit (le numéro d'équation est réutilisé à partir de l'annexe C de [3]):

eqn.

DeepSeek-V3 Explained 1: Multi-head Latent Attention eqn.

    eqn.
  • eqn.
  • Dans ce processus, il vous suffit de mettre en cache les variables bleues avec des boîtes. Ce processus peut s'expliquer plus clairement en utilisant le flux de l'organigramme suivant:
  • ### Performance de mla
  • Le tableau suivant compare le nombre d'éléments requis pour le cache KV (par étiquette) et les capacités de modélisation entre MHA, GQA, MQA et MLA, ce qui montre que le MLA peut en effet réaliser mieux entre l'efficacité de la mémoire et les capacités de modélisation.

Fait intéressant, les capacités de modélisation de MLA dépassent même celles du MHA d'origine.

DeepSeek-V3 Explained 1: Multi-head Latent Attention Plus précisément, le tableau suivant montre les performances de MHA, GQA et MQA sur le modèle 7B, où MHA a des performances nettement meilleures que MQA et GQA.

Les auteurs de

DeepSeek-V3 Explained 1: Multi-head Latent Attention [3] ont également analysé MHA et MLA, et les résultats sont résumés dans le tableau ci-dessous, où MLA a obtenu de meilleurs résultats dans l'ensemble.

DeepSeek-V3 Explained 1: Multi-head Latent Attention références

  • [1] Deepseek
  • [2] Rapport technique Deepseek-V3
  • [3] Deepseek-V2: un modèle de langue experte hybride puissant et rentable
  • [4] Deepseekmoe: vers la spécialisation d'experts finaux dans le modèle de langue experte hybride
  • [5] Stratégie d'équilibrage de la charge de perte sans aide pour le modèle d'experts hybrides
  • [6] L'attention est tout ce dont vous avez besoin
  • [7] Générez Wikipedia en résumant les séquences longues
  • [8] Améliorez la compréhension du langage par la pré-formation générative
  • [9] Décodage du transformateur rapide: une tête d'écriture est suffisante
  • [10] GQA: Formation d'un modèle de transformateur multi-Quey généralisé à partir d'un point de contrôle multi-têtes
  • [11] Roformer: transformateur amélioré avec position rotative incorpore

Ce 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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal