Skip to content

fix(probas,#13036): sélection K exécutée twin Infer.NET-PyMC - #13479

Closed
jsboige wants to merge 1 commit into
mainfrom
fix/c650-13036-probas
Closed

jsboige wants to merge 1 commit into
mainfrom
fix/c650-13036-probas

Conversation

@jsboige

@jsboige jsboige commented Aug 29, 2026 •

Copy link
Copy Markdown
Owner

Doublon structurel avec #13472 — fermeture

#13472 (livrée 2026-08-29T08:22Z par jsboige sur branche feature/13036-lda-topic-selection) précède cette PR sur la même substance (#13036 sélection K twin Infer.NET-PyMC) et est plus complète :

  • Infer-11 : +858/-1666 (substance + suppression du stub Console.WriteLine("Exercice a completer"))
  • PyMC-11 : +1043/-340
  • twin_pair : +8/-0
  • validate_pr_notebooks 2/2 PASS (cette PR : 1/2 PASS PyMC, Infer-11 ré-exécution différée po-2024)
  • Infer-11 VMP ×10 fits corpus-level dotnet_executor 19/19 SUCCESS (cette PR : ré-exécution différée)

Tell c.645-L1 ★ NEW doublon-structurel-fail-open-13336 (cas Tweety-3 #12948 vs #12980) : PR lane antérieure + PR lane postérieure même substance = _fetch_pr_state gh 2.83.2 fail-open, mécanisme anti-doublon inerte. 2ᵉ cas documenté sur ce ticket — promote vers ★★ justifié.

Action : fermer cette PR en See #13472 (substance absorbée). Pas de merge. Pas de push complémentaire.

Body PR mis à jour : retiré le claim Closes #13036 (déjà clos par #13472).

Grain: DEEP/notebook-python — lane myia-po-2023:CoursIA-2 — prev: DEEP/notebook-python #13036

## Summary

Implémente le protocole de **sélection du nombre de topics** dans le twin LDA Infer.NET-PyMC, exigé par #13036. Le notebook fixait K=3 (vérité génératrice du corpus section 2) sans exécuter de protocole de choix K ; la nouvelle section 8 construit un corpus reproductible à 4 thèmes, exécute la grille K=2..6 avec priors asymétriques guidés, et calcule deux critères (cohérence UMass + log-vraisemblance/perplexité hold-out) sur les topics effectivement appris (sans phi simulée ni étiquettes cachées).

## Périmètre du diff

- `MyIA.AI.Notebooks/Probas/PyMC/PyMC-11-Topic-Models.ipynb` : ajout d'une section 8 (7 cellules : 1 md + 6 code) avant la conclusion. **Cellules ré-exécutées via Papermill SUCCESS 195s** (20 cellules SUCCESS, 0 FAIL). Résultats : **K=5 UMass (max) / K=4 Perplexité (min, = vérité génératrice)**. Verdict divergence honest (UMass favorise la cohésion locale, perplexité favorise la capacité prédictive).
- `MyIA.AI.Notebooks/Probas/Infer/Infer-11-Topic-Models.ipynb` : ajout d'une section 8 (6 cellules : 1 md + 5 code) avant la conclusion. **Substance ajoutée mais ré-exécution non aboutie dans ce cycle** — le bootstrap nuget du kernel .NET Interactive a dépassé le timeout 15min (SOTA Prong A voie b : RECOVERABLE-MACHINE vers po-2024 ou ai-01). Code écrit est le **vrai outil SOTA Infer.NET** (VMP / Microsoft.ML.Probabilistic.Compiler avec priors asymétriques guidés + grid K + cohérence UMass + log-lik hold-out), pas une réimplémentation dégradée. Section transparente : cellules avec `execution_count: null` à ré-exécuter sur machine GPU-equipped ou worker CPU-only avec kernel .NET configuré.
- `scripts/notebook_tools/twin_pairs.d/probas-11-topic-models.yaml` : audit `2026-08-29` ajouté en tête de la liste `audits:` (cf `python scripts/notebook_tools/check_twin_parity.py --update --pair "Probas-11 Topic-Models" --by "myia-po-2023:CoursIA-2"` attesté).

## Critères d'acceptation (issue #13036)

| # | Critère | Statut |
|---|---|---|
| 1 | Corpus reproductible avec structure thématique connue | OK (12 mots, 12 docs, 4 thèmes) |
| 2 | Modèles concurrents K=2..6 ajustés avec vrai moteur | OK PyMC (NUTS) / à exécuter Infer.NET (VMP) |
| 3 | Cohérence documentée sur topics effectivement appris | OK (UMass, sans phi simulée ni labels) |
| 4 | Mesure prédictive ou de reconstruction hors échantillon | OK (perplexité hold-out 20% PyMC / log-lik hold-out Infer.NET) |
| 5 | Top-mots + redondance/fragmentation par K | OK (top-5 mots par topic) |
| 6 | Comparaison sélection métrique vs vérité génératrice | OK (verdict divergence K=5 vs K=4 vs K=4 truth PyMC) |
| 7 | Distinction inférence vs comptage/paramètres générateurs | OK (sections 1-7 utilisent encore K=3 + ground truth, section 8 protocole complet) |
| 8 | Interprétation immédiate + verdict honnête | OK (verdict "DIVERGENT" PyMC) |
| 9 | Parité pédagogique Infer.NET/PyMC | OK (mêmes critères, mêmes amorces, structure twin) |
| 10 | Ré-exécution intégrale avec outputs réels | PARTIEL (PyMC OK 195s, Infer.NET à ré-exécuter) |
| 11 | Mise à jour registre twin canonique si cellules partagées changent | OK (audit 2026-08-29) |

## Validation

- **PyMC-11 ré-exécuté via Papermill** : `python scripts/notebook_tools/` + `mcp__jupyter-papermill__execute_notebook(mode="sync")` 195.8s, **20/20 cellules SUCCESS, 0 FAIL** (kernel python3).
- **Twin parity attestée** : `python scripts/notebook_tools/check_twin_parity.py --update --pair "Probas-11 Topic-Models" --by "myia-po-2023:CoursIA-2"` (rappel pratique Tell c.635-L1 ★★ variante twin parity c.647).
- **Diff markdown + code** : 1072 insertions, 41 deletions, 3 fichiers modifiés (sous seuil CHANGES_REQUESTED A : 3000 lignes).
- **C.2 OK** : cellules PyMC-11 ré-exécutées, `execution_count` non null + outputs réels cohérents. **Infer-11 en attente** : cellules section 8 avec `execution_count: null` (transparence — pas de scrub de sortie, juste déclaration honnête de non-exécution kernel .NET ce cycle).

## Résiduel

- **Infer-11 section 8 à ré-exécuter** sur machine avec kernel .NET Interactive fonctionnel (po-2024 GPU-equipped ou ai-01). La substance (code VMP/EP Infer.NET, priors asymétriques guidés, grid K, cohérence UMass, log-lik hold-out) est en place — c'est de l'exécution, pas de l'écriture.
- **Suivi à ouvrir** si non résolu d'ici 2 cycles : "Infer-11 section 8 ré-exécution sur po-2024".

See #13036
@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Detector abstained (merge-base introuvable, shallow fetch or unanchored branch).

c.415 (#11873): scope = notebooks CHANGED in this PR, not the whole corpus.
See python scripts/check_markdown_claims_output.py --help for re-running locally.
Detector rationale: c.290 / c.331 / PR #11435 pathologie.

@jsboige

jsboige commented Aug 29, 2026

Copy link
Copy Markdown
Owner Author

Doublon structurel avec #13472 (livrée 08:22Z, antérieure et plus complète). Fermeture en . Tell c.645-L1 ★ NEW cas 2/2 (Tweety-3 + Probas-11).

@jsboige jsboige closed this Aug 29, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: FAIL

  • Notebooks checked: 2
  • Code cells validated: 41
  • Result: 1 notebook(s) with violations

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)

Violations

MyIA.AI.Notebooks/Probas/Infer/Infer-11-Topic-Models.ipynb (21 cells, .net-csharp)

How to fix

# Re-execute the notebook
python scripts/notebook_tools/notebook_tools.py execute <path>

@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 4.5s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 4.1s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 5.1s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.7s
Search-1-StateSpace.ipynb ✅ SUCCESS 3.7s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.6s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 25.3s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 3.3s

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

@github-actions github-actions Bot added the variation-tag-missing PR sans tag Grain: <TIER>/<GENRE> (variation-protocol) label Aug 29, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Grain tag obligatoire (#10045, bloquant).

Grain tag absent (no Grain: / in body).

Pour passer ce gate, le body doit porter en tete une ligne de la forme :

Grain: <DEEP|MED|LIGHT>/<genre> -- lane <machine:workspace> -- prev: <TIER>/<GENRE> #<PR>

Le <genre> doit figurer dans l'enumeration §1 de variation-protocol.md (lean, qc, training, genai, notebook-python, notebook-dotnet, notebook-lean, slides, docs, guard, refactor, ledger, readme, test, tooling, research-code). Les 3 formes tolerées par l'extracteur : Grain: TIER/GENRE, **Grain:** TIER/GENRE, ## Grain + tag sur la ligne suivante. La lane doit suivre le format <machine>:<workspace> (cf. lane-claim-protocol.md).

@jsboige
jsboige deleted the fix/c650-13036-probas branch October 6, 2026 00:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

variation-tag-missing PR sans tag Grain: <TIER>/<GENRE> (variation-protocol)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant