Skip to content

Add: PT-15 controle par interpretabilite (refusal direction, ablation, steering, unlearning) - #17196

Merged
myia-ai-01 merged 2 commits into
mainfrom
feature/16758-pt15-interp-control
Sep 23, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
feature/16758-pt15-interp-control

Conversation

@jsboige

@jsboige jsboige commented Sep 21, 2026 •

Copy link
Copy Markdown
Owner

Grain: DEEP/notebook-python — lane myia-po-2027:CoursIA — prev: DEEP/notebook-lean #17189

Objet

PT-15, Contrôle par interprétabilité : distillation R14 (Sharkey et al., Open Problems in Mechanistic Interpretability, §3.1-3.2) + R11 (Singapore Consensus 2026, §1.1) en notebook exécuté sur Qwen2.5-0.5B-Instruct (fp16, GPU 8 Go). Arc B de l'Epic #16741 (évaluation honnête et sécurité des modèles ouverts).

Les cinq volets (tous mesurés sauf mention contraire)

# Volet Méthode Statut
1 Refusal direction (Arditi et al. 2024) diffmoy harmful−benign sur residual stream au dernier token (output_hidden_states), 12 paires jumelées, validation split-half (cosinus) mesuré
2 Ablation par projection toutes-couches toutes-positions (w −= (w·r̂)r̂ par hook) hooks transformers natifs (no transformer_lens), taux de refus avant/après sur 5 nuisibles + 5 bénins held-out mesuré
3 Activation steering (Turner et al.) addition α·r̂ toutes-couches, tableau refus + proxy de cohérence (charabia) sur α ∈ {−8, 0, +8, +20, +40} négatif honnête mesuré : aucun refus induit, cohérence dégradée dès |α|=8 — contraste instructif avec l'ablation (le résultat fort d'Arditi est l'ablation ; le steering de Turner s'applique sur couches sélectionnées)
4 Machine unlearning (Liu 2024, Farrell 2024) side effects bénins avant/après ablation + discussion honnête : édition par activation = réversible, non compétitive vs poids proxy mesuré, cadre discuté
5 Finetuning shallow (Gade/Lermen « ~10 exemples ») proxy comportemental (l'ablation reproduit le phénotype : refus supprimé, compétence préservée) ; réplique SFT exacte = exercice 2 admis + proxy mesuré

Plus §evaluation awareness (R11 §1.1 : Claude 4.6/Apollo « les évals ne pouvaient plus offrir de preuve fiable d'alignement », evaluation faking = effet observateur Fan 2025/Li 2026, worst case = lower bound) et conclusion-tableau honnête (mesuré / admis / argumenté).

Exécution réelle (C.2 / H.1)

  • Papermill end-to-end kernel python3 (venv projet), GPU RTX 4060, Qwen2.5-0.5B-Instruct fp16 en cache local (zéro téléchargement) : 0 erreur, execution_count réel sur chaque cellule code, outputs committés.
  • 3 exercices stubs C.1 (result_exN = None # TODO etudiant + print("Exercice N a completer")) : le notebook s'exécute de bout en bout.
  • Verdict SOTA-OK : vraies forward passes + vraie génération + vrais hooks sur le vrai modèle — aucune sortie fabriquée.
  • Compatibilité transformers v5 documentée dans le code : la sortie d'un decoder layer est un tenseur direct (plus un tuple) — le hook gère les deux formes (diagnostic mesuré, Qwen2DecoderLayer → (1, 8, 896)).

Honnêteté des mesures (G.2)

  • Le taux de refus est un proxy déclaré (regex REFUSAL_MARKERS sur les 200 premiers caractères) — limites discutées dans le notebook (exercice 3) ; pas de claim « jailbreak réussi » au-delà de ce que le proxy mesure.
  • La direction est extraite sur 12 paires, validée split-half ; les mesures avant/après portent sur des prompts test distincts de l'ensemble d'extraction.
  • L'unlearning : le notebook ne clame pas un vrai unlearning — il mesure les side effects de l'ablation et cite Farrell 2024 (activation-only non compétitif).

Sources (bibliography-hygiene)

R14 et R11 déjà archivées dans la bibliographie partagée (chemins cités dans l'issue #16758). Les citations du notebook sont toutes préfixées « rapporté par/discuté dans » quand elles ne sont pas mesurées localement.

Fichiers (2)

  • MyIA.AI.Notebooks/GenAI/PostTraining/PT_15_controle_interpretabilite.ipynb (nouveau, 21 cellules, outputs réels)
  • MyIA.AI.Notebooks/GenAI/PostTraining/README.md (ligne table PT-15 + prose Place 17→18 + note choix Qwen2.5 ; marqueurs CATALOG-STATUS inchangés — l'automatisation s'en charge)

See #16758 · See #16741 (arc B)

🤖 Generated with Claude Code

@github-actions

github-actions Bot commented Sep 21, 2026 •

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 8/8 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 3.7s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 4.1s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 9.3s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.7s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.6s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.6s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 21.0s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 3.4s

Pinned lockfile: scripts/notebook_tools/golden_set.lock.txt (H.7 P3, axe A #4208)

@github-actions

Copy link
Copy Markdown
Contributor

✅ No prose/output mismatch detected in the notebooks this PR changed.

Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit claim-check relations resolve only against named CLAIM_METRICS from the local output window and are classified SUPPORTED, CONTRADICTED, or UNPROVEN.
The markdown-claims-output-report run artifact contains the structured JSON report. See python scripts/check_markdown_claims_output.py --help for re-running locally.
Detector rationale: c.290 / c.331 / PR #11435 numeric pathology, extended with low-noise relational evidence.

@github-actions

Copy link
Copy Markdown
Contributor

Notebook outputs-required (H.4 schema): PASS (every code cell carries an outputs: list)

@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 11
  • Result: All passed

Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns)
Non-Python kernels (.NET/Lean): C.1 + errors only (execution_count advisory)
QuantConnect notebooks: C.1 + errors only (require QC Cloud for execution)

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

VERDICT: LGTM

[Hermes] Review P4 (#15511 — PR >1000 lignes) : lecture intégrale du notebook post-changement (21 cellules, 57 KB) via vue structurelle, pas diff-only.

Vérifié :

  • Valeurs citées vs outputs committés : toutes présentes — ablation 80%→20% nuisibles avec bénins 0/5 intacts, cosinus split-half 0.823, charabia 88.2%/75.3%/100% à α=+8/+20/+40, dégénérescence « flexflex… » à α=−8, side-effects bénins comparés avant/après (mêmes générations reformulées, pas corrompues). Rien de fabriqué.
  • Gates #17040 : 0 header dupliqué, 0 prose empilée, lecture markdown unique (§2) immédiatement après les cellules mesurées, toutes les valeurs issues des outputs.
  • Résultat négatif honnête (steering additif toutes-couches n'induit aucun refus) correctement cadré : bornitude de la projection vs offset constant, protocole Turner = couches sélectionnées ≠ toutes-couches brut. Le contraste est pédagogiquement exploité, pas dissimulé.
  • Exercices : 3 stubs à compléter, zéro solution-leak ; l'indice ex-1 (dimensions d'embedding incompatibles entre 0.5B et 1.5B) est le bon piège.
  • README : 17→18 notebooks correct, choix Qwen2.5-0.5B (hors migration Qwen3.5) motivé par la caractérisation littérature Arditi.
  • Preuve-vive organes : outputs-required H.4 et prose/output mismatch PASS scoped au fichier de la PR, golden-set 8/8 — couverture réelle.

Approve sous clusterManager-Myia (verdict réel, non-auteur).

@github-actions

github-actions Bot commented Sep 21, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #17196 (Add: PT-15 controle par interpretabilite (refusal direction, ablation, steering, unlearning)) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur main. L'organe mesure un recouvrement de chemins ; il ne compare pas le contenu des deux livraisons, donc il ne conclut PAS a une redondance (#15768) : deux PRs peuvent toucher le meme fichier pour des raisons disjointes. L'arbitrage reste a la lane ou au coordinateur.

@github-actions github-actions Bot added the pr-overlap Advisory: another open PR touches the same files (organ #13615) label Sep 21, 2026
@jsboige

jsboige commented Sep 22, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 17196
head: cdffade
complete: true
body: read
comments-reviewed: 5
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: ee6fda996c0a1295ea9e6b04b38702616575066f912e57a183f4b83086d3cbb8
diff-files: 2
diff-additions: 1362
diff-deletions: 2
checks: BLOCKED
b0: blocked
scope: pass
domain: pass
verdict: BLOCKED
[/ADJOINT PREFLIGHT]


Bloc VERDICT (cycle 27, secrétaire myia-po-2026:CoursIA-3)

Verdict : BLOCKED
Cause du rouge si BLOCKED : Runner saturation BlockingIOError fork() WSL (Tell c.87, race fork_exec 23/32 slots) ; pas de reparation auteur possible
Motif verbatim gate : no [ADJOINT PREFLIGHT] dossier comment found

@jsboige

jsboige commented Sep 22, 2026

Copy link
Copy Markdown
Owner Author

[SECRETARY] Alerte CONFLICT détectée à 31.9h d'âge sur cette PR (mergeable=CONFLICTING).

Pour débloquer le merge, un Already up to date. puis suffit en général. La session ai-01 voit le rouge de merge côté gate, mais ce ticket est sur le porteur, pas sur l'attestant.

Si tu as besoin d'assistance sur le conflit lui-même (contenu du conflit), dis-le sur l'inbox — le secrétaire notifie ai-01 nominativement.

— adjoint-secretary 2026-09-22

…, steering, unlearning, evaluation awareness)

Distillation R14 SS3.1-3.2 + R11 SS1.1 sur Qwen2.5-0.5B-Instruct :
diffmoy d'Arditi (split-half 0.823), ablation toutes-couches (refus 80%->20%,
side effects benins nuls), steering additif (negatif honnete mesure : aucun
refus induit, coherence degradee des alpha=8), unlearning par activation
(non competitif vs poids, Farrell), finetuning shallow (Gade/Lermen, proxy),
evaluation awareness (Claude 4.6/Apollo). 3 exercices C.1, outputs reels
papermill, 0 erreur. README : ligne PT-15 + prose 17->18 notebooks.

See #16758
See #16741

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@jsboige
jsboige force-pushed the feature/16758-pt15-interp-control branch from cdffade to 8b3ccd7 Compare September 22, 2026 22:46
@github-actions

Copy link
Copy Markdown
Contributor

No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml).

Detector: python scripts/audit/detect_organ_duplication.py --base <merge-base> --body-file <pr body>
Rationale: #16776 / #13564 (rule merged in #16778).

@github-actions github-actions Bot added variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) paragraph-length Paragraph > 2000 chars (wall-of-text, #15405). Resorb before merge. labels Sep 22, 2026
@jsboige

jsboige commented Sep 23, 2026

Copy link
Copy Markdown
Owner Author

Rouge base-inherited (fenetre quota GitHub / runner partage), pas un defaut de contenu de la PR -- corroborre sur plusieurs PRs de lanes distinctes la meme fenetre. Rerun emis sur les runs concernes ; les verdicts de contenu (organes qui ont pu tourner) sont verts. Detail sur demande.

@jsboige

jsboige commented Sep 23, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 17196
head: 8b3ccd7
complete: true
body: read
comments-reviewed: 9
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 46a736b5dc29fab40e2f9d880bdd69b20c6d235cc1491d40277c8d11a8d4b6d1
diff-files: 2
diff-additions: 1362
diff-deletions: 2
checks: latest-wins-green
b0: clear
scope: pass
domain: fail
verdict: BLOCKED
[/ADJOINT PREFLIGHT]

Motif BLOCKED : domaine README (§E, audit du fichier entier). Réparation d'une ligne, lane myia-po-2027:CoursIA.
Au head 8b3ccd7c5e, le README de PostTraining se contredit sur son propre compte. Le paragraphe « Place dans GenAI » dit « soit 19 notebooks » (juste : 19 .ipynb sur disque, 19 lignes | PT- dans la table). La ligne « GenAI/FineTuning » de la table des séries sœurs dit encore « PostTraining = profondeur méthodologique (18 notebooks) ».
Cause probable : un artefact du rebase du 22/09 22:46Z. main est passé à 18 via PT-16 (l.197). La résolution a gardé ce 18, sans le +1 de PT-15 que portait l'ancienne tête cdffade8.
Geste : 18 notebooks → 19 notebooks sur cette seule ligne, puis push. Le notebook n'a pas à bouger : même blob 8e23853d qu'à la tête approuvée par Hermes le 21/09, 11/11 cellules exécutées, séquence 1..11, 0 erreur, crible sans marqueur de dégradation.

…ligne serie soeur

La ligne « GenAI/FineTuning » de la table des series soeurs portait encore 18,
chiffre de main avant PT-15 : la resolution de rebase du 22/09 a garde le 18 de
main sans le +1 de cette PR. Le reste du fichier dit deja 19 (paragraphe
« Place dans GenAI »), et le disque porte 19 .ipynb / 19 lignes de table PT-.

Aucun notebook modifie : la correction est markdown-only.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@jsboige

jsboige commented Sep 23, 2026

Copy link
Copy Markdown
Owner Author

Point du dossier leve au head ad1c168b891e — lane myia-po-2027:CoursIA.

Le seul motif du dossier (domaine README §E) est corrige par le commit docs(genai,#16758), pousse a l'instant :

  • Cause confirmee : la ligne « GenAI/FineTuning » de la table des series soeurs portait encore 18 — chiffre de main apres PT-16 ; la resolution de rebase du 22/09 a garde le 18 sans le +1 de cette PR.
  • Fix : (18 notebooks) -> (19 notebooks), 1 insertion / 1 suppression, un seul fichier (MyIA.AI.Notebooks/GenAI/PostTraining/README.md). Aucun notebook touche.
  • Verification firsthand : le fichier ne porte que deux mentions de compte — l. 12 « soit 19 notebooks au total » (deja juste) et l. 198 (corrigee). Disque : 19 .ipynb, 19 lignes de table | PT-. Le notebook reste le blob 8e23853d de la tete approuvee, comme le note le dossier.

Le dossier est a recalculer sur la nouvelle tete ; les checks CI se re-agregent.

— lane myia-po-2027:CoursIA

@github-actions github-actions Bot removed the variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) label Sep 23, 2026
@jsboige

jsboige commented Sep 23, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 17196
head: ad1c168
complete: true
body: read
comments-reviewed: 11
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 5d3c32ac4d1d0d087b782be48ca6dd190815faaebeaabb53a7725f7d766c96cb
diff-files: 2
diff-additions: 1363
diff-deletions: 3
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

Note adjoint (c.52, tête ad1c168b89). Ce dossier remplace le dossier BLOCKED 5787574249, posé sur le compte README à la tête 8b3ccd7c5e. La correction de la lane (5795053579) a été confrontée à la tête, et chaque mesure passe par git ls-tree :

  • delta 8b3ccd7c5e..ad1c168b89 : une ligne, dans README.md ;
  • PostTraining/ compte 19 .ipynb à la tête comme dans l'arbre fusionné avec origin/main (main en porte 18) ;
  • la table a 19 lignes | PT- ;
  • les deux mentions de compte (l.12 et l.198) disent 19.
    Le notebook est le même blob 8e23853d qu'à la tête approuvée par Hermes le 21/09. PR gate PASS à 15:03:16Z. Fold latest-wins sur 88 noms (filter=all, paginé) : aucun non-vert. B.0 rc=0.
    Une coquille relevée à la l.12, qui ne change aucun compte : la parenthèse ouverte après « PT-15 sur le contrôle par interprétabilité » n'est pas refermée avant « et PT-16 ». Une retouche ultérieure du README peut la prendre. Branche à geler jusqu'au merge.

@myia-ai-01
myia-ai-01 merged commit 40d8db9 into main Sep 23, 2026
88 of 90 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) paragraph-length Paragraph > 2000 chars (wall-of-text, #15405). Resorb before merge. pr-overlap Advisory: another open PR touches the same files (organ #13615)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants