1 points par GN⁺ 2024-10-09 | 1 commentaires | Partager sur WhatsApp
  • Même si le Transformer decoder-only est devenu l’architecture standard des LLM, dans les longs contextes, il manque des informations essentielles et répartit son attention sur des tokens non pertinents ; ce bruit d’attention perturbe les performances
  • La differential attention divise les queries et les keys en deux groupes, crée deux cartes d’attention softmax, puis soustrait la seconde carte, pondérée par un λ apprenable, pour calculer le score d’attention final
  • DIFF Transformer a obtenu de meilleurs résultats que Transformer dans des expériences augmentant la taille du modèle, le nombre de tokens d’entraînement et la longueur de contexte ; pour des performances comparables, il ne nécessite qu’environ 65 % de la taille de modèle ou des tokens d’entraînement
  • Il montre des avantages pour la modélisation de longs contextes, la recherche d’informations clés, la réduction des hallucinations, l’in-context learning, le raisonnement mathématique et la diminution des activation outliers ; en QA et en résumé, l’influence des contextes non pertinents est réduite
  • Comme la disposition globale reste identique à celle de Transformer et que seule l’attention softmax est remplacée, il est possible d’aligner le nombre de paramètres et le coût de calcul, tout en réutilisant FlashAttention

Le problème du bruit d’attention dans Transformer

  • Le Transformer decoder-only est l’architecture de facto des LLM, et son cœur repose sur un mécanisme d’attention qui pondère par softmax l’importance des tokens dans une séquence
  • Les LLM ont du mal à identifier précisément les informations essentielles dans le contexte, surtout lorsque celui-ci contient beaucoup d’éléments non pertinents, ce qui tend à noyer les indices menant à la bonne réponse
  • Dans un exemple où il faut retrouver une réponse insérée au milieu d’un ensemble de documents, Transformer a tendance à attribuer un faible score d’attention à la réponse et des scores excessifs au contexte non pertinent
  • Ces scores d’attention non négligeables attribués à du contexte non pertinent agissent comme un bruit d’attention
  • L’exemple Multi-Needle Retrieval de la Figure 1 indique des précisions de 55 % et 85 % respectivement pour Transformer et Differential Transformer

Fonctionnement de la differential attention

  • DIFF Transformer est une architecture de base pour le sequence modeling et les LLM ; elle conserve la macro-disposition du Transformer existant et remplace l’attention softmax classique par la differential attention
  • À partir de l’entrée X, elle projette les queries, keys et values, mais divise les queries et les keys en deux groupes Q1, Q2, K1, K2, tandis que les values restent V
  • La sortie d’attention est calculée comme la différence entre deux cartes d’attention softmax
    • DiffAttn(X) = (softmax(Q1K1^T / √d) − λ softmax(Q2K2^T / √d))V
    • La structure élimine le bruit commun en soustrayant la seconde carte d’attention à la première
  • λ est un scalaire apprenable, reparamétré comme suit afin d’aligner la dynamique d’apprentissage
    • λ = exp(λq1 · λk1) − exp(λq2 · λk2) + λinit
    • Dans les expériences de base, λinit = 0.8 − 0.6 × exp(−0.3 · (l − 1)) est utilisé
    • L’utilisation d’un même λinit dans toutes les layers, par exemple 0.8, a aussi été examinée ; dans l’ablation, les performances se sont montrées relativement robustes aux différences de stratégie d’initialisation
  • Cette approche ressemble aux idées de l’amplificateur différentiel, qui supprime le common-mode noise par la différence entre deux signaux, et des casques à réduction de bruit
  • Naderi et al. démontrent que la differential attention rend la distribution spectrale de la matrice d’attention plus équilibrée et résout efficacement le rank collapse

Structure multi-head et architecture globale

  • La multi-head differential attention utilise des matrices de projection différentes pour chaque head, et partage le scalaire λ entre les heads au sein d’une même layer
  • La sortie de chaque head reçoit indépendamment une RMSNorm, puis est multipliée par (1 − λinit) ; les heads sont ensuite concaténés sur la dimension des canaux et passent par la projection de sortie WO
  • La notation GroupNorm de la Figure 2 souligne que la normalisation est appliquée indépendamment à chaque head
    • La differential attention a tendance à produire des patterns plus sparsifiés, ce qui rend les statistiques entre heads plus diverses
    • La normalisation par head améliore les statistiques de gradient en normalisant chaque head avant la concaténation
  • Une layer DIFF Transformer complète se compose de deux modules
    • MultiHead(LN(Xl)) + Xl
    • SwiGLU(LN(Yl)) + Yl
  • Structurellement, elle utilise pre-RMSNorm et SwiGLU, suivant les améliorations de la famille LLaMA

Efficacité et stabilité de l’entraînement

  • La differential attention peut réutiliser directement FlashAttention, ce qui permet d’améliorer fortement l’efficacité du modèle
  • Le nombre de heads est défini par h = dmodel / 2d, où d est la dimension de head de Transformer
  • Ce réglage vise à aligner avec Transformer le nombre de paramètres et la complexité de calcul
  • Après la normalisation des heads, un multiplicateur fixe (1 − λinit) est utilisé pour aligner le flux de gradients sur celui de Transformer
  • L’Appendix G montre que le flux de gradients global reste similaire à celui de Transformer, ce qui permet de réutiliser des hyperparamètres proches et d’assurer la stabilité de l’entraînement

Résultats expérimentaux et effets applicatifs

  • Les expériences de modélisation du langage font passer DIFF Transformer à l’échelle en augmentant le nombre de paramètres, les tokens d’entraînement et la longueur de contexte
  • Sur la scaling curve, DIFF Transformer n’a besoin que d’environ 65 % de la taille de modèle ou des tokens d’entraînement pour atteindre des performances de modélisation du langage comparables à celles de Transformer
  • Il a également surpassé Transformer sur les downstream tasks et, dans les évaluations long-sequence, exploite efficacement le contexte à mesure qu’il s’allonge
  • Pour la recherche d’informations clés, il présente un pattern attribuant un score d’attention plus élevé au span de réponse et un score plus faible au contexte non pertinent
  • En QA et en text summarization, il se laisse moins distraire par le contexte non pertinent, ce qui atténue les hallucinations
  • En in-context learning, il améliore la précision tout en étant plus robuste à l’order permutation, considérée comme un problème chronique de robustesse
  • La réduction des activation outliers ouvre de nouvelles possibilités pour la quantization

1 commentaires

 
GN⁺ 2024-10-09
Avis de Hacker News
  • J’ai l’impression qu’on passe à côté de l’intuition essentielle ici. On comprend le problème selon lequel l’attention softmax classique a du mal à attribuer une attention proche de 0 à ce qui n’est pas pertinent, et on comprend aussi qu’avec une structure de soustraction, on peut produire des poids d’attention exactement, ou presque, nuls sans valeurs d’activation aberrantes.
    Cela dit, cette structure semble aussi pouvoir produire facilement des poids d’attention négatifs, ce qui revient, semble-t-il, à attribuer une attention positive à la négation du vecteur de valeurs. Intuitivement, il paraît difficile de maintenir tout ce qui n’intéresse pas le modèle près de 0 de manière équilibrée. La Figure 1 montre toutefois que cela fonctionne bien, donc je ne doute pas du potentiel, mais je n’arrive pas bien à me représenter comment le réseau y parvient concrètement.

    • Il y a une erreur dans le softmax et l’attention classiques. Le softmax devrait être exp()/1+∑exp()
      Le point essentiel est l’ajout de 1 au dénominateur. À la limite négative, le softmax peut devenir 0, et non pas un epsilon quelconque. Ajouter une valeur 0 supplémentaire à x peut produire le même effet. L’inconvénient est que pour corriger cela, il faut réentraîner le modèle depuis le début.
    • Le fait d’autoriser des poids négatifs, au lieu de les faire passer par quelque chose comme ReLU, donne un peu l’impression de gêner le modèle. Mais ce traitement pourrait être plus facile qu’on ne le pense pour le modèle.
      Si l’on regarde la première figure de poids d’attention, il y a effectivement des scores négatifs dans les zones de bruit. Malgré cela, l’attention portée à cette zone est de toute façon très faible. La seconde carte d’attention n’a qu’à prédire le bruit de la première, et comme elle a un accès complet à la première entrée, c’est une tâche qu’elle peut accomplir assez précisément.
      Pour reprendre l’analogie du papier avec le monde réel, les casques à réduction de bruit ont accès, via leur micro, au son entendu par l’oreille, ce qui leur permet de produire un signal d’annulation précis. De la même manière, la seconde carte d’attention sait ce qui est donné en entrée à la première, et peut donc produire le signal d’annulation correspondant. Ce n’est pas parfait, mais les casques à réduction de bruit ne le sont pas non plus, et ils atteignent tout de même environ 99 %, ce qui suffit à améliorer les performances.
    • Intuitivement, il me semble très facile pour le modèle d’optimiser lambda à 0 pendant l’entraînement. Il devient alors, en pratique, un Transformer classique auquel on aurait ajouté un dispositif de pruning de paramètres excessivement complexe.
      Le pruning est déjà assez bien établi dans la littérature comme méthode permettant de réduire étonnamment bien le nombre de paramètres, jusqu’à environ 40 %. Le modèle réel ne fonctionne probablement pas exactement ainsi, mais il ne serait pas surprenant qu’il finisse par approximer un Transformer ordinaire.
    • Les valeurs négatives peuvent accroître l’expressivité.
  • Très astucieux. J’aime ce genre de travail minutieux, et le changement est suffisamment limité pour que d’autres puissent l’appliquer facilement. Excellent.
    Cela dit, la dernière phrase de l’introduction de la section « 2 Differential Transformer » m’inquiète un peu. Ils disent utiliser des améliorations issues d’articles précédents, mais le contexte grammatical ne permet pas de savoir clairement si ces améliorations ont été appliquées à la fois au Transformer classique et au diff Transformer. Si ce n’est pas le cas, la comparaison devient floue. L’expression « main difference » dans la phrase juste avant a déclenché un signal d’alerte chez moi.
    Bien sûr, des chercheurs de bonne foi en sont peut-être conscients et n’ont pas jugé nécessaire de le préciser. Mais dans une partie des publications de ce domaine, on n’est jamais trop prudent.

    • Oui. Ça a vraiment l’air très bon. On observe globalement une amélioration de la perplexity en fonction du temps d’entraînement, par token d’entraînement et par taille de modèle.
      Cela me fait penser aux architectures MoE, où l’on choisit le meilleur petit modèle pour traiter une partie ou la totalité de la tâche d’inférence. Je me demande si les MoE ont obtenu des gains similaires parce que le Transformer est forcé de distinguer plusieurs possibilités alternatives.
      Quoi qu’il en soit, si les chiffres se maintiennent, cela devrait être largement adopté. Comme dit plus haut, il ne semble pratiquement pas y avoir d’inconvénient, et cela paraît facile à reproduire.
    • Les deux autres changements qu’ils mentionnent sont déjà largement adoptés et figurent aussi dans certains des modèles utilisés comme points de comparaison. Il me semble qu’ils les ont simplement listés par souci d’exhaustivité parmi les changements par rapport à l’architecture Transformer d’origine.
  • Comme souvent dans ce nouveau monde du machine learning, je trouve vraiment déroutant de comprendre pourquoi cela fonctionne
    L’analogie avec les casques antibruit aide, mais dans ce cas on sait clairement ce qui est le signal et ce qui est le bruit. Si on le savait aussi ici, je ne vois pas pourquoi il faudrait faire de la suppression de bruit dès le départ

    • Un softmax unique ne peut pas prédire exactement 0, seulement des nombres très petits. Quand il y a beaucoup de valeurs à additionner, ces petites valeurs injectent dans la sortie beaucoup d’éléments sans rapport, la contaminant par ce que l’article appelle du bruit
      Pire encore, le gradient des faibles valeurs d’attention devient très petit, si bien qu’il faut de nombreuses mises à jour des poids pour corriger ce genre d’erreur. En revanche, si l’on soustrait les sorties de deux softmax, le modèle peut prédire des poids exactement nuls pour certaines valeurs, tout en conservant un flux de gradient raisonnable
      Autrement dit, le modèle sait déjà ce qui est du bruit, mais un softmax unique rend son exclusion difficile. De plus, avec un softmax unique, la sortie de chaque tête est contrainte de rester dans l’enveloppe convexe des vecteurs de valeurs, alors qu’avec cette variante chaque tête peut choisir son propre lambda et déplacer sa plage de sortie en dehors de l’enveloppe convexe prédéfinie par les valeurs. Cela accroît donc l’expressivité globale du modèle
    • Les casques antibruit sont probablement une mauvaise analogie ici
      Un meilleur exemple serait le signal différentiel utilisé en audio professionnelle et dans de nombreux protocoles de signaux numériques comme Ethernet, HDMI ou USB. Au lieu d’utiliser un seul fil référencé à la masse, le signal est transmis comme une différence entre deux fils. Les deux fils transportent le même signal avec des polarités opposées et passent côte à côte, si bien que le bruit externe s’applique de la même manière aux deux
      Les tensions peuvent varier, mais la différence de tension entre les deux fils reste inchangée. À la réception, lorsqu’on soustrait les deux tensions, le bruit s’annule tout simplement
    • Plutôt que de chercher une analogie, on peut simplement voir cela comme l’ajout d’une nouvelle capacité mathématique. Cela rend possible une attention négative, permettant au réseau de dire dans le calcul d’attention : « je veux soustraire la contribution de ce token ». Auparavant, il ne pouvait que réduire la quantité à ajouter
      Une façon simple de faire cela serait de supprimer le softmax ou d’utiliser une sigmoid, mais en pratique le softmax semble mieux fonctionner
    • Une hypothèse sur la raison pour laquelle cela fonctionne est que cela atténue un défaut de RoPE
      Pour simplifier, RoPE est une stratégie moderne qui donne au modèle, lors de l’attention, des informations sur la distance entre la requête et la clé. C’est la meilleure stratégie disponible à l’heure actuelle, mais elle a un gros défaut : elle rend certaines connexions entre tokens éloignés beaucoup plus fortes qu’on ne le souhaiterait. Xpos (https://arxiv.org/pdf/2212.10554) est également un article de Microsoft traitant des problèmes de RoPE ; la Figure 1 en page 4 donne une interprétation visuelle de l’intensité de l’attention sous forme de sinusoïde. À l’origine, on voudrait quelque chose de lisse
      À mon avis, l’une des principales raisons pour lesquelles le Differential Transformer fonctionne particulièrement bien sur de longues séquences est que, même lorsque q1 et q2 ne correspondent pas à un token donné, l’intensité relative de RoPE prend la même valeur, ce qui annule le bruit. Seules les correspondances voulues restent, au prix toutefois d’un certain affaiblissement des valeurs que RoPE apportait initialement
      Bien sûr, ce n’est qu’une hypothèse. On pourrait la vérifier facilement en comparant les deux avec une baseline utilisant alibi attention (https://arxiv.org/pdf/2108.12409). alibi implique d’autres compromis que cette méthode ne saura pas atténuer, mais le résultat n’en reste pas moins vraiment intéressant
    • Une partie des travaux antérieurs ici est liée aux ladder networks et, de manière un peu plus approximative, aux residual nets. Les deux peuvent être interprétés comme une façon d’entraîner le modèle à réduire l’erreur des prédictions précédentes plutôt qu’à prédire directement le résultat final
      L’intuition expliquant pourquoi cela fonctionne semble être que cela rend le paysage de descente de gradient un peu plus favorable, donc plus facile à apprendre par petites étapes. Le réseau lui-même est désormais explicitement conçu autour de l’idée qu’il fait au départ beaucoup d’erreurs dans ses prédictions, puis s’améliore au fil du temps
  • Si j’ai bien compris « Differential attention takes the difference between two softmax attention functions to eliminate attention noise », cette architecture semble être un compromis : utiliser deux fois plus de mémoire d’attention en échange d’un modèle de meilleure qualité, ou d’une qualité similaire avec moins de paramètres
    Le passage « 6.8B-size DIFF Transformer achieves a validation loss comparable to 11B-size Transformer, requiring only 62.2% of parameters » soulève plusieurs questions. Si le modèle n’a que 60 % des paramètres, est-ce que cela compense le doublement de l’espace d’attention et aboutit à des caractéristiques mémoire proches de celles d’un Transformer classique ? Et ce compromis diffère-t-il sensiblement entre l’entraînement et l’inférence ?

    • J’ai compris que les paramètres supplémentaires nécessaires au second mécanisme d’attention sont eux aussi inclus dans ces 6,8B paramètres. Autrement dit, il s’agit du nombre total de paramètres du modèle, et non d’un nombre hypothétique de paramètres qu’aurait eu un Transformer standard. Le résultat est donc deux fois plus impressionnant
      L’article indique : « We set the number of heads h = dmodel/2d, where d is equal to the head dimension of Transformer. So we can align the parameter counts and computational complexity. » En d’autres termes, ils compensent en réduisant de moitié le nombre de têtes d’attention par couche
    • Il semble qu’ils aient réduit de moitié le nombre total de têtes et doublé V et O pour atténuer le surcoût en mémoire et en calcul. Je n’ai pas vérifié les calculs exacts, mais en excluant les opérations peu coûteuses comme les multiplications par des constantes et les soustractions, le nombre d’opérations en virgule flottante devrait être équivalent
    • L’économie de RAM semble être annulée, mais cela peut réduire l’espace nécessaire au stockage et, selon la vitesse du stockage et la taille du modèle, aussi réduire le temps de démarrage initial. Cela peut donc être intéressant pour des modèles bas de gamme sur des appareils grand public
    • La taille du cache KV double, et avec de grandes tailles de contexte cela peut représenter plusieurs Go
  • Je me demande quelle histoire il y a derrière la formule « We empirically find that the setting λᵢₙᵢₜ = 0.8 − 0.6 × exp(−0.3 · (l − 1)) works well in practice »

    • 0,8 marche bien, mais essayons une valeur initiale plus basse pour les couches inférieures. Mettons autour de 0,2. OK, il nous faut une formule qui oscille entre 0,2 et 0,8 et s’approche lentement de 0,8. J’ai l’impression qu’ils ont bidouillé les chiffres pendant 20 minutes avant de se dire que ça ferait l’affaire
    • Beaucoup de choses sont vraiment optimisées en tournant des boutons analogiques, en essayant ou en écoutant, jusqu’à ce que ça semble correct
    • Cette formule semble, au moins au début de l’entraînement, rendre le terme d’attention négatif plus faible dans les couches avant, c’est-à-dire pour les petits l, que dans les couches arrière. C’est plausible. Avant de conclure qu’il y a quelques positions spécifiques à regarder, on a sans doute envie d’accorder un peu d’attention à tout
      Cela dit, il ne semble pas que les auteurs discutent séparément ce choix dans l’article
  • Le point essentiel que je n’avais pas compris au début était : que se passe-t-il si les deux groupes d’attention apprennent la même chose ? Comme les masques d’attention sont soustraits l’un à l’autre, si les deux produisent des valeurs similaires, l’attention totale tombe à 0 et la perte augmente
    Donc la seule façon de réduire la perte est d’apprendre à prêter attention à des choses différentes. L’une des stratégies les plus simples qu’ils peuvent apprendre est, comme l’affirme l’article, qu’un groupe se concentre sur le contexte pertinent et l’autre sur le contexte non pertinent. Ainsi, un groupe apprend le bruit et l’autre le signal. En pratique, ce n’est pas aussi tranché, mais c’est une simplification utile pour comprendre

    • Ce qui est intéressant, ce n’est pas la simple soustraction, mais le fait de ne soustraire qu’une partie du second softmax
      Si les deux copies sont identiques, les sorties du softmax le sont aussi, donc la différence vaut 0 partout, ce qui se tient. Mais si l’on soustrait une copie mise à l’échelle, le processus de normalisation de la différence semble faire davantage ressortir les valeurs de signal par rapport au bruit qu’avant la normalisation
    • À propos de ce qui se passe si les deux groupes d’attention apprennent la même chose, je me demande s’il existe une analogie avec notre propre expérience de la surprise et son utilité
      Si une tête d’attention est surprise par ce qu’une autre tête a appris, elle augmente le poids ; si les deux trouvent la même chose, elle considère que ce n’est pas très surprenant et baisse le poids
      Je l’admets, la « surprise » occupe une place assez importante dans ma base de connaissances[1][2][3]. Comme sentiment subjectif et fonction adaptative de l’esprit, c’est l’un des systèmes adaptatifs les plus complexes que nous connaissions
      [1] https://plus.maths.org/content/information-surprise
      [2] https://blakeelias.name/papers/Multi-Agent-Cooperation-Intri...
      [3] https://complexity.simplecast.com/episodes/81/transcript
    • Il existe peut-être une petite possibilité que les deux apprennent la même chose, mais elle ne semble pas assez probable pour devenir un problème majeur
    • La fonction de perte ne pourrait-elle pas aussi pénaliser le fait que les deux apprennent la même chose ?
  • Je me demande ce qu’on perd ici. Il doit forcément y avoir un compromis
    Je me demande aussi si cela affecte la créativité ou la capacité à interpoler entre des concepts. Les hallucinations et la créativité semblent assez liées. Je comprends les hallucinations comme quelque chose qui dévie de l’espace d’interpolation que les humains jugent approprié

    • Je ne vois pas pourquoi les hallucinations et la créativité sembleraient liées. Pour moi, c’est simplement une erreur d’échantillonnage
      Bien sûr, une erreur peut parfois inspirer, mais la créativité est bien plus que des erreurs
      Ces modèles de langage sont des prédicteurs du prochain token. Le prochain token est prédit en l’échantillonnant dans l’espace de probabilités produit par le modèle. Ce processus d’échantillonnage peut être non déterministe
      Une hallucination survient lorsque cet échantillonnage produit des tokens qui forment une phrase fausse ou non voulue. On pourrait aussi considérer que tout ce que le modèle produit est une hallucination, mais nous l’entraînons à produire un espace où la probabilité d’halluciner ce que nous voulons est plus élevée. Sinon, il ne sortirait que du bruit dénué de sens
      « Hallucination » est un très mauvais mot pour décrire ce qu’il est censé expliquer
    • L’un des compromis concerne la vitesse et la mémoire. Comme le bloc d’attention a deux fois plus de poids Q et K, le débit a diminué d’environ 10 % sur leurs H100. C’est dans le tableau 7 de l’annexe A
    • Toutes les hallucinations ne sont pas de la créativité. Imaginez une application RAG : le modèle doit suivre les documents fournis
  • Je me demande quelle part de la valeur ici vient de l’annulation du bruit positionnel créé par RoPE. J’aimerais voir non seulement les modèles RoPE ici, mais aussi un tableau comparant une version alibi et une baseline alibi
    Cela reste une amélioration énorme, et félicitations aux chercheurs

  • Est-ce que ce qui se passe ici, c’est que le softmax ne peut pas pousser les valeurs à 0, mais qu’en soustrayant deux cartes de softmax on peut produire une sortie à 0 ?

    • La question suivante est : la probabilité de produire 0 n’est-elle pas extrêmement faible ?
    • Ou bien des valeurs négatives sont aussi possibles
  • C’est un bon problème à résoudre, mais je pense que l’approche est mauvaise
    Pour savoir à quoi on a prêté attention et connaître tout le contexte, il faut procéder de manière hiérarchique. Si le vecteur différentiel est calculé à partir des mêmes entrées que le vecteur d’attention, je ne vois pas comment il pourrait savoir comment corriger correctement le vecteur d’attention

    • Au bout du compte, tout n’est-il pas ajusté proportionnellement à la direction indiquée par les dérivées de la rétropropagation et à leur gradient ? Autrement dit, tant que le système de rétropropagation fonctionne, il ne devrait pas y avoir de problème pour savoir dans quelle direction ajuster les poids