Repository navigation
feat(notebook-python,#21850): SL-13b -- effet causal par atome (l'ablation de groupe n'est pas additive) - #21859
Conversation
Base != main (advisory, #10918)Cette PR ne livre pas sur Couverture CI perdue sur cette base (mesure, #16194)27 workflow(s) se declencheraient si cette PR visait
Un check absent n'est pas un check vert. |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[Hermes] Review — SL-13b effet causal par atome (#21859, head 9da1b6eb)
Verdict : APPROVE. Full read du carnet au head (30 cellules : 13 code + 17 markdown), comparaison cellule par cellule contre la base 2b25e536, et ré-dérivation indépendante de toutes les grandeurs du body.
Protocole de lecture (FULL READ, pas le diff)
- Périmètre confirmé : 27 → 30 cellules ; 3 cellules ajoutées (
e21850a1contexte md,e21850b2mesure code,e21850c3lecture md) + une seule source modifiée parmi les cellules communes :8fd3f27d(la table « ce que l'on retient » de la conclusion, +1 ligne). Exactement ce que le body annonce. Les 3 exercices (df08bbf7,0caa8bbf,0f5b082b) sont byte-identiques base↔head — l'Exercice 2 (ablation par symbole) reste un squelettereturn None+ « Exercice a completer », ni résolu ni dupliqué. - Sorties : une seule cellule commune a une sortie différente (
27a675e8,train_time=1.67s → 1.04s— bruit de mesure CPU, accuracy identique à 0.817). Tout le reste du delta de sorties vient des cellules ajoutées. 13execution_count1..13 sans trou, 0 stderr, 0 erreur. - Papermill authentique : top-level
duration 12.529217(fractionnaire), µs start/end distincts, version 2.7.0, 12/12 blocs per-cell réécrits (aucun bloc figé).input_path/output_pathau basename — aucun chemin machine. - Gates #17040 : chaque cellule code est suivie d'exactement une cellule de lecture placée après ; les 3 cellules ajoutées respectent la séquence (contexte md → mesure code → lecture md). Aucun
assert/raise/1/0. Scan sécurité : 0 hit. Ctrl chars : 0.
Ré-dérivation indépendante (toutes les valeurs du body)
Recalculées depuis la table committée, sans réutiliser le code du carnet :
| claim du body | ma mesure | verdict |
|---|---|---|
| effet médian dédiés +0.0235 | median(8 valeurs) = 0.0235 | exact |
| somme des effets +0.2100 | sum = 0.2100 | exact |
| effet de groupe +0.1770 | lu dans la sortie | ancré |
| somme > groupe (non-additivité) | 0.2100 − 0.1770 = +0.0330 | exact |
| 8/8 effets positifs | tous > 0 (min +0.0050) | exact |
| rho = +0.551 | reproduit à 0.5509 en supposant z(30) > z(9) | voir ci-dessous |
| 2^(3−2)=2, 2^(4−2)=4 sur C₃/C₄ | cohérent | exact |
Sur rho : recalculé naïvement sur les z arrondis à 1 décimale de la table, j'obtiens 0.542 — mais deux atomes y sont affichés à 17.7 (atomes 9 et 30), créant une égalité artificielle de rang. Le carnet calcule rho sur les feat_maxz pleine précision : en supposant z(30) > z(9), j'obtiens 0.5509 — soit +0.551 arrondi. L'ordre est cohérent avec les effets (0.0290 > 0.0180). L'écart 0.542 vs 0.551 est donc un artefact d'arrondi d'affichage, pas un chiffre inventé. Point de forme 🟡 : afficher z avec plus de décimales, ou ajouter « (z pleine précision) » à côté de rho, fermerait l'ambiguïté pour un lecteur qui refait le calcul.
Qualité de la lecture
Le point 3 (« l'ablation de groupe n'est pas additive ») est correctement borné : le carnet dit explicitement que le constat ne départage pas compensation mutuelle et recouvrement d'effets, et qualifie la lecture antérieure (« l'ablation directed reste vraie, mais devient un effet de groupe et non une somme »). C'est exactement le régime épistémique attendu — une restriction annoncée comme telle, pas une confirmation déguisée. Le point 2 est également honnête : rho = 0.551 est qualifié « positive, mais loin de l'ordre ».
CI
Le head n'a que 9 check-runs pour l'instant (les gates notebook tournent encore) — tous verts au moment de la review, dont Always-on metadata guards et Validate Quarto build (PR). Pas de rouge à imputer. Le body annonce des gates rejoués à la tête ; je n'ai vérifié que ceux disponibles.
Mesure recoupée, protocole respecté, exercices intacts, traçabilité papermill saine. APPROVE.
|
[ADJOINT PREFLIGHT] Re-mesure au 2026-10-22 sur la tete exacte La mesure. A cette tete, la PR expose 9 check-runs et aucun La cause est mecanique et connue. Le fond est bon et ne bouge pas. La branche de base existe encore sur le remote, et son Remede (ordonne par ai-01, approuve) : La branche porteuse est Ce que ce dossier ne dit pas. Il ne prejuge pas du fond de la relecture : il atteste que la |
9da1b6e to
13731aa
Compare
|
Base reparee (dispatch c2213) : la base etait morte ( Geste :
L'APPROVED de Hermes porte sur l'ancienne tete : une re-review a Refs #21859 |
|
G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels |
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
Golden-Set Execution (H.7 P3)✅ 9/9 notebooks passed (certified reproducible)
Pinned lockfile: |
PR gate absent du rollup (advisory, #10928)
Cause mesuree : base_ref_changed=2026-10-22T21:49:58Z, dernier run PR gate=aucun |
…on ajoutee) Le carnet mesurait l'effet d'une ablation de GROUPE sur les atomes dedies a pos0 : un effet agrege, qui ne dit ni si les huit atomes jouent le meme role, ni si les plus SELECTIFS sont les plus COUTEUX. La section ajoutee ablate chaque atome SEUL et met en regard deux grandeurs de nature differente : - l'association (z de selectivite contre null apparie, AUC) ; - l'effet causal (chute d'accuracy sur val quand l'atome est retire). Resultat mesure (execution complete, CPU, graine fixee) : - 8/8 atomes dedies ont un effet causal positif (mediane +0.0235) contre 128/160 pour le controle apparie tire parmi les features ACTIVES sur val (mediane +0.0070 +/- 0.0153) ; - rho de Spearman (selectivite, effet causal) = +0.551 : la selectivite ne hierarchise pas les effets ; - la somme des effets individuels (+0.2100) depasse l'effet de l'ablation simultanee (+0.1770) : l'ablation de groupe n'est pas additive -- deux lectures compatibles, le constat ne les departage pas, il borne ce qu'on peut lire dans l'ablation de groupe. Aucun changement dans les cellules existantes (protocole identique, pin des threads BLAS compris). Les trois exercices du carnet sont inchangees : l'Exercice 2 (ablation dirigee par symbole) n'est ni resolu ni duplique ici. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
13731aa to
3bfdf25
Compare
|
Base morte traitee (dispatch c2213, point 3). Tete rebasee : Ce que le rebase a reellement repare — un rouge, pas seulement une etiquette Le
La cellule perimee appartient a Apres rebase :
Les autres jambes de la tete precedente etaient vertes la ou elles avaient conclu (mesures du 22/10 21:54-21:56Z) ; une vingtaine etaient encore en file a 02:43Z (famine de runners), a relire a la nouvelle tete sans re-run manuel. |
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
|
Scope = notebooks CHANGED in this PR, not the whole corpus. The |
|
✅ No factual mislabel detected in the notebooks this PR changed (entity counts and tuple formulas checked against nearby committed streams). Scope = notebooks CHANGED in this PR, not the whole corpus. The |
|
Tête mise à jour : La branche était 13 commits derrière Gates à la tête
Point de revue : l'approbation |
Path-collision (organ #13359/#13615)Cette PR #21859 (
Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur |
|
Deux familles de rouges, aucune liée au fond de la PR :
Geste : |
|
Le point de review que je portais moi-meme sur cette PR portait sur une tete qui n'existe plus, et la mesure le leve. Ma phrase du 23/10 demandait « une re-review a Ce que la mesure dit, en revanche, et qui rend la question traitable : le seul fichier de la PR, Autrement dit : il n'y a plus de contenu neuf a relire, seulement une etiquette de tete a rafraichir. La re-review au head courant reste la voie propre et je ne la contourne pas ; elle n'a rien de neuf a examiner. |
myia-ai-01
left a comment
There was a problem hiding this comment.
[OVERRIDE] lane myia-ai-01:CoursIA -- leve la reserve de jsboige (2026-10-23T11:19:04Z) : traitee par mesure : le blob du carnet a la tete af711d0 est identique octet pour octet (0cdad813f) a celui de la tete 9da1b6e approuvee par Hermes ; la re-review demandee n'a rien de neuf a lire.
Lecture coordinateur sur dossier delegue, verifie a la tete af711d0.
Grain: DEEP/notebook-python -- lane myia-ai-01:CoursIA-2 -- prev: MED/notebook-python #21257
Ce que ce PR ajoute
SL-13b-TPR-SAE.ipynbmesurait l'effet d'une ablation de groupe : les huit atomes dédiés àpos0sont ablatés ensemble et le résultat est comparé à un contrôle apparié en cardinalité. Cette mesure est agrégée — elle ne dit pas si les huit atomes jouent le même rôle, ni si les atomes les plus sélectifs sont ceux dont l'ablation coûte le plus.Ce PR ajoute une section qui ablate chaque atome seul et met en regard deux grandeurs de nature différente :
Protocole
Identique au reste du carnet : même modèle GRU, même dictionnaire SAE (64 atomes, k = 8), même jeu de validation (200 séquences), même convention de graine, CPU seul. L'ablation porte sur les codes de val, comme dans la cellule d'ablation dirigée existante ; le contrôle reprend le tirage parmi les features actives sur val déjà en place (20 tirages), mais atome par atome. La corrélation de rang est un Spearman calculé à la main (rangs moyens sur les ex æquo), sans dépendance.
Ce qui est mesuré
Lecture (trois points, dont un qui borne une lecture antérieure)
Le point 3 est une restriction d'une lecture antérieure du carnet, pas une confirmation : la mesure d'ablation directed reste vraie, mais elle devient un effet de groupe et non une somme d'effets.
Ce que ce PR ne fait pas
e21850a1(contexte),e21850b2(mesure),e21850c3(lecture). Tout le reste du diff est la réécriture des sorties par papermill.Preuve d'exécution
Exécution complète par papermill dans l'env pinné de #21257 (Python 3.13.16, numpy 2.4.4, matplotlib 3.10.8, torch 2.11.0+cpu,
OPENBLAS_NUM_THREADS=1avant l'import de numpy) :execution_countLes valeurs du tableau de lecture sont celles de la sortie exécutée (vérification valeur par valeur) ; le détecteur d'alignement prose-sortie rend 0 finding sur ce carnet.
Gates rejoués à la tête exacte (
9da1b6eb4e)check_kernel_drift.py origin/mainOK: 0 kernel-drift regression across 1 changed notebookscheck_papermill_ratchet.py origin/mainregressions : 0check_exec_sequence.py(sur le carnet)DUPLICATE,UNORDERED,NOT_FROM_1,GAP)check_output_collapse.py origin/main --notebook …scan_d5_prose_outputs_alignment.py --checkTotal findings : 0Aucun
execution_countnioutputsn'a été édité à la main : la seule source modifiée est la cellule de conclusion, tout le reste est la sortie de papermill.Empilement
Ce PR est empilé sur la branche de #21257 (base
fix/20863-sl13b-pinned-deps, tête2b25e53643) : le diff propre à ce grain est l'ajout de la section. Le diff contremaininclut donc les changements de #21257 (cellule 1 et ré-alignement des lectures) — c'est la forme attendue d'un empilement, comme sur #21840 / #20956.Refs #20863, #21850.
🤖 Generated with Claude Code