1. Avant l’inférence
Le problème : Douze sessions de mécanismes, et une question piège en réunion : « donc le modèle apprend pendant qu’on lui parle ? ». Sans un tri net entre ce qui est appris et ce qui est écrit, toute l’architecture qui suit sera mal lue.
L’idée : Le tri : la pré-formation apprend puis FIGE embeddings, projections, routeurs et portes. À l’inférence, ces paramètres s’appliquent ; seuls évoluent le contexte, le cache MLA, l’état delta S et les checkpoints — l’état de travail, remis à zéro à la requête suivante.
Pourquoi / à quel prix : Ce partage rend le système analysable : tout comportement se rattache soit aux poids (hors ligne), soit à l’état (cette requête). Le prix : aucune mémoire entre conversations sans machinerie externe — un choix de conception, pas un oubli.
Vérification de compréhension
Nommez l’entrée, l’état transformé, la sortie et une hypothèse nécessaire. Comparez ensuite votre chaîne à l’explication ci-dessus.
2. Entrée et représentation
Le problème : 48 blocs hétérogènes — delta, MLA, MoE, récupération — doivent coopérer sans se connaître. Il faut un support commun que chacun lit et enrichit, sinon l’assemblage n’est qu’une pile de modules incompatibles.
L’idée : Ce support est le flux résiduel : le texte devient tokens puis embeddings, et un vecteur de d_model = 4096 par position traverse les 48 blocs, chacun AJOUTANT sa contribution (session 20). Le flux est le bus de données de toute l’architecture.
Pourquoi / à quel prix : Un contrat d’interface unique — c’est ce qui rend l’hybride composable. Le prix, connu : environ 96 additions (deux par bloc) diluent les contributions anciennes ; la question de la session 20 — que reste-t-il de x₀ ? — se repose ici à l’échelle du système.
Vérification de compréhension
Nommez l’entrée, l’état transformé, la sortie et une hypothèse nécessaire. Comparez ensuite votre chaîne à l’explication ci-dessus.
3. Mélange séquentiel
Le problème : Le poste mémoire dominant vient du mélange de séquence : tout exact = 24 Gio à 131 072 tokens (session 18) ; tout delta = 1 Mio mais rappel approché (sessions 13-16). Aucun des deux purs n’est vivable. Comment doser ?
L’idée : Le motif hybride : trois couches delta (état fixe, longueur quasi gratuite) puis une couche exacte sous MLA (rappel fidèle, cache réduit). Résultat de la trace : 1,5 Gio de cache et 1,1 Mio d’état — ÷16 sur le poste dominant.
Pourquoi / à quel prix : Chaque couche reçoit le mécanisme adapté à son rôle. Le prix : le RATIO devient un hyperparamètre d’architecture — 1 sur 4 ? 1 sur 2 ? — qui se paie en Gio et se justifie en qualité de rappel : un choix à tester, pas à déclarer.
Vérification de compréhension
Nommez l’entrée, l’état transformé, la sortie et une hypothèse nécessaire. Comparez ensuite votre chaîne à l’explication ci-dessus.
4. Experts
Le problème : La capacité du FFN doit grandir sans que chaque token paie le bloc entier — la session 19 a posé le problème, et son piège : confondre paramètres actifs et vitesse.
L’idée : Chaque bloc route ses tokens : top-2 parmi 64 experts plus un partagé — 26 Md de paramètres résidents, 1,2 Md actifs par token. Dans le budget global, le MoE n’apparaît pas dans la mémoire de contexte : il vit dans le budget poids et dans la latence all-to-all.
Pourquoi / à quel prix : Capacité conditionnelle massive. Le prix : trois budgets distincts à tenir — poids (26 Md), calcul (1,2 Md), réseau (all-to-all, capacité C) — et le ratio 21× n’en gouverne qu’un seul.
Vérification de compréhension
Nommez l’entrée, l’état transformé, la sortie et une hypothèse nécessaire. Comparez ensuite votre chaîne à l’explication ci-dessus.
5. Profondeur et sortie
Le problème : Après 48 blocs, les représentations précoces sont diluées (session 20) — et c’est la sortie, W_vocab, qui en a parfois besoin. Comment offrir un accès au passé de profondeur sans refaire exploser le budget que MLA vient de comprimer ?
L’idée : Des checkpoints espacés — x₀, x₁₂, x₂₄, x₃₆ : quatre ici, l’espacement de 12 de la session 20 prolongé sur 48 couches — qu’un mélange softmax resélectionne, puis norme → W_vocab → softmax du token suivant.
Pourquoi / à quel prix : La récupération se choisit. Le prix, découvert dans la trace : non bornés, les checkpoints coûtent 4 Gio — 73 % du budget total — et réintroduisent le O(n) éliminé ; fenêtrés à 8 192 tokens, 256 Mio. Le dernier composant ajouté peut dominer toute la facture.
Vérification de compréhension
Nommez l’entrée, l’état transformé, la sortie et une hypothèse nécessaire. Comparez ensuite votre chaîne à l’explication ci-dessus.
6. Préfill puis décodage
Le problème : Le même assemblage doit avaler un prompt entier puis générer token par token. Si l’on ne mesure qu’un régime, le verdict de conception est faux pour l’autre — préfill et décodage ne saturent pas les mêmes ressources.
L’idée : Préfill : des chunks parallèles (session 15) remplissent caches et états — régime limité par le calcul. Décodage : un token relit tout le passé disponible, met à jour S et le cache — régime limité par la bande passante mémoire. Deux profils, un seul code.
Pourquoi / à quel prix : Lire les deux régimes sépare latence du premier token et débit de génération. Le prix méthodologique : tout verdict exige des mesures — qualité, latence par régime, mémoire — sur la tâche réelle ; un schéma, aussi cohérent soit-il, reste une hypothèse.
Vérification de compréhension
Nommez l’entrée, l’état transformé, la sortie et une hypothèse nécessaire. Comparez ensuite votre chaîne à l’explication ci-dessus.
Développement depuis la source de cours
Chapitre 16 — Assembler un système de type Kimi K3
16.1 Le réseau principal comme une équipe
But : combiner les éléments sans prétendre qu’ils remplissent tous le même rôle. Le récit architectural fourni décrit un système hybride utilisant des représentations de jetons, des mécanismes de mélange séquentiel, du calcul feed-forward ou expert, des chemins résiduels, de la normalisation et une tête de sortie.
Imagine une rédaction : les archives mémorisent, les journalistes récupèrent le contexte, les spécialistes analysent, les éditeurs combinent les brouillons et l’éditeur choisit le prochain mot.
Étape par étape
-
Tokeniseur : convertit le texte en identifiants de jetons.
-
Plongement : convertit les identifiants en vecteurs.
-
KDA ou autre mélangeur de séquence : apporte l’information des jetons précédents dans la représentation actuelle.
-
Composants MLA ou d’attention exacte, s’ils sont présents : conservent un accès plus spécifique à certains jetons.
-
Composant MoE/feed-forward : transforme chaque jeton par des spécialistes sélectionnés.
-
Chemins résiduels et normalisation : stabilisent et combinent les mises à jour.
-
Projection de sortie : crée un logit par jeton du vocabulaire ; softmax transforme les logits en probabilités.
Exemple détaillé : Aucun composant isolé n’est « l’intelligence ». Les capacités émergent des interactions entraînées entre représentations, mémoire, routage, transformations non linéaires, données et objectif.
Pourquoi c’est important : La leçon architecturale est la division du travail sous contraintes matérielles.
Vérification rapide : quel composant convertit les vecteurs cachés finaux en scores de vocabulaire ? Réponse : la projection de sortie, ou tête du modèle de langage.
16.2 Le trajet d’un jeton pendant le préremplissage
But : suivre un prompt dans le modèle. Le préremplissage désigne le traitement des jetons du prompt avant de générer le premier nouveau jeton.
C’est comme lire toutes les pages fournies avec un examen avant d’écrire la première réponse.
Étape par étape
-
Tokeniser le prompt et rechercher les plongements.
-
Traiter de nombreuses positions du prompt en parallèle lorsque la causalité le permet.
-
Dans les couches récurrentes par blocs, utiliser de grandes opérations matricielles dans chaque bloc et transmettre l’état entre blocs.
-
Dans les couches d’attention avec cache, construire des entrées de cache comprimées ou complètes par jeton.
-
Router les représentations vers les experts sélectionnés.
-
Produire des logits à chaque position pendant l’entraînement, ou à la dernière position du prompt pendant l’inférence.
Exemple détaillé : Exemple : pour 256 jetons de prompt et des blocs de 64, il existe quatre blocs récurrents. Le matériel peut traiter une grande partie de chaque bloc comme des lots matriciels, au lieu de 256 petites boucles isolées.
Pourquoi c’est important : Les performances du préremplissage dépendent souvent fortement du calcul parallèle et de la bande passante mémoire.
Vérification rapide : le préremplissage génère-t-il toute la réponse en une fois ? Réponse : non. Il prépare les états et caches ; le décodage génère ensuite les nouveaux jetons de façon autorégressive.
16.3 Le trajet d’un jeton pendant le décodage
But : suivre un nouveau jeton généré. Le décodage consiste à générer les jetons un par un après le préremplissage.
Écris un mot, relis les notes nécessaires, puis choisis le mot suivant.
Étape par étape
-
Plonger le jeton le plus récent.
-
Dans chaque couche récurrente, lire l’état fixe, calculer la sortie de couche et mettre l’état à jour.
-
Dans chaque couche d’attention avec cache, comparer la requête actuelle aux enregistrements de jetons en cache.
-
Exécuter les experts routés et les chemins résiduels/de profondeur.
-
Projeter vers les logits, obtenir une distribution de probabilités et sélectionner le prochain jeton.
-
Ajouter le jeton et répéter jusqu’à une condition d’arrêt.
Exemple détaillé : Un état récurrent fixe garde une forme constante par couche pendant le décodage. Un cache par jeton grandit à mesure que de nouveaux jetons sont générés. Un modèle hybride hérite des deux comportements dans les couches concernées.
Pourquoi c’est important : La vitesse de décodage dépend des paramètres actifs, du trafic de cache/état, de la communication du routage, des noyaux et du matériel — pas seulement du nombre théorique d’opérations.
Vérification rapide : pourquoi la génération est-elle dite autorégressive ? Réponse : chaque jeton nouvellement choisi devient une partie de l’entrée utilisée pour choisir le suivant.
16.4 Modèle mental final
But : condenser tout le cours en une chaîne : texte → jetons → vecteurs → couches → mélange mémoire/contexte → spécialistes → logits → prochain jeton.
Le modèle est une très grande machine numérique apprise. Il ne stocke pas les phrases sous forme de petits fichiers ; il transforme des vecteurs au moyen de matrices apprises et d’états temporaires.
Étape par étape
-
L’attention exacte interroge des enregistrements passés individuels.
-
La mémoire linéaire/de type KDA interroge un état courant comprimé et corrigible.
-
MLA comprime les enregistrements par jeton.
-
MoE active des spécialistes sélectionnés.
-
Les chemins de type AttnRes peuvent récupérer des représentations utiles de profondeurs antérieures.
-
La tête de sortie prédit le prochain jeton.
Exemple détaillé : La meilleure conception n’est pas celle qui porte le nom le plus impressionnant. C’est celle qui atteint la qualité, la latence, l’usage mémoire, la stabilité d’entraînement et le coût requis sur du matériel réel.
Pourquoi c’est important : Tu possèdes maintenant assez de bases pour lire les schémas architecturaux avec esprit critique : définir chaque objet, vérifier les formes, suivre le flux d’information et indiquer la solidité des preuves.
Vérification rapide : quelles quatre questions poser face à un nouveau mécanisme ? Réponse : quel problème résout-il ? Quelle information stocke-t-il ou transforme-t-il ? Quelles sont les formes des tenseurs ? Quelles preuves soutiennent l’avantage annoncé ?
Cas guidé complet
Conception bornée : couches d’attention exacte périodiques pour récupération fidèle, couches delta entre elles pour état fixe, MLA pour réduire le cache par token, MoE pour capacité conditionnelle, checkpoints de profondeur espacés. Le verdict dépend de mesures qualité/latence/mémoire sur la tâche réelle.
Méthode de lecture: écrire les données, annoncer la forme de chaque objet, effectuer une seule transformation, puis interpréter le résultat avant de continuer.