Articles · IA : les modèles de langage de l'intérieur · série terminée
Smallem : une mémoire de n-grammes
Cette série prolonge la construction de Smallem, un modèle de langage écrit en Rust et CUDA à partir de zéro, et sa série sur les lois d'échelle. Elle construit la mémoire de n-grammes d'Engram, chez DeepSeek, reprise par Qwen : une table de vecteurs indexée par les deux ou trois derniers tokens, que le modèle consulte sans presque rien calculer. Elle la fait apprendre, la sort de la carte, et mesure ce que vaut un paramètre qui ne calcule pas.
Sommaire
-
1
Compter les n-grammes
Les n-grammes du corpus, le hachage, et ce qu'une table de comptes sait à elle seule
-
2
Une mémoire qu'on consulte
La lecture, la porte, la convolution, l'initialisation, et ce qui compte dans sa construction
-
3
Une table hors de la carte
Des gradients creux, un AdamW par lignes, une ligne de réserve, et 2,1 milliards de paramètres en mémoire centrale
-
4
Ce que vaut un paramètre qui ne calcule pas
La taille de la table, les courbes à calcul constant, et un creux qui se déplace
-
5
Générer avec une mémoire
Une lecture qui coûte des lancements et non des octets, ce que la table retient, et le bilan
Les chiffres en un coup d'œil
Sur une RTX 3090, aux budgets d'opérations de la série sur les lois d'échelle ; les pertes sont celles de la validation, en nats par octet.
| Article | Mesure | Sans table | Avec table |
|---|---|---|---|
| 1 | Trigrammes distincts dans le corpus | 141 millions | |
| 2 | Largeur 256, 3 × 10¹⁵, table de 67 millions | 0,9595 | 0,9258 |
| 3 | Débit d'entraînement xl, table creuse sur la carte | 49 788 tokens/s | 48 463 (−2,7 %) |
| 3 | Débit d'entraînement xl, 2,1 milliards en mémoire centrale | 49 788 tokens/s | 44 846 (−9,9 %) |
| 4 | Creux à 10¹⁶ : taille du réseau | 15,3 millions | 11,8 millions |
| 4 | Creux à 10¹⁶ : perte | 0,8971 | 0,8683 (×1,9 de calcul) |
| 4 | Largeur 448, 3 × 10¹⁶ | 0,8524 | 0,8247 |
| 5 | Génération sur la carte, une séquence, table en mémoire centrale | 1 001 tokens/s | 958 (−4,3 %) |
| 5 | Perte en coupant la mémoire du modèle xl | +0,156 (sept fois le gain) |
Bibliographie
- Jelinek et Mercer, Interpolated Estimation of Markov Source Parameters from Sparse Data, 1980 : le mélange des ordres → article 1.
- Cheng et al., Conditional Memory via Scalable Lookup: A New Axis of Sparsity for Large Language Models (Engram, DeepSeek), 2026, et son code → toute la série, et la mémoire coupée de l'article 5.
- Qwen Team, On the Design of Qwen3.8-Next Architecture: Evaluation, Efficiency, and Training Stability, 2026 → article 1, article 2, article 3.
- Zhou et al., Tensorizing Engram: Sharing Latents Across N-Gram Embeddings is Beneficial in LLMs, 2026 → article 2.
- Huang et al., Over-Tokenized Transformer: Vocabulary is Generally Worth Scaling, 2025 → article 2.
- PyTorch,
torch.optim.SparseAdam: la correction de biais d'un AdamW creux → article 3.