Skip to content

feat(ml,#16137): 3.6c protocole MMD multi-seeds/budgets — verdict INCONCLUSIVE du rang linéaire/cosinus - #16216

Merged
myia-ai-01 merged 1 commit into
mainfrom
feature/16137-mmd-sigma-rank
Sep 15, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
feature/16137-mmd-sigma-rank

Conversation

@jsboige

@jsboige jsboige commented Sep 14, 2026

Copy link
Copy Markdown
Owner

Contexte

#16137 : au run témoin du notebook, le rang linéaire/cosinus à la MMD ne survit pas au choix de bande passante — σ = 0,5 donne « cosinus meilleur », σ = 1 et 2 donnent « linéaire meilleur ». Un seed unique, un budget unique, trois sigmas : l'instrument ne tranche pas. Ce PR ajoute le protocole qui tranche, et écrit le verdict honnêtement.

Protocole ajouté (section 4.1)

  • 5 bandes passantes σ ∈ {0,25 ; 0,5 ; 1 ; 2 ; 4} — plus d'une décade, le rang reporté à chacune ;
  • 4 seeds (0, 1, 7, 42) par schedule — la variance d'entraînement est mesurée ;
  • 2 budgets (12 puis 24 epochs) — distinguer « converge plus lentement » de « converge moins bien » ;
  • 16 entraînements + 16 échantillonnages (n = 1024) au total, médiane des 4 seeds par case (schedule, budget, σ) ;
  • règle déclarée avant la mesure : un schedule ne gagne que s'il domine sur toute la grille budget × σ, sinon verdict INCONCLUSIVE — le verdict est calculé dans la cellule (jamais en dur dans le markdown), donc toujours cohérent avec le tableau imprimé ;
  • carte budget × σ (figure) : le vainqueur de chaque case se lit d'un coup d'œil.

Changements

  • Cellule entrainer (18) : paramètre seed=SEED (seeds torch/numpy/CUDA au démarrage de la fonction). Comportement inchangé pour les appels existants — le défaut est le SEED global d'avant.
  • Nouvelles cellules 31–33 : markdown 4.1 (protocole + règle), sweep (16 runs), agrégation/verdict (médianes, rang par case, écart 12→24 ep à σ = 1, carte).
  • Conclusion (cellule 34) réécrite : porte le verdict mesuré et la dépendance au noyau (critère 5 de l'issue) — le classement du tableau mono-seed est explicitement conditionnel à l'instrument.

Mesure (passe réelle, GPU RTX 3090)

Verdict mesuré par la cellule (passe finale, commise) : INCONCLUSIVE (4 cases linéaire / 6 cases cosinus).

budget σ linéaire cosinus vainqueur
12 0,25 0,00198 0,00197 cosinus
12 0,50 0,00245 0,00237 cosinus
12 1,00 0,00805 0,00911 linéaire
12 2,00 0,02087 0,02359 linéaire
12 4,00 0,01241 0,01642 linéaire
24 0,25 0,00198 0,00197 cosinus
24 0,50 0,00235 0,00233 cosinus
24 1,00 0,00661 0,00538 cosinus
24 2,00 0,01774 0,01604 cosinus
24 4,00 0,01116 0,01380 linéaire

Lecture : à 12 epochs le linéaire garde σ ≥ 1 ; à 24 epochs le cosinus prend tout σ ≤ 2 et ne cède que σ = 4 ; σ = 1 bascule avec le budget (écart cosinus−linéaire : +0,00107 à 12 ep → −0,00123 à 24 ep — convergence plus lente, pas moins bonne). 16 entraînements + échantillonnages en 17,7 min ; au budget 12, le run cosinus seed 42 s'effondre à σ = 4 (MMD ≈ 0,31 contre ≈ 0,01–0,02 pour les autres seeds) — la médiane absorbe le point sans changer le vainqueur de la case.

Reproductibilité (2 passes complètes, mêmes seeds) : le verdict reste INCONCLUSIVE aux deux passes, mais le décompte passe de 5–5 à 4–6 — la case (24 ep, σ = 2) a changé de camp et les médianes se déplacent d'environ 10⁻³. Les marges qui décident les cases sont sous la variabilité run-à-run : c'est une preuve de plus que le verdict honnête est INCONCLUSIVE, et cette observation est écrite dans la conclusion du notebook.

Validation

  • Papermill end-to-end (2 passes, venv trl-probe, GPU) : 0 erreur, notebook commis avec outputs (EXEC_PROVED).
  • C.1 : grep -nE "raise NotImplementedError|assert False|1/0" → 0 sur le notebook.
  • Scanner md tables (scan_md_table_syntax.py) sur le notebook → 0 findings.
  • validate_pr_notebooks.py → verdict EXEC_PROVED attendu.
  • Exercices (9/14/19) intouchés : 3 stubs présents.

Périmètre : MyIA.AI.Notebooks/ML/DataScienceWithAgents/03-DeepLearning/3.6c-Modeles-Generatifs-Diffusion-from-scratch.ipynb uniquement.

Grain: DEEP/notebook-python — lane myia-po-2023:CoursIA — prev: MED/tooling #16209

Closes #16137

🤖 Generated with Claude Code

…NCLUSIVE

Section 4.1 : 5 sigmas (0,25-4) x 4 seeds (0/1/7/42) x 2 budgets (12/24 ep),
medianes des 4 seeds par case (schedule, budget, sigma), regle declaree avant
mesure (domination sur toute la grille sinon INCONCLUSIVE), verdict calcule
dans la cellule (jamais en dur dans le markdown). entrainer() gagne un
parametre seed (defaut = SEED global, comportement inchange pour les appels
existants). Conclusion reecrite : verdict mesure + dependance au noyau.

Verdict commis (passe finale, GPU 3090, 2 passes completes aux memes seeds) :
INCONCLUSIVE (4 cases lineaire / 6 cosinus). Une re-execution aux memes seeds
deplace les cases minces (decompte 5/5 puis 4/6, case 24ep/sigma2 changee de
camp) : les marges sont sous la variabilite run-a-run.

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

Copy link
Copy Markdown
Contributor

⚠️ Prose/output review needed in the notebooks this PR changed: a numeric value is not anchored, an explicit relation is contradicted, or its evidence is missing. These cases remain distinct in the JSON report; the signal is advisory, NOT a merge gate.

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.

@jsboige

jsboige commented Sep 14, 2026

Copy link
Copy Markdown
Owner Author

[DELIVERED] #16137 lane myia-po-2023:CoursIA

@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-po-2023:CoursIA` voit ces signaux actifs sur les mergees du jour (UTC 2026-09-14) :

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 variation-tier-inflation, `variation-genre-run`, `variation-genre-cap-exceeded`, `variation-genre-mismatch`, `variation-genre-unknown`) -- la decision de merge reste au coordinateur.

@github-actions

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 8.7s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 4.8s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 4.0s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 3.9s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.0s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.4s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 16.0s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.9s

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

@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: 21
  • 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)

@github-actions

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #16216 (feat(ml,#16137): 3.6c protocole MMD multi-seeds/budgets — verdict INCONCLUSIVE du rang linéaire/cosinus) 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.

@myia-ai-01 myia-ai-01 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.

Review qualifiante ai-01 au head exact e54270da7e6e02718998be2132c01751ccc4f0ba après lecture personnelle du body, de tous les commentaires, des reviews (aucune avant celle-ci), des threads inline et des 1 250 lignes du diff ; l'issue fermée #16137 et ses cinq critères ont également été lus.

Le protocole satisfait le scope annoncé : cinq bandes passantes couvrant plus d'une décade, quatre seeds {0,1,7,42}, deux budgets 12/24 epochs, médiane par case, et règle de domination déclarée avant la mesure. Les sorties réelles montrent 16 entraînements, les valeurs par seed, les dix médianes et le verdict calculé INCONCLUSIVE (4 cases lineaire / 6 cases cosinus). La conclusion expose explicitement la dépendance au noyau et la variabilité run-à-run au lieu de sur-vendre un gagnant. Le paramètre seed initialise torch, numpy et CUDA avant chaque entraînement ; le comportement des appels antérieurs reste porté par la valeur par défaut.

Les 21 cellules code sont exécutées avec sorties, zéro erreur ; C.1 et les trois exercices existants restent conformes. Le commentaire claim/output est advisory et la relation centrale est directement vérifiée dans les sorties ; la collision #16126 est terminale mais attendue, car cette PR prolonge le même notebook après le merge fondateur. Threads inline : 0. B.0 : rc=0 ; le commentaire [DELIVERED] post-commit a été lu et ne porte aucune réserve.

Verdict : APPROVED. Le merge reste séparé et conditionné au re-grounding instant-T.

@myia-ai-01
myia-ai-01 merged commit c86caf7 into main Sep 15, 2026
78 of 79 checks passed
jsboige added a commit that referenced this pull request Sep 16, 2026
…NCLUSIVE (#16216)


Section 4.1 : 5 sigmas (0,25-4) x 4 seeds (0/1/7/42) x 2 budgets (12/24 ep),
medianes des 4 seeds par case (schedule, budget, sigma), regle declaree avant
mesure (domination sur toute la grille sinon INCONCLUSIVE), verdict calcule
dans la cellule (jamais en dur dans le markdown). entrainer() gagne un
parametre seed (defaut = SEED global, comportement inchange pour les appels
existants). Conclusion reecrite : verdict mesure + dependance au noyau.

Verdict commis (passe finale, GPU 3090, 2 passes completes aux memes seeds) :
INCONCLUSIVE (4 cases lineaire / 6 cosinus). Une re-execution aux memes seeds
deplace les cases minces (decompte 5/5 puis 4/6, case 24ep/sigma2 changee de
camp) : les marges sont sous la variabilite run-a-run.

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(dl,#16056): 3.6c — trancher le classement linéaire vs cosinus, sous-déterminé par le noyau MMD

2 participants