PI logo

Trois façons dont un canal de raisonnement échoue en silence

Les journaux de trois impasses, d'octobre à décembre 2025 : un goulot qui comprimait sans calculer, un canal indifférent à son propre contenu, un passage à l'échelle qui s'est effondré, et le test contrefactuel qui a attrapé celui que tous les tableaux de bord ont manqué.

PI Project · Notes R&D/ Raisonnement propre à la machine/ Note 2 sur 2 · les échecs· Note 1 · méthode & résultat

§01 Pourquoi publier des échecs

Un canal peut être utilisé, précis, et ne porter aucun raisonnement

Quand une idée de raisonnement latent échoue, elle échoue généralement en silence. Le codebook se remplit, la perte descend, la précision franchit son seuil, et rien dans la courbe d'entraînement ne dit que le canal est creux. On ne le découvre qu'en allant voir avec un contrefactuel : corrompre le contenu du canal et observer si les réponses s'en aperçoivent.

Nous sommes allés voir trois fois fin 2025, et le travail a cassé de trois manières différentes : un zéro bruyant, un effondrement pur et simple, et un échec si silencieux que chaque métrique de tableau de bord le déclarait réussi. Voici les journaux complets, conservés parce que des résultats négatifs produits sous un test strict sont des preuves, et parce que ce mode d'échec silencieux est désormais documenté indépendamment dans la littérature. La leçon de chaque run a nourri le design du suivant ; la note jumelle consigne où le même test a fini par revenir positif.

RUN 01 · 1/4

La voie économique : greffer un goulot

Première tentative, octobre 2025 : installer un goulot VQ dur dans des modèles Pythia pré-entraînés (410 M et 1,4 Md de paramètres) via des hooks forward, et entraîner sur GSM8K, de vrais problèmes d'arithmétique de niveau primaire. Si le raisonnement pouvait être routé à travers un code discret à si bas coût, tout l'aval en serait simplifié.

RUN 01 · 2/4

Le tableau de bord disait que le mécanisme fonctionnait

Et mécaniquement, il fonctionnait. La quantification était active, les codes circulaient : 61 % du codebook en usage actif aux deux échelles, environ 180 codes émis par problème à 410 M. À regarder l'utilisation du codebook, ce que ce type de travail rapporte d'habitude, l'expérience semblait saine.

RUN 01 · 3/4

Précision : zéro. Aux deux échelles.

La précision sur la tâche était exactement de 0 %, à 410 M comme à 1,4 Md. L'invariance d'échelle est le diagnostic : si le problème était la capacité, un saut de 3,4× en paramètres ferait bouger le chiffre. Il n'a pas bougé. Le modèle comprimait de l'information dans les codes puis les contournait ; les codes étaient sur le chemin forward, pas sur le chemin causal.

RUN 01 · 4/4

Leçon : l'utilisation prouve la quantification, pas le raisonnement

Construire un goulot discret est facile ; le rendre causal est difficile, et ajouter des paramètres à un goulot non causal n'apporte rien. Ici, la barre de compétence elle-même a échoué bruyamment. Le run suivant a franchi les barres faciles, c'est ce qui l'a rendu dangereux.

RUN 02 · 1/4

Forcer le modèle à travers le canal, structurellement

Novembre 2025, en appliquant la leçon du run 01 : une architecture à deux passes sur un backbone Pythia-70M adapté par LoRA. La passe un émet un tampon IR structuré : des balises d'échafaudage autour de 512 codes discrets apprenables ; la passe deux doit consommer ce tampon par attention croisée pour répondre à une petite tâche de raisonnement arithmétique. Cette fois, le canal est architecturalement dans la boucle.

RUN 02 · 2/4

Tous les seuils que nous avions définis sont revenus au vert

Précision de validation 6,27 % contre un seuil >5 %. Intégrité structurelle de l'IR 100 %. Utilisation du codebook 26,95 % en évaluation (138 codes sur 512) contre un seuil >20 %. Perte en baisse, structure valide, codes divers. Selon toutes les métriques qu'une courbe d'entraînement peut montrer, ce canal était vivant.

RUN 02 · 3/4

Le contrefactuel : le contenu ne change rien

Puis la table d'intervention. Retirez entièrement l'IR et la précision tombe à zéro : la passe de réponse ne peut même pas démarrer sans lui, le canal est donc structurellement nécessaire. Mais randomisez-le, ou mélangez-le, et la précision ne bouge pas : 6,00 % intact, 6,00 % aléatoire, 6,00 % mélangé, à deux décimales près. Le modèle a besoin d'un flux de tokens à cet emplacement et se moque complètement de ce qu'il dit.

Notre seuil de causalité, fixé avant le run, exigeait une chute relative moyenne ≥70 % sous corruption du contenu ; le score fut de 33,3 %, porté entièrement par le cas tautologique du drop.

RUN 02 · 4/4

Leçon : un marqueur positionnel peut franchir tous les seuils du tableau de bord

L'IR servait de délimiteur « commence à réfléchir ici » pendant que le vrai calcul contournait sa sémantique : une greffe sur un backbone dont le chemin de réponse n'a jamais été isolé de l'entrée, et la descente de gradient a pris la voie bon marché. C'est l'échec dangereux : le seul instrument qui l'a vu est le contrefactuel. C'est la raison d'être de l'air gap de la note 1, et c'est le mode d'échec que « Do Latent Tokens Think? » a plus tard documenté indépendamment dans d'autres systèmes de raisonnement latent.

RUN 03 · 1/4

Le vrai test : passer à l'échelle le design qui marchait

Décembre 2025. L'architecture à air-gap avait passé le test causal proprement à 26,5 M de paramètres (note 1) ; nous avons donc multiplié la même recette par environ sept : deux transformers de 12 couches à d=768, un codebook de 4 096 entrées, entraînés sur H100 avec le même calendrier en deux phases.

RUN 03 · 2/4

Phase 1 terminée. Phase 2 effondrée.

En cours de spécialisation sur la tâche, les sorties ont dégénéré en token inconnu et ne s'en sont jamais remises : arithmétique 0 %, F1 histoire autour de 0,06, plat à chaque évaluation. C'est une pathologie différente des runs 01 et 02 : pas un canal creux mais un effondrement d'optimisation, la fragilité connue des goulots discrets durs sous un réglage agressif, où quantifieur et décodeur se désynchronisent jusqu'à ce que le décodeur émette le token le plus sûr qu'il connaisse.

RUN 03 · 3/4

Ce que le journal soutient et ne soutient pas

Nous avons arrêté à l'époque 8 sur 15, après ~3 jours et ~300 € de calcul. Un bug d'évaluation dans ce run (seul le dernier élément de chaque batch était noté) rend les chiffres fins non fiables ; l'effondrement lui-même, le 0 % en arithmétique et le checkpoint de phase 2 inutilisable sont solides. Le checkpoint de phase 1 existe mais n'est pas validé. Des hyperparamètres plus doux étaient la suite évidente ; le run n'a jamais été relancé, et il figure dans le dépôt comme archive, pas comme résultat.

RUN 03 · 4/4

Leçon : c'est entre preuve de mécanisme et système que ça casse

Un goulot discret qui s'entraîne proprement en petit peut s'effondrer net en plus grand, à recette identique. Entre la preuve à 26,5 M et quoi que ce soit de déployable se trouve un problème d'optimisation non résolu, et nous le disons, plutôt que de présenter le résultat à petite échelle comme s'il généralisait.

§05 Les lire ensemble

L’échec dangereux est celui que seul un test contrefactuel détecte

Trois modes d'échec, côte à côte
RunBackboneCanal utilisé ?Canal causal ?Mode d'échec
01 · vq_bottleneckPythia 410 M / 1,4 Md oui · 61 % d'utilisationnon · 0 % de précision, invariant à l'échelle utilisé, non causal
02 · seed_emergentPythia-70M + LoRA oui · 27 % d'utilisation, 100 % d'intégriténon · inerte sous shuffle & random marqueur positionnel · le silencieux
03 · air_gap V18de zéro, ~190 M n/an/a effondrement d'optimisation en phase 2

Trois runs, trois casses différentes, et ces différences sont le point clé. Le passage à l'échelle s'est annoncé par un effondrement ; le goulot greffé s'est annoncé par un zéro plat. Les échecs bruyants sont faciles à respecter. Le run 02 était le dangereux : utilisation, intégrité, perte et même précision disaient tous qu'il fonctionnait, et seule la corruption du canal a révélé que son contenu ne faisait rien. C'est le mode d'échec pour lequel notre test de nécessité causale existe, et c'est pourquoi, la seule fois où le même test est revenu positif, nous y croyons.

Et il n'y a pas que nous. « Do Latent Tokens Think? » (arXiv 2512.21711) est parvenu à la même conclusion par un autre chemin, en constatant qu'une famille populaire de tokens de raisonnement latent fonctionne souvent comme des marqueurs ininterprétables s'appuyant sur des artefacts du jeu de données plutôt que d'effectuer un calcul. Deux dispositifs indépendants convergeant vers un même mode d'échec : la meilleure preuve que ce mode est réel, et non une bizarrerie de notre code.

Référence : Do Latent Tokens Think? (2025)

§06 Limites

Jusqu'où s'appuyer sur ces négatifs

  • Pas une ablation contrôlée. Trois impasses distinctes, sur des backbones et des tâches différents, qui se font écho ; pas une variable isolée trois fois.
  • Le run 03 n'a pas de métriques propres. L'effondrement, le 0 % en arithmétique et le checkpoint inutilisable sont solides ; tout chiffre plus fin issu de ce run ne l'est pas, et sa taille (~190 M) est calculée depuis le script d'entraînement, pas depuis un journal de run.
  • Le modèle du run 02 est faible dans l'absolu (~6 % de précision) : le constat du marqueur est donc un résultat relatif propre (l'invariance au contenu) sur un modèle faible, pas un énoncé sur les modèles forts.
  • Runs uniques. Aucun des trois n'est multi-seed. Les conclusions qualitatives (inerte, non causal, effondré) sont robustes ; les chiffres exacts sont ceux d'un run unique.

§07 Fin du journal

Pourquoi ces journaux existent

Les seuils de ces runs ont été fixés avant les runs, et les résultats sont rapportés tels quels, quel que soit le sens dans lequel ils sont tombés ; rien ici n'a été rattrapé au récit. Ces journaux sont conservés parce qu'un résultat négatif produit sous un seuil pré-enregistré est une preuve, et parce que le mode d'échec du run 02 est invisible sans contrefactuel. Quiconque construit un canal latent le rencontrera, et la table qui l'expose coûte une passe d'évaluation.

Provenance · ce sur quoi repose chaque affirmation

Run 01 · usage 313/512 (61,1 %) et 314/512 (61,3 %), 0 % sur GSM8K aux deux échelles, tokens moyens 180,4 / 66,9 vq_bottleneck/README.md · vq_bottleneck/results/
Run 02 · table d'intervention (6,00 / 6,00 / 6,00 / 0,00 sur 150 exemples), 6,27 % de précision val., 100 % d'intégrité, 26,95 % d'utilisation, seuil de causalité ≥70 % seed_emergent_ir/V8_RESULTS_P1.1-P1.4.md · seed_emergent_ir/README.md
Run 03 · effondrement en phase 2 vers le token inconnu, 0 % en arithmétique, F1 histoire ~0,06–0,07, 8/15 époques, ~3 jours H100, ~300 €, bug d'éval., aucun checkpoint exploitable air_gap/v18/REPORT.md · air_gap/v18/h100_snapshot/
Taille du run 03 (~190 M) et configuration (12 couches, d=768, 4 096 codes) calculées en instanciant la configuration d'entraînement archivée air_gap/v18/h100_snapshot/v18_full/train_phase2.py
Confirmation indépendante du mode d'échec « marqueur de position » arXiv 2512.21711 · Do Latent Tokens Think?
Source complète, journaux d'expérience et documents dépôt de recherche privé · publication en préparation · disponible sur demande

Ceci est une ligne de recherche conclue, publiée pour la valeur de sa méthode. Les verdicts ci-dessus décrivent des prototypes de recherche issus de cette ligne, et rien d'autre.