{"notes":[{"id":"mamba/mamba-2","category":"mamba","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"Mamba-2","subtitle":"Le cousin éloigné de l'attention","author":"Z. Yuan","paperDate":"2024-05-31","publishedOn":"2025-12-06","world":"external/mamba2","paperTitle":"Transformers are SSMs: Generalized Models and Efficient Algorithms Through Structured State Space Duality","paperUrl":"https://arxiv.org/abs/2405.21060","bibliography":{"title":"Transformers are SSMs: Generalized Models and Efficient Algorithms Through Structured State Space Duality","authors":["Tri Dao","Albert Gu"],"url":"https://arxiv.org/abs/2405.21060","pdfUrl":"https://arxiv.org/pdf/2405.21060v1","codeUrl":"https://github.com/state-spaces/mamba","preprint":{"id":"2405.21060","submittedOn":"2024-05-31","url":"https://arxiv.org/abs/2405.21060"},"publication":{"venue":"ICML","year":2024,"kind":"conference","url":"https://proceedings.mlr.press/v235/dao24a.html"},"citation":"@misc{mambamamba22024,\n  title = {{Transformers are SSMs: Generalized Models and Efficient Algorithms Through Structured State Space Duality}},\n  author = {Tri Dao and Albert Gu},\n  year = {2024},\n  eprint = {2405.21060},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/2405.21060}\n}\n","citationPath":"/content/papers/citations/mamba/mamba-2.3152f9dfa9a1.bib"},"thumbnail":{"src":"/content/papers/assets/771f5c6bcb0b30ac06fac163812a3aa6aad0063df419f7ffd41bc60cef195e79.png","width":1462,"height":556},"locale":"fr","path":"/content/papers/fr/mamba/mamba-2.a6a083d80633.md","headings":[{"id":"définition-du-problème","text":"Définition du problème","depth":2},{"id":"résolution-du-problème","text":"Résolution du problème","depth":2},{"id":"écrire-le-ssm-comme-une-matrice","text":"Écrire le SSM comme une matrice","depth":3},{"id":"réduire-a-à-un-nombre","text":"Réduire A à un nombre","depth":3},{"id":"quatre-tokens-calculés-pas-à-pas","text":"Quatre tokens, calculés pas à pas","depth":3},{"id":"chaque-voie-fait-la-moitié-du-chemin","text":"Chaque voie fait la moitié du chemin","depth":3},{"id":"le-bloc-mamba-2","text":"Le bloc Mamba-2","depth":3},{"id":"discussion","text":"Discussion","depth":2},{"id":"plus-détat-plus-de-mémoire","text":"Plus d'état, plus de mémoire","depth":3},{"id":"modélisation-du-langage","text":"Modélisation du langage","depth":3},{"id":"les-auteurs-aussi-recommandent-lhybride","text":"Les auteurs aussi recommandent l'hybride","depth":3},{"id":"pas-une-amélioration-sur-tous-les-plans","text":"Pas une amélioration sur tous les plans","depth":3},{"id":"conclusion","text":"Conclusion","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"mamba/mamba","relation":"referenced","topic":""},{"id":"mamba/gated-deltanet","relation":"referenced","topic":""}]},{"id":"mamba/mamba","category":"mamba","legacyPath":"mamba/2312-mamba","legacySlug":"2312-mamba","legacyPaths":[],"title":"Mamba","subtitle":"Qui prendra la relève ?","author":"Z. Yuan","paperDate":"2023-12-01","publishedOn":"2024-12-25","paperTitle":"Mamba: Linear-Time Sequence Modeling with Selective State Spaces","paperUrl":"https://arxiv.org/abs/2312.00752","bibliography":{"title":"Mamba: Linear-Time Sequence Modeling with Selective State Spaces","authors":["Albert Gu","Tri Dao"],"url":"https://arxiv.org/abs/2312.00752","pdfUrl":"https://arxiv.org/pdf/2312.00752","codeUrl":null,"preprint":{"id":"2312.00752","submittedOn":"2023-12-01","url":"https://arxiv.org/abs/2312.00752"},"publication":null,"citation":"@misc{mambamamba2023,\n  title = {{Mamba: Linear-Time Sequence Modeling with Selective State Spaces}},\n  author = {Albert Gu and Tri Dao},\n  year = {2023},\n  eprint = {2312.00752},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/2312.00752}\n}\n","citationPath":"/content/papers/citations/mamba/mamba.5671f143cfd6.bib"},"thumbnail":{"src":"/content/papers/assets/8f6187d5a2a7a17c0687f2ca08ea302601584bb95f5cd5f52927c54d6e76089a.jpg","width":1224,"height":500},"locale":"fr","path":"/content/papers/fr/mamba/mamba.a4779c10efa6.md","headings":[{"id":"définition-du-problème","text":"Définition du problème","depth":2},{"id":"résolution-du-problème","text":"Résolution du problème","depth":2},{"id":"mécanisme-de-sélection","text":"Mécanisme de sélection","depth":3},{"id":"architecture-s6","text":"Architecture S6","depth":3},{"id":"architecture-mamba","text":"Architecture Mamba","depth":3},{"id":"retour-sur-la-sélection","text":"Retour sur la sélection","depth":3},{"id":"méthodes-et-protocole-dentraînement","text":"Méthodes et protocole d'entraînement","depth":3},{"id":"discussion","text":"Discussion","depth":2},{"id":"lois-de-mise-à-léchelle","text":"Lois de mise à l'échelle","depth":3},{"id":"comparaison-avec-dautres-modèles-de-langage","text":"Comparaison avec d'autres modèles de langage","depth":3},{"id":"comparaison-de-lefficacité-en-inférence","text":"Comparaison de l'efficacité en inférence","depth":3},{"id":"ablation--mécanisme-de-sélection","text":"Ablation : mécanisme de sélection","depth":3},{"id":"ablation--paramètres-décisifs","text":"Ablation : paramètres décisifs","depth":3},{"id":"ablation--autres-réglages","text":"Ablation : autres réglages","depth":3},{"id":"conclusion","text":"Conclusion","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"mamba/s4","relation":"background","topic":"De la mémoire d’état aux séquences visuelles"},{"id":"mamba/vim","relation":"next","topic":"De la mémoire d’état aux séquences visuelles"}]},{"id":"mamba/gated-deltanet","category":"mamba","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"Gated DeltaNet","subtitle":"Effacer avant d'écrire","author":"Z. Yuan","paperDate":"2024-12-09","publishedOn":"2026-02-12","world":"external/gated-deltanet","paperTitle":"Gated Delta Networks: Improving Mamba2 with Delta Rule","paperUrl":"https://arxiv.org/abs/2412.06464","bibliography":{"title":"Gated Delta Networks: Improving Mamba2 with Delta Rule","authors":["Songlin Yang","Jan Kautz","Ali Hatamizadeh"],"url":"https://arxiv.org/abs/2412.06464","pdfUrl":"https://arxiv.org/pdf/2412.06464v3","codeUrl":"https://github.com/NVlabs/GatedDeltaNet","preprint":{"id":"2412.06464","submittedOn":"2024-12-09","url":"https://arxiv.org/abs/2412.06464"},"publication":{"venue":"ICLR","year":2025,"kind":"conference","url":"https://mlanthology.org/iclr/2025/yang2025iclr-gated/"},"citation":"@misc{mambagateddeltanet2024,\n  title = {{Gated Delta Networks: Improving Mamba2 with Delta Rule}},\n  author = {Songlin Yang and Jan Kautz and Ali Hatamizadeh},\n  year = {2024},\n  eprint = {2412.06464},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/2412.06464}\n}\n","citationPath":"/content/papers/citations/mamba/gated-deltanet.b65d8f168c74.bib"},"thumbnail":{"src":"/content/papers/assets/ffdf63101911e19f771ec701520a03d60259e0007937a0626ccebb8bc77c0f15.png","width":1050,"height":544},"locale":"fr","path":"/content/papers/fr/mamba/gated-deltanet.73e4e48ef739.md","headings":[{"id":"définition-du-problème","text":"Définition du problème","depth":2},{"id":"lattention-linéaire-un-annuaire-où-les-numéros-se-télescopent","text":"L'attention linéaire, un annuaire où les numéros se télescopent","depth":3},{"id":"mamba-2-remise-générale","text":"Mamba-2 : remise générale","depth":3},{"id":"deltanet-ne-corriger-que-lentrée-visée","text":"DeltaNet : ne corriger que l'entrée visée","depth":3},{"id":"résolution-du-problème","text":"Résolution du problème","depth":2},{"id":"trois-règles-un-même-calcul","text":"Trois règles, un même calcul","depth":3},{"id":"réunir-les-deux","text":"Réunir les deux","depth":3},{"id":"rendre-lentraînement-parallèle","text":"Rendre l'entraînement parallèle","depth":3},{"id":"architecture-et-versions-hybrides","text":"Architecture et versions hybrides","depth":3},{"id":"discussion","text":"Discussion","depth":2},{"id":"protocole-expérimental","text":"Protocole expérimental","depth":3},{"id":"laiguille-dans-la-botte-de-foin-trois-règles-trois-rôles","text":"L'aiguille dans la botte de foin : trois règles, trois rôles","depth":3},{"id":"modélisation-du-langage-et-récupération-réelle","text":"Modélisation du langage et récupération réelle","depth":3},{"id":"vitesse","text":"Vitesse","depth":3},{"id":"conclusion","text":"Conclusion","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"mamba/mamba-2","relation":"referenced","topic":""},{"id":"mamba/kimi-linear","relation":"referenced","topic":""}]}],"text":"Le titre a quelque chose de provocateur : *Transformers are SSMs*.\n\nC'est en réalité un hommage. En 2020, Katharopoulos et ses coauteurs publiaient *Transformers are RNNs*, un article montrant que l'attention linéaire, débarrassée du softmax, peut se réécrire comme un RNN. Tri Dao et Albert Gu admettent d'ailleurs, dans une note de bas de page, que leur titre ne vaut que pour « certaines variantes » d'attention.\n\nSix mois plus tôt, avec Mamba, ils avaient montré qu'un modèle à espace d'état pouvait tenir tête au Transformer. Cet article (publié ensuite à ICML 2024) prend une autre direction : les deux modèles sont en fait parents ; que peut-on tirer de cette parenté ?\n\n## Définition du problème\n\nCe qui gêne les auteurs, c'est l'écosystème.\n\nLe Transformer a toute une communauté à son service : analyses théoriques, optimisations matérielles comme FlashAttention, parallélisme tensoriel, parallélisme de séquence, accumulés strate après strate. Les SSM, eux, avancent surtout en solitaire, sans pouvoir réutiliser directement ces acquis.\n\nConcrètement, le balayage sélectif (*selective scan*) de Mamba pose deux problèmes pratiques :\n\n1. **Les unités de multiplication matricielle restent inutilisées.** Sur GPU, ce qui va le plus vite, ce sont les tensor cores, spécialisés dans la multiplication de matrices ; la récurrence de Mamba peut se calculer par un balayage parallèle (*associative scan*), mais ce balayage se compose surtout d'opérations élément par élément, qui ne profitent pas des tensor cores.\n2. **On n'ose pas agrandir l'état.** Plus la dimension d'état $N$ est grande, plus le modèle retient d'information, mais plus le balayage est lent. Mamba utilise par défaut $N=16$.\n\nLes auteurs veulent établir une correspondance entre SSM et attention, pour que les SSM puissent se calculer par multiplications de matrices et profiter directement de toute l'ingénierie système du Transformer.\n\n## Résolution du problème\n\n### Écrire le SSM comme une matrice\n\nRappelons la récurrence d'un SSM sélectif, dont les paramètres dépendent de l'entrée à chaque pas :\n\n$$\nh_t=A_t h_{t-1}+B_t x_t,\\qquad y_t=C_t^\\top h_t\n$$\n\nPrenons un état initial nul. En déroulant la récurrence, la sortie au pas $j$ est une somme pondérée de toutes les entrées jusqu'à ce pas :\n\n$$\ny_j=\\sum_{i\\le j} C_j^\\top A_j A_{j-1}\\cdots A_{i+1} B_i\\, x_i\n$$\n\nSur toute la séquence, le passage de l'entrée à la sortie se réduit donc à une multiplication matricielle $y=Mx$, avec\n\n$$\nM_{ji}=C_j^\\top A_{j:i} B_i,\\qquad A_{j:i}=A_j\\cdots A_{i+1}\n$$\n\n[![À gauche, une séquence d'entrée de longueur T traverse une matrice de transformation de séquence M, triangulaire inférieure de taille T×T, pour donner la sortie ; à droite, chaque coefficient de M s'écrit comme C transposée multipliée par une suite de A, puis par B, et un cadre en pointillés entoure une sous-matrice située sous la diagonale principale](/content/papers/assets/771f5c6bcb0b30ac06fac163812a3aa6aad0063df419f7ffd41bc60cef195e79.png)](/content/papers/assets/771f5c6bcb0b30ac06fac163812a3aa6aad0063df419f7ffd41bc60cef195e79.png)\n\n*Figure 2 de l'article, extraite de la [**page 9 du PDF v1**](https://arxiv.org/pdf/2405.21060v1#page=9), CC BY 4.0.*\n\nCette matrice $M$ est triangulaire inférieure et possède une structure particulière : toute sous-matrice prise sous la diagonale (le cadre bleu en pointillés de la figure) a un rang au plus égal à la dimension d'état $N$. En mathématiques, on parle de **matrice semi-séparable** (*semiseparable matrix*).\n\nL'observation centrale des auteurs : **les différentes façons de calculer un SSM sont autant d'algorithmes pour multiplier par cette matrice**. La récurrence pas à pas en est un ; calculer toute la matrice $M$, puis multiplier, en est un autre.\n\n### Réduire $A$ à un nombre\n\nDans Mamba, $A_t$ est une matrice diagonale. Mamba-2 simplifie encore : $A_t=a_t I$, si bien qu'un seul scalaire $a_t\\in[0,1]$ règle la décroissance à chaque pas. Cette version s'appelle **SSD** (*state space dual*).\n\n$A_{j:i}$ devient alors un simple produit de scalaires, que l'on peut sortir de la matrice :\n\n$$\nM=L\\circ(CB^\\top),\\qquad\nL_{ji}=\\begin{cases}a_j\\times\\cdots\\times a_{i+1}, & j\\ge i\\\\ 0, & j<i\\end{cases}\n$$\n\nComparons avec l'attention causale :\n\n$$\nY=\\text{softmax}\\big(\\text{mask}(QK^\\top)\\big)V\n$$\n\nSi l'on voit $C$ comme $Q$, $B$ comme $K$ et $x$ comme $V$, les deux expressions se ressemblent presque trait pour trait, à deux différences près :\n\n1. **Il n'y a pas de softmax.**\n2. **Le masque ne se limite pas à des 0 et des 1.** Un masque causal ordinaire indique seulement si l'on « peut voir » ; $L$ indique aussi « dans quelle mesure » : plus la distance est grande, plus les décroissances s'accumulent, et chacune dépend de l'entrée.\n\nLes auteurs interprètent ce second point ainsi : $L$ remplace l'encodage positionnel du Transformer et devient un masque positionnel déterminé par les données.\n\n### Quatre tokens, calculés pas à pas\n\nLes formules seules restent abstraites. Prenons un petit exemple de quatre tokens avec une dimension d'état $N=2$, et calculons-le des deux façons :\n\n```python\nimport numpy as np\nnp.set_printoptions(precision=3, suppress=True)\n\nx = np.array([1.0, 2.0, 3.0, 4.0])          # 4 tokens, de dimension 1 chacun\na = np.array([0.9, 0.5, 0.8, 0.7])          # décroissance à chaque pas, fixée par l'entrée\nB = np.array([[1, 0], [0, 1], [1, 1], [1, -1]], dtype=float)   # direction d'écriture, N=2\nC = np.array([[1, 1], [1, 0], [0, 1], [1, 1]], dtype=float)    # direction de lecture\n\n# Forme linéaire (récurrente) : on avance avec un état de dimension 2\nh = np.zeros(2); y_rec = []\nfor t in range(4):\n    h = a[t] * h + B[t] * x[t]\n    y_rec.append(C[t] @ h)\nprint(\"Récurrence :\", np.array(y_rec))\n\n# Forme quadratique (attention) : on calcule d'abord la matrice 4×4, puis on la multiplie par x\nL = np.zeros((4, 4))\nfor i in range(4):\n    for j in range(i + 1):\n        L[i, j] = np.prod(a[j + 1:i + 1])   # a_i × … × a_{j+1}, vaut 1 quand i=j\nM = L * (C @ B.T)\nprint(\"Masque L :\\n\", L)\nprint(\"Matrice :\", M @ x)\n```\n\n```text\nRécurrence : [1.  0.5 4.6 5.6]\nMasque L :\n [[1.   0.   0.   0.  ]\n [0.5  1.   0.   0.  ]\n [0.4  0.8  1.   0.  ]\n [0.28 0.56 0.7  1.  ]]\nMatrice : [1.  0.5 4.6 5.6]\n```\n\nLes deux calculs donnent le même résultat.\n\nLa voie récurrente n'avance qu'avec 2 nombres à la fois : mémoire fixe, idéale pour la génération. La voie matricielle doit d'abord calculer un tableau 4×4 (pour une séquence de longueur $T$, il fait $T\\times T$) ; mais elle ne se compose que de multiplications de matrices, que les tensor cores calculent très vite : idéale pour l'entraînement.\n\nRegardons la dernière ligne du masque : quand le 4ᵉ token regarde le 1ᵉʳ, la contribution de celui-ci est multipliée par $0.5\\times0.8\\times0.7=0.28$. Il suffit qu'un seul $a_t$ intermédiaire soit petit pour que ce qui précède soit presque entièrement oublié. Voilà à quoi ressemble la « sélectivité » de Mamba sous forme matricielle.\n\n### Chaque voie fait la moitié du chemin\n\nL'algorithme SSD réel découpe la séquence en blocs de longueur fixe :\n\n- **À l'intérieur de chaque bloc**, il utilise la forme matricielle : une petite matrice quadratique, calculée sur les tensor cores.\n- **Entre les blocs**, il utilise la forme récurrente : seul l'état atteint en fin de bloc est transmis au bloc suivant.\n\nCela revient à décomposer $M$ par blocs : les petits blocs diagonaux sont calculés directement, et la partie sous la diagonale, de rang faible, peut être représentée par les états. Le Listing 1 de l'article donne une implémentation complète, qui tient en quelques lignes de PyTorch.\n\nLa Figure 10 de l'article mesure l'opération centrale sur un A100 80GB PCIe : à dimension d'état égale (64), SSD est 2 à 8 fois plus rapide que le balayage fusionné de Mamba ; face à FlashAttention-2, il fait jeu égal vers 2K de longueur de séquence et devient 6 fois plus rapide à 16K. Grâce à cette vitesse, la dimension d'état peut passer des 16 de Mamba par défaut à 64, voire 256.\n\n### Le bloc Mamba-2\n\n[![Deux blocs comparés côte à côte. À gauche, le Sequential Mamba Block passe d'abord par une convolution et une activation pour produire X, puis projette A, B et C à partir de X avant de les envoyer au SSM ; à droite, le Parallel Mamba Block produit A, X, B et C simultanément dès l'entrée du bloc, avec une même projection linéaire ; la sortie du SSM, multipliée par la porte, traverse une couche de normalisation supplémentaire N avant la projection de sortie](/content/papers/assets/e422ea301e9616b502680c01dc5005caf009df35935c9aded0a0c868f52dc2bd.png)](/content/papers/assets/e422ea301e9616b502680c01dc5005caf009df35935c9aded0a0c868f52dc2bd.png)\n\n*Figure 6 de l'article, extraite de la [**page 23 du PDF v1**](https://arxiv.org/pdf/2405.21060v1#page=23), CC BY 4.0. À gauche, le bloc de Mamba ; à droite, celui de Mamba-2.*\n\nDès lors que « les SSM sont parents de l'attention », la conception des blocs peut aussi s'inspirer de l'expérience acquise sur l'attention :\n\n1. **Projections parallèles.** Mamba calcule d'abord $X$, puis, à partir de $X$, projette $B$, $C$ et $\\Delta$ ; Mamba-2 produit $A$, $X$, $B$ et $C$ dès l'entrée du bloc avec une seule projection (le $A$ de la figure désigne la décroissance discrétisée, dont la dépendance aux données vient du pas $\\Delta$ projeté en même temps), comme l'attention produit $Q$, $K$ et $V$ d'un seul coup. Le nombre de paramètres baisse un peu, et le parallélisme tensoriel devient plus simple : chaque bloc compte deux fois moins de points de synchronisation.\n2. **Plusieurs têtes.** Mamba revient à une tête par canal (dimension de tête 1) ; Mamba-2 passe à une dimension de tête $P=64$ ou 128, comme le veut l'usage du Transformer. $B$ et $C$ sont partagés entre les têtes, un peu comme plusieurs têtes de valeur partagent la même clé et la même requête.\n3. **Une normalisation de plus.** Dans les premières expériences, l'entraînement des grands modèles avait tendance à devenir instable ; les auteurs ajoutent donc une normalisation après la porte, avant la projection de sortie.\n\n## Discussion\n\n### Plus d'état, plus de mémoire\n\n[![Trois graphiques en courbes donnant la précision en rappel associatif multi-requêtes (MQAR) pour des séquences de longueur 256, 512 et 1 024 ; en abscisse, la dimension du modèle, de 32 à 256. Mamba (N=16) reste presque partout proche de 0 ; Mamba-2 (N=16) progresse à mesure que le modèle grandit ; Mamba-2 (N=64) et N=256 approchent 1 dans la plupart des réglages ; l'attention est à environ 0,5 pour une longueur de 1 024 et une dimension de 128](/content/papers/assets/62bb9a2f1e1e9d3f11500404928dcac9606819430521e5da6b90659f81b5925f.png)](/content/papers/assets/62bb9a2f1e1e9d3f11500404928dcac9606819430521e5da6b90659f81b5925f.png)\n\n*Figure 8 de l'article, extraite de la [**page 28 du PDF v1**](https://arxiv.org/pdf/2405.21060v1#page=28), CC BY 4.0.*\n\nLe MQAR (*multi-query associative recall*, rappel associatif multi-requêtes) est une tâche synthétique : on fournit une série de paires « clé–valeur », puis on interroge de nombreuses clés d'un coup. Il ressemble beaucoup à une recherche dans un annuaire, et c'est depuis longtemps un point faible des modèles à état.\n\nPlusieurs points ressortent clairement :\n\n- Mamba ($N=16$) échoue presque partout.\n- Mamba-2, avec le même $N=16$, fait bien mieux. Les auteurs eux-mêmes ne savent pas quelle partie de l'architecture explique cet écart.\n- Quand $N$ passe de 16 à 64 puis à 256, la précision ne cesse de monter ; à la longueur 1 024, la version $N=256$ dépasse même l'attention classique.\n\nPlus l'état est grand, plus il peut contenir de paires. SSD rend les grands états abordables : c'est là tout son intérêt.\n\nPrécisons que ces modèles n'ont que deux couches et une dimension d'au plus 256 : il s'agit d'une très petite expérience synthétique.\n\n### Modélisation du langage\n\nEntraîné sur 300B tokens de Pile, Mamba-2 2.7B obtient une moyenne zéro-shot de 60,2, au-dessus de Mamba 2.8B (59,9), de Pythia 2.8B (55,7) et même de Pythia 6.9B (58,3), plus de deux fois plus gros (chiffres de Mamba-2 dans la Table 1 de l'article, ceux de Pythia 6.9B dans la Table 10 en annexe). Une autre série d'expériences sur les lois d'échelle couvre de 125M à 1,3B paramètres et de 2,5B à 26B tokens d'entraînement ; dans ce cadre, Mamba-2 fait mieux que la référence Transformer++ des auteurs en perplexité, en FLOPs théoriques comme en temps d'entraînement réel.\n\n### Les auteurs aussi recommandent l'hybride\n\nUn passage de l'article passe souvent inaperçu : les auteurs ont eux-mêmes essayé de mélanger couches SSD et couches d'attention.\n\nSur un modèle de 350M paramètres et 48 couches, entraîné sur 7B tokens de Pile, ils font varier le nombre de couches d'attention :\n\n| Couches d'attention | 0 (Mamba-2 pur) | 1 | 3 | 6 | 11 | 24 | Transformer++ pur |\n| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: |\n| Perplexité | 8,60 | 8,38 | 8,29 | 8,26 | 8,30 | 8,50 | 8,68 |\n\n*Tableau : extrait de la Table 2 de l'article.*\n\nUne seule couche d'attention fait passer la perplexité de 8,60 à 8,38 ; le meilleur résultat est obtenu avec 6 couches sur 48 (12,5 %), ce que les auteurs résument par « environ 10 % ». Pourquoi l'hybride fait-il mieux ? Les auteurs n'avancent qu'une hypothèse : les deux types de couches se partagent le travail de mémoire. SSD résume en continu ce qui précède dans un état de taille fixe, tandis que l'attention garde une voie pour revenir consulter chaque token ; le modèle n'a pas à faire tenir chaque détail dans l'état.\n\nÀ l'échelle de 2,7B, 64 couches et 300B tokens, Mamba-2-Attention, avec 58 couches SSD et 6 couches d'attention, atteint une perplexité de 5,95 sur Pile et une moyenne zéro-shot de 61,0, mieux que Mamba-2 pur et Transformer++, tous deux à 60,2.\n\n### Pas une amélioration sur tous les plans\n\nLes auteurs signalent honnêtement plusieurs limites :\n\n- **Le facteur 2 à 8 se mesure face au balayage de Mamba.** À l'échelle du modèle entier, sur des séquences courtes comme 2K, l'entraînement de Mamba-2 n'est pas forcément plus rapide que celui d'un Transformer : à nombre de paramètres égal, la moitié d'un Transformer est faite de couches MLP très efficaces sur le matériel.\n- **Un peu moins d'expressivité.** Faire passer $A$ d'une matrice diagonale à un scalaire, c'est échanger de l'expressivité contre de l'efficacité d'entraînement. Tri Dao le dit plus franchement encore sur son blog : Mamba-2 n'est pas strictement meilleur que Mamba-1, car la vitesse d'inférence ne dépend que de la taille de l'état, et à taille d'état égale, Mamba-1 pourrait être plus expressif. [Blog de Tri Dao, Mamba-2 Part I](https://tridao.me/blog/2024/mamba2-part1-model/)\n\nDans la discussion sur Hacker News, quelqu'un résume l'article en une phrase : en restreignant $A$ à un scalaire multiplié par l'identité, le SSM s'écrit comme une attention linéaire causale, avec à la clé un entraînement bien plus rapide sur GPU. Un autre répond simplement « tldr: mamba is not as good as transformer ». [Hacker News, 2024-06-03](https://news.ycombinator.com/item?id=40564067) Le premier résumé saisit avec justesse le mécanisme de dualité et le gain à l'entraînement ; le second verdict ne précise ni les tâches ni les conditions de la comparaison. Le compromis de l'article est pourtant clair : restreindre l'expressivité de $A$ pour gagner en efficacité matérielle ; cette efficacité permet à son tour d'agrandir l'état, avec un bénéfice visible sur le MQAR.\n\n## Conclusion\n\nL'héritage de Mamba-2 se range à peu près sur trois niveaux :\n\n1. **En théorie**, un SSM dont la transition d'état est un scalaire multiplié par l'identité (SSD) et une attention linéaire à masque semi-séparable sont deux algorithmes pour une même matrice. Les auteurs montrent aussi que, dans l'attention masquée telle que l'article la définit, tout masque admettant une forme récurrente linéaire d'ordre fini est nécessairement une matrice semi-séparable, autrement dit une forme de SSM.\n2. **En ingénierie**, l'algorithme de décomposition par blocs permet aux SSM d'exploiter les tensor cores : l'opération centrale est 2 à 8 fois plus rapide que le balayage de Mamba, l'état peut monter à 64 ou 256, et le parallélisme tensoriel comme le parallélisme de séquence s'appliquent directement.\n3. **En architecture**, les expériences des auteurs montrent qu'environ 10 % de couches d'attention, associées à des couches SSD, font mieux que Mamba-2 pur et que le Transformer pur.\n\nLa note sur Mamba posait la question « Qui prendra la relève ? ». La réponse de cet article ressemble plutôt à ceci : l'héritier faisait déjà partie de la famille, et le meilleur arrangement consiste à le faire vivre sous le même toit que le maître des lieux.\n\nPlus tard, Gated DeltaNet s'appuiera directement sur ce cadre pour associer la décroissance scalaire de Mamba-2 à une autre règle de mise à jour.\n\n\n> [!TIP]\n> \n> Pour Mamba, qui précède SSD, et pour un prolongement ultérieur de ce cadre :\n> \n> - **[[23.12] Mamba : qui prendra la relève ?](/blog/papers/mamba/mamba)**\n> - **[[24.12] Gated DeltaNet : effacer avant d'écrire](/blog/papers/mamba/gated-deltanet)**\n","imageSizes":{"/content/papers/assets/771f5c6bcb0b30ac06fac163812a3aa6aad0063df419f7ffd41bc60cef195e79.png":{"width":1462,"height":556},"/content/papers/assets/e422ea301e9616b502680c01dc5005caf009df35935c9aded0a0c868f52dc2bd.png":{"width":1208,"height":623},"/content/papers/assets/62bb9a2f1e1e9d3f11500404928dcac9606819430521e5da6b90659f81b5925f.png":{"width":1384,"height":384}}}
