1. Accueil
  2. Blog
  3. Chirurgie de poids

Intelligence artificielle · 8 min de lecture

0,016 % des poids,+40 points sur MATH-500.

Un petit modèle de raisonnement échouait parce qu'il bouclait, pas parce qu'il était nul en maths. Modifier 131 072 de ses 0,8 milliard de poids — sans gradient, sans fine-tuning — fait passer MATH-500 de 7,9 % à 48,1 %. Voici le protocole, les chiffres, et le cas où ça ne donne rien.

Par Kaleido LabPublié le

En bref

  • Qwen3.5-0.8B perdait 93 % de ses réponses MATH-500 sur la limite de 32 768 tokens. La cause : une seule direction répétitive écrite par les MLP des couches 15 et 19, pas un manque de capacité mathématique.
  • Soustraire cette direction sur 64 colonnes de sortie par couche (131 072 poids, 0,016 % du modèle) fait passer MATH-500 de 7,9 % à 48,1 %, GSM8K de 13,8 % à 67,1 % et IFEval de 21,0 % à 62,3 % — sans boucle d'entraînement, avec 50 passes avant de budget.
  • Ce qui se réutilise, c'est le protocole de diagnostic : isolation des couches, courbe dose-réponse, contrôle aléatoire de même norme (+1,6 point contre +40). Sur un modèle qui ne boucle pas, la même méthode ne trouve aucune direction à retirer et ne gagne rien.

Le modèle n'est pas mauvais en maths, il boucle

Qwen3.5-0.8B est un petit modèle de raisonnement, et sa propre fiche modèle signale des boucles de réflexion avec un échantillonnage agressif. L'équipe du MIT CSAIL derrière Sparks of Weight-Space Programming (2 novembre 2026) a mesuré l'ampleur : en mode réflexion, avec température 0,6 / top-p 0,95 / top-k 20 / pénalité de présence 1,5, 93 % des réponses MATH-500 atteignent la limite de 32 768 tokens. Scores de base : MATH-500 7,9 %, GSM8K 13,8 %, IFEval 21,0 %.

Sur le jeu d'entraînement, 85 des 96 premières réponses répètent du texte jusqu'à épuisement du budget. La capacité était déjà là ; la boucle la mangeait. Et les réponses habituelles — fine-tuner, acheter un modèle plus gros, ajouter « sois concis » au prompt système — soignent toutes le symptôme.

Ce que les auteurs ont fait à la place : donner les poids bruts à un modèle frontière et lui demander de trouver puis retirer la cause. Aucune descente de gradient, aucune boucle d'entraînement autorisée, pas même besoin de GPU : GPT-6 Astra reçoit un kernel Python sur les 0,8 milliard de poids, 7 469 problèmes d'entraînement GSM8K et 7 275 de MATH (jamais les jeux de test), et un budget de 50 passes avant.

La recette : 5 étapes, 50 passes avant, zéro gradient

Oubliez deux minutes le titre « un LLM modifie des poids » et lisez le journal d'édition comme une session de débogage : 17 tours, chacun une hypothèse avec une mesure en face. C'est cette partie qui se réutilise :

  1. Localiser avant de toucher. Tour 10 : couper le neurone 11 de la couche 19, le plus fort écrivain de la direction de boucle, à titre de sonde. Tour 13 : retirer un neurone aide (+6 points) — la direction existe donc bien, et elle vit dans le MLP de la couche 19.
  2. Suivre l'amplification. Tour 26 : la direction est amplifiée par les MLP des couches 15 et 19. On retire sur les deux, pas seulement là où la boucle est écrite.
  3. Trouver la dose au lieu de la deviner. Force 1 : +12,5 points sur 256 réponses ; force 2 : +24,6 ; force 3 : 48,0 % ; force 4 testée ensuite. C'est une courbe dose-réponse, pas un nombre magique.
  4. Isoler les couches. Tours 94 à 96 : couche 15 seule, puis couche 19 seule, puis seulement les 64 neurones par couche qui écrivent le plus fort la boucle — 26,6 points avec 65 fois moins de poids, force 6 conservée.
  5. Faire le contrôle. Tour 88 : même taille d'édition, direction aléatoire. Tour 92 : +1,6 point, soit rien. C'est seulement là que l'édition ciblée devient crédible.

Artefact final : la direction de boucle soustraite sur 64 colonnes de sortie de MLP dans chacune des couches 15 et 19. 131 072 poids sur 0,8 milliard — 0,016 % du modèle. Une soustraction, pas un réentraînement : même architecture, même tokenizer, même latence, même empreinte mémoire.

Les chiffres, et pourquoi le contrôle compte

Tous les scores utilisent les mêmes réglages d'échantillonnage, réflexion activée, jusqu'à 32 768 tokens. La dernière colonne est ce qui distingue une vraie correction d'un bricolage d'arrêt forcé : la part de réponses MATH-500 qui atteignent encore la limite.

Qwen3.5-0.8BMATH-500GSM8KIFEvalLimite atteinte
Base7,9 %13,8 %21,0 %93,0 %
Édité, 10 passes avant12,3 %25,7 %49,0 %87,2 %
Édité, 25 passes avant14,1 %25,1 %39,9 %86,4 %
Édité, 50 passes avant48,1 %67,1 %62,3 %33,1 %

Avec 10 ou 25 passes avant de budget de recherche, la boucle bouge à peine et le taux de troncature reste au-dessus de 86 %. Le budget donné à l'optimiseur fait partie du résultat — première leçon valable pour n'importe quel montage « d'optimisation agentique » que vous faites tourner.

Les auteurs détaillent aussi le gain au lieu de l'arrondir : +49,8 points, erreur type 1,5, 579 réponses sauvées et 5 régressions sur 80 passes. Sur les 579 sauvées, 576 étaient des sorties tronquées ; la précision sur les réponses déjà terminées ne change pas. Ce n'est donc pas un modèle qui raisonne soudain mieux : c'est un modèle qui arrête de gaspiller son budget. Et ce n'est pas un arrêt forcé non plus : les 696 réponses correctes éditées ferment bien leur bloc de réflexion, longueur médiane 9 172 tokens.

L'effet de bord est le plus intéressant. Les boucles ne sont pas propres aux maths : le suivi d'instructions monte de 21,0 % à 62,3 % sur IFEval sans entraînement dédié, GPQA Diamond atteint 36,6 % et MMLU-Pro 45,5 %. Retirer un défaut structurel améliore tout ce qui en dépendait.

Là où ça casse — et pourquoi c'est la partie utile

Les auteurs ont rejoué le même protocole sur Gemma 3 270M, un modèle instruction qui boucle rarement : 8,5 % de ses réponses atteignent la limite, contre 93 % pour Qwen. MATH-500 de base : 6,8 %. Après 5, 10, 25 puis 50 passes avant d'édition : 7,0 %, 7,6 %, 7,7 %, 7,0 %. Rien.

En lisant ses échecs, Astra trouve des erreurs de raisonnement ordinaires — arithmétique fausse, étapes algébriques invalides — sans aucun composant unique derrière. Ses éditions restent petites et ciblées (doubler un neurone qui répond aux nombres), et Astra lui-même qualifie le gain de non établi.

La phrase à retenirModifier les poids retire un obstacle qui cachait une capacité. Ça n'ajoute pas une capacité que le modèle n'a pas.

Trois autres réserves avant de mettre ça en production. C'est un billet de blog marqué non publié : pas de relecture par les pairs, une seule famille de modèles, une seule famille de tâches. Les benchmarks non montrés à l'éditeur sont bien gardés de côté, mais la généralisation au-delà n'est pas testée. Et le modèle édité est un fork : vous possédez un checkpoint de 0,8 milliard de paramètres avec un delta fait main qu'aucune version amont ne reprendra. Si le modèle de base est mis à jour, il faut retrouver la direction.

Quand l'utiliser (et quand passer)

À essayer si vous hébergez un petit modèle de raisonnement, si votre taux de troncature est mesurable et élevé, et si vous ne pouvez pas vous offrir un pipeline de fine-tuning ou un modèle plus gros à latence égale. C'est un diagnostic en 50 passes avant sur un modèle quantifié, pas un entraînement.

À éviter si le modèle ne boucle pas — le résultat Gemma est la preuve : pas de cause unique, pas de gain. À éviter si l'écart est un vrai déficit de capacité. À éviter si vous appelez une API frontière : on ne modifie pas des poids qu'on n'héberge pas. Et à éviter dans sa version « laissez le modèle éditer ses propres poids » si vous ne pouvez pas faire tourner une suite de régression derrière : une édition globale des poids est exactement le genre de changement qui améliore votre benchmark et casse votre comportement de refus.

Checklist de mise en production

  1. Mesurez d'abord le taux de troncature. Si votre longueur de sortie p95 colle au plafond max_tokens et que les réponses se répètent, vous avez une boucle, pas un problème de raisonnement. Cette seule métrique décide si la technique s'applique.
  2. N'acceptez jamais une édition sans contrôle. Même nombre de poids, direction aléatoire, même force. Si le contrôle gagne aussi quelques points, votre mesure est du bruit.
  3. Publiez la matrice de confusion, pas la moyenne. 579 sauvées, 5 cassées est un résultat ; « +40 points » seul cache les cinq réponses abîmées.
  4. Gardez les jeux de test hors de portée de l'optimiseur. Ici MATH-500, GSM8K et IFEval n'ont jamais été montrés pendant les 50 passes avant. Faites pareil, sinon vous mesurez la mémoire de l'éditeur.
  5. Versionez le delta, pas le checkpoint. Stockez indices, direction et force dans une config rejouable et réversible, et rejouez vos suites de refus et de suivi d'instructions après chaque édition.

Besoin d'aider à concevoir des workflows IA fiables, d'auditer une architecture LLM ou de former votre équipe d'ingénieurs ? Découvrez notre façon de travailler sur Kaleido-Lab.

Questions fréquentes

Une autre question ? Écrivez-moi.

Peut-on vraiment améliorer un modèle en éditant ses poids, sans entraînement ?

Dans cette expérience, oui : soustraire une direction sur 131 072 des 0,8 milliard de poids de Qwen3.5-0.8B (0,016 %) fait passer MATH-500 de 7,9 % à 48,1 % et réduit la part de réponses atteignant la limite de 32 768 tokens de 93 % à 33 %. Le modèle n'a pas acquis une compétence : il a cessé de gaspiller son budget dans une boucle.

Est-ce que ça marche sur n'importe quel modèle ?

Non. Sur Gemma 3 270M, qui boucle rarement (8,5 % de réponses à la limite), le même protocole fait passer MATH-500 de 6,8 % à 7,7 % au mieux, et l'auteur qualifie le gain de non établi. Modifier les poids retire un obstacle qui cachait une capacité, ça n'ajoute pas une capacité absente.

Combien ça coûte ?

Aucun entraînement et aucun GPU : l'éditeur reçoit un kernel Python sur les poids, 14 744 problèmes d'entraînement et un budget de 50 passes avant sur le modèle. Ce budget est décisif : avec 10 ou 25 passes avant, la boucle bouge à peine et MATH-500 reste autour de 12 à 14 %.

Comment savoir que c'est bien l'édition qui agit ?

Une direction aléatoire de même norme, appliquée de la même façon, rapporte 1,6 point contre environ 40 pour l'édition ciblée. L'isolation des couches, les tests dose-réponse et des benchmarks gardés de côté complètent le protocole.

Un modèle qui boucle en production ?

Vous comparez plusieurs modèles, ou vous voulez mesurer le coût et la fiabilité d'un pipeline LLM sur vos propres tâches ? Décrivez votre contexte, je vous réponds avec un premier avis et les prochaines étapes, sans engagement.

À lire aussi