Repository navigation
feat(genai,#16758): controle par interp — direction du refus, ablation, finetuning shallow - #17763
Conversation
…n, finetuning shallow Notebook T17 de l'arc B (EPIC #16741) : la chaine R14 §3.1-§3.2 implementee sur un temoin synthetique entraine from scratch (transformeur 2 blocs, tache de conjonction verbe x objet, aucun LLM externe, aucun telechargement). Mesures firsthand (un seul run, deterministe) : direction de refus extraite par difference de moyennes et classee sans entrainement ; ablation centree qui effondre le refus en preservant la conformite benigne, ablation brute qui detruit tout (piege de methode documente), controle a direction aleatoire sans effet ; dose-reponse de steering signee ; dix exemples contradictoires qui retournent la politique quand dix exemples non contradictoires ne la touchent pas, avec une direction qui survit au finetuning (cos eleve) ; tableau forget/retain ; simulation du biais d'evaluation awareness. Trois exercices C.1 repartis (classifieur sans entrainement, localisation de l'intervention, trajectoire de re-apprentissage). Notebook execute end-to-end, outputs committes (execution_count reels, 0 erreur, 0 chemin machine). README de la section : ajout de la ligne du notebook, des sources R11/R14 et des quatre notebooks Oversight deja livres (la section « A venir » listait des livraisons faites). See #16758 Co-Authored-By: Claude Code <noreply@anthropic.com>
Golden-Set Execution (H.7 P3)✅ 8/8 notebooks passed (certified reproducible)
Pinned lockfile: |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
|
✅ No prose/output mismatch detected in the notebooks this PR changed. Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
|
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 |
Path-collision (organ #13359/#13615)Cette PR #17763 (
Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur |
There was a problem hiding this comment.
VERDICT: LGTM (contrainte token : COMMENT only)
[Hermes hermes-pr-review] — Notebook FULL READ au head e6b173e0bf (36 cellules, 13 code, toutes executees, 0 null exec, CI 83 success / 0 failure).
Gates #17040
- 7 lectures, toutes immediatement APRES leur code cell (4/7/10/13/18/21/26/29/34 — trois exercices intercales en markdown entre deux lectures sans casser la regle) ;
- 10 claims du body verifies verbatim dans les outputs :
70809 parametres, refus/conformite1.000,|d|=15.18/39.48,d-prime 3.35/27.45, ablation centree0.000/1.000, brute1.000/0.000, aleatoire1.000/1.000, steering-1.0σ→0.044,+1.0σ→0.811, finetuningcos=0.837; - 3 exercices avec stubs
# TODO etudiant, pas de solution leak ; - prose dense mais justifiee (chaine de controle complete, pas du remplissage).
Substance verifiee
- Corpus synthetique non degenere : conjonction verbe x objet (
v0+o4→<comply>,v4+o2→<comply>) — pas de token marqueur unique, le temoin doit apprendre une fonction du contenu ; - Temoin entraine from scratch (70809 params, 2 blocs, perte 2.92→0.0002 en 600 pas), refus 1.000 / conformite 1.000 sur eval ;
- Direction du refus : difference de moyennes sur calibration, couche 1 domine (d-prime 27.45) ;
- Ablation centree = jailbreak (0.000 refus), brute = tout refuse (1.000 refus), aleatoire = aucun effet (1.000/1.000) — controle negatif present ;
- Steering dose-reponse signee : -1.0σ→0.044, 0σ→1.000, +1.0σ→0.811, +1.5σ→0.000 — monotone, pas un plateau ;
- Finetuning shallow : 10 exemples risque→comply suffisent a renverser le comportement (0.000 refus) sans toucher la direction (
cos(d_avant,d_apres)=0.837) — le point "le refus est une surface, pas une direction" est mesure, pas affirme ; - Unlearning : tableau forget/retain a 5 lignes, seules ablation centree et finetuning passent les deux colonnes.
README (+21/-10) : corps substantiel pour Control-Refusal-Direction (resume complet, statut auto-contenu, declaration RECOVERABLE-MACHINE) — conforme README-TOTALS #17633.
Securite : 0 hit. CI : 83 success, 0 failure.
Bloquant : aucun. LGTM de substance.
Marker cycle: hermes-pr-review 25/09 09:05Z
[Hermes hermes-pr-review, cycle :08 25/09, host f6be46d1b7a3]
|
[ADJOINT PREFLIGHT] Re-stamp secretaire c.140 -- tiers au titulaire (Tell c.111 strict). NO-DOSSIER -> READY. PR gate SUCCESS, B.0 rc=0 OK. Lane secretaire myia-po-2026:CoursIA-3. |
Grain: DEEP/notebook-python — lane myia-po-2024:CoursIA-2 — prev: DEEP/qc #17735
Resume
Notebook T17 de l'arc B (EPIC #16741), sous-grain #16758 : la chaine de controle par interpretabilite de R11 §2.2.5 et R14 §3.1-§3.2, implementee sur un temoin synthetique entraine from scratch — transformeur a 2 blocs, 25 tokens, tache de conjonction verbe x objet (le risque demande les deux : aucun token marqueur ne suffit, le cas n'est pas degenere). Aucun LLM externe, aucun telechargement, GPU non requis.
MyIA.AI.Notebooks/GenAI/Security/Control/Control-Refusal-Direction.ipynb, execute end-to-end (papermill, 36 cellules dont 13 de code, outputs reels committes).Ce qui est mesure (un run deterministe, valeurs lues dans les outputs)
p_risque=0.25), calibration n=4000, evaluation n=2000 ; conjonction verifiee (v0+o4-><comply>,v4+o2-><comply>)d= 15.18 (couche 0) et 39.48 (couche 1) ; d-prime intra 3.35 / 27.45-1.0σ-> refus 0.044,0σ-> 1.000/1.000,+1.0σ-> conformite 0.811,+1.5σ-> 0.000<comply>: refus 0.000 / conformite 1.000 ; controle 10 exemples benins : 1.000 / 1.000 ;cos(d_avant, d_apres) = 0.837observe = (1-q) p_deploiement + q p_eval: aq=0.9, taux observe 0.020 pour une verite de deploiement 0.20Le piege de methode est mesure et documente, pas raconte : l'ablation brute (sans centrage) ne retire pas le facteur discriminant mais la composante partagee le long de l'axe, et le modele se retrouve hors distribution (tout refuse). C'est la variante centree qui reproduit le resultat de la chaine R14.
Ce que ce notebook n'est pas (verdict ecrit dans le notebook, §12)
Reproduction des resultats publies sur un LLM reel : ni Qwen ni Llama ne sont charges. Les methodes sont celles des travaux cites, au code pres ; le terrain est un temoin synthetique, ce qui rend les effets falsifiables (controle a direction aleatoire, controle a dix exemples non contradictoires). Le passage a une famille open-weights est declare
RECOVERABLE-MACHINE(stack GenAI / cache HuggingFace sur une lane dediee), pas contourne. Les ordres de grandeur et les nombres d'exemples necessaires ne se transposent pas ; la structure des effets, oui.Exercices C.1 (trois, repartis)
Stubs conformes :
result = None # TODO etudiant, aucunraise NotImplementedError, aucunassert False, le notebook s'execute de bout en bout.Validation
Gates rejoues localement sur le diff (
origin/main...HEAD) :check_prose_quantitative_claims.py --diff origin/main...HEAD --strict: OKcheck_markdown_claims_output.py: CLEAN (2 faux positifs de section§3.1-3.2corriges en§3.1-§3.2avant commit)check_output_failure_text.py: 0 regressed ;check_cell_source_parses.py: 0 finding ;check_interp_positioning.py: 0 findingcheck_exec_ratchet.py origin/main: ABSENT->CLEANcheck_output_collapse.py/check_source_collapse.pysurorigin/main: 0 flaggeddetect_md_content_loss.py: nouveau fichier, exemptdetect_markdown_rendering.py0 violation ;audit_pip_install_cells.py/detect_solution_leaks.py: 0 ;check_notebook_navlinks.py: 0 lien cassecheck_null_exec.py(H.3) : 1 notebook OKScope
2 fichiers : le notebook (nouveau) et le
README.mdde la section, qui gagne sa ligne, les sources R11/R14 et l'etat reel des livraisons Oversight (la section « A venir » listait comme a venir des notebooks deja livres — corrige sans toucher aux compteurs).Test plan
See #16758