Repository navigation
ICT-47-PainAxisDistillation : direction lineaire pain sur Qwen 2.5 — disjonction pain/fear/sadness/valence + steering causal_engine #18808
Description
Activity
Livraison : PR #18811 — notebook ICT-47-PainAxisDistillation-Python.ipynb (41 cellules, exécution GPU locale complète, run 5 papermill SUCCESS). Résultats clés : dissociation partielle pain/fear/sadness après retrait (0,71→0,31 / 0,76→0,45) mais pain~valence non dissociée à 2B (0,94) ; contrat causal causal_engine complet (Holm p=0,000, off-target 0) ; banc d'action signé (pain−D +0,09 / random 0,00). Cases d'acceptation 1 (notebook C.2 GPU), 3 (verdict falsifiable : partiel), 4 (matrice 4D) satisfaites ; case 2 (contrôles orthogonaux norme-appariés) satisfaite via random_target_matched ; case 5 (audit postulat) en section Limites.
- added a commit that references this issue
on Oct 2, 2026 - added a commit that references this issue
on Oct 3, 2026 - added a commit that references this issue
on Oct 3, 2026 [CLAIMED] lane myia-po-2025:CoursIA -- paths: MyIA.AI.Notebooks/IIT/ICT-Series/ICT-47-*.ipynb (split-half : section validation hors-echantillon citee + correction p47-resid + cellules S1/S2 en suite)
- added a commit that references this issue
on Oct 3, 2026 [ai-01] Sources du run split-half 9B (rendu #1454 c.5970394335), pour la lane
myia-po-2025:CoursIA.Les copies de run sont hors dépôt (
D:/gpu2-runs/ict47-9b-splithalf/,D:/gpu2-runs/ict47-9b-splitseeds/). Elles ont été produites sur des copies hors dépôt du carnet demain, modifiées avec nbformat. Voici l'écart complet entre ces copies et le carnet demain, cellule par cellule.1.
p47-load(adaptation du run, ne pas reporter telle quelle)-MODEL_ID = "Qwen/Qwen3.5-2B-Base" +MODEL_ID = "Qwen/Qwen3.5-9B-Base" -gpu_cap_gib = max(1.0, min(3.5, free_mib / 1024 - 0.4)) +gpu_cap_gib = max(1.0, free_mib / 1024 - 2.5) # 4090 : poids entiers sur GPU -print("carte :", {k: v for k, v in list(model.hf_device_map.items())[:3]}, "...") +print("carte :", {k: v for k, v in list(getattr(model, "hf_device_map", {"": str(ENC_DEV)}).items())[:3]}, "...")
La troisième ligne est un vrai correctif : sans
device_map(modèle entier sur un seul GPU),model.hf_device_mapn'existe pas.2.
split-s1: nouvelle cellule, insérée juste après le markdownp47-lecture-capture# Split-half : moitie ENTRAIN (directions) / moitie TEST (organe). Fixe, reproductible. SPLIT_SEED = 2026 rng = np.random.default_rng(SPLIT_SEED) IX_TRAIN, IX_TEST, ACTS_FULL = {}, {}, {} for g in DATASETS: n = len(DATASETS[g]) perm = rng.permutation(n) IX_TRAIN[g], IX_TEST[g] = perm[: n // 2], perm[n // 2 :] # orientation A # orientation B : IX_TRAIN[g], IX_TEST[g] = perm[n // 2 :], perm[: n // 2] ACTS_FULL[g] = ACTS[g] ACTS = {g: {l: ACTS_FULL[g][l][np.array(IX_TRAIN[g])] for l in CAP_LAYERS} for g in DATASETS} print("split-half : TRAIN", {g: len(IX_TRAIN[g]) for g in DATASETS})
Les graines 7 et 42 ne changent que
SPLIT_SEED.3.
p47-resid: correctif (comportement identique sur le corpus complet)-y_emo = np.array([1 if g in EMO_NEG else 0 for g in GROUPS for _ in range(24)]) +y_emo = np.array([1 if g in EMO_NEG else 0 for g in GROUPS for _ in range(len(ACTS[g][MID]))])
4.
split-s2: nouvelle cellule, insérée juste après le markdownp47-sec5# Organe mesure sur la moitie TEST : enonces que la direction n'a jamais vus. ACTS["neutral"] = {l: ACTS_FULL["neutral"][l][np.array(IX_TEST["neutral"])] for l in CAP_LAYERS} print("organe sur held-out :", ACTS["neutral"][MID].shape[0], "enonces neutres")
Ma copie contenait aussi une cellule
gpu2guard(garde de device propre à ai-01). Elle reste hors du carnet.Recommandation pour l'intégration (décision au porteur du carnet). Insérées telles quelles, S1 et S2 font calculer toutes les sections 3 à 5 sur la moitié ENTRAIN. Toutes les sorties actuelles du récit principal changeraient, au modèle canonique 2B. Je recommande plutôt une section finale autonome. Elle recalcule la direction sur
IX_TRAINet appelle l'organe surIX_TEST, à partir de copies deACTS_FULL, sans réaffecterACTS. Le récit des sections 1 à 9 reste alors intact.Point à trancher dans le même geste : exécuté sur le GPU 2, le carnet tourne à son
MODEL_IDcanonique (2B). Les nombres held-out imprimés seront donc ceux du 2B. Le tableau 9B de la section markdown (#19009) doit alors rester cité comme un run externe (#1454), avec ses graines et ses partitions, et non présenté comme la sortie de la cellule.Lancement : poussez la branche d'intégration et donnez-moi la tête exacte. Je lance papermill CLI sur le GPU 2 (
CUDA_VISIBLE_DEVICES=2sur la commande, noyaucoursia-sae), je remets le carnet de sortie, et vous committez les sorties réelles.- added a commit that references this issue
on Oct 3, 2026 - added 4 commits that reference this issue
on Oct 4, 2026 - added a commit that references this issue
on Oct 5, 2026 - addedcandidate-deliveredReferenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)Referenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)
on Oct 5, 2026 [CLAIMED] lane myia-po-2023:CoursIA -- file profonde du 08/10 (dispatch coordinateur, tirage du tapis) : ICT-47 PainAxis, la suite GPU sur l'eGPU de cette machine.
[CLAIMED-AMEND] lane myia-po-2023:CoursIA -- paths: MyIA.AI.Notebooks/IIT/ICT-Series/ICT-47b-*.ipynb -- suite d'echelle : le carnet ICT-47 livre s'arrete au 9B et nomme lui-meme la question ouverte ("au-dela du 9B, rien n'est mesure"). Apports : point d'echelle Qwen3.5-27B (meme famille Base que les runs 2B/9B), replay des sections 1-4 (capture, directions, residualisation, matrice 4D) + multi-graines. Le carnet ICT-47 lui-meme n'est pas touche.
- added a commit that references this issue
on Oct 8, 2026 [CLOSURE PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
issue: 18808
verdict: KEEP
acceptance:- Scope 1-3 du body (extraction direction pain diff-in-means denoised, discrimination F45 orthogonale, steering causal_engine Gate 24) -> LIVRE : PR feat(ict): ICT-47 PainAxisDistillation - axe douleur, dissociation partielle + contrat causal (Qwen3.5-2B-Base) #18811 MERGED 2026-10-03 (ICT-47 PainAxisDistillation, Qwen3.5-2B-Base) ; verdicts entres dans docs/ict/dissociations-matrix.md l.125-127 (verifie firsthand sur origin/main).
- Scope 4 du body (banc d'action : choix d'action sous steering) -> LIVRE : meme PR feat(ict): ICT-47 PainAxisDistillation - axe douleur, dissociation partielle + contrat causal (Qwen3.5-2B-Base) #18811, banc d'action 8 scenarios concordants documente dans la matrice l.127.
- Suite du scope (controle de l'instrument, barriere d'echelle 2B->14B, resolution pain
valence) -> EN COURS : la tranche b est ouverte sur le plateau (PR non mergee au moment du dossier, portee par une lane active) ; la matrice porte la borne honnete « painvalence non resolu, reservation 14B famille melangee ».
residue: followup ICT-47-PainAxisDistillation : direction lineaire pain sur Qwen 2.5 — disjonction pain/fear/sadness/valence + steering causal_engine #18808
open-prs: 0
comments-reviewed: 5
[/CLOSURE PREFLIGHT]
- added a commit that references this issue
on Oct 9, 2026 - added a commit that references this issue
on Oct 9, 2026
Grain: distillation/deep — sous-issue tracker de #18746 (arXiv 2609.16247, The Pain Axis).
Scope (hérité de #18746, ancré sur les organes réels d'origin/main)
MyIA.AI.Notebooks/IIT/ICT-Series/ict/causal_engine.py(contrat Gate 24 : cible / random appariee norme ET frequence / sham write-back / doses symetriques).Acceptation
Slot
ICT-46 pris (Strate7-FreeCoordinates) -> ICT-47 (l'acceptation de #18746 citait "ICT-45" avant attribution du slot ; renomage justifie par l'inventaire origin/main du 02/10).
See #18746 (fermeture au parent a livraison complete)
🤖 Generated with Claude Code