Skip to content

[PyMC/DecPyMC] 32 appels pm.sample sans chains explicite : sur la machine d'un étudiant, les sorties committées ne se reproduisent pas #18028

Description

@jsboige

Hors flotte — issue ouverte par la session cloud d'agnosticisme (cf. docs/reference/agent-cloud-agnosticisme.md). La réparation est à prendre par une lane de la flotte. See #17654, sous l'EPIC de parité Linux #10643.

Constat

Si chains n'est pas passé, PyMC 6 prend par défaut max(2, min(4, cpu_count() // 2)) chaînes. Le nombre de chaînes dépend donc de la machine :

Machine Chaînes par défaut
poste de la flotte (≥ 8 threads) 4
portable étudiant 4 threads, conteneur cloud 2

Les sorties committées indiquent Sampling 4 chains. Un étudiant qui relance le notebook obtient donc 2 chaînes, avec des ESS, des R-hat, des moyennes a posteriori et des temps différents de ce que la prose commente. Et ce, même avec random_seed=42 : la graine est découpée par chaîne.

Le cas a été mesuré et corrigé sur PyMC-02 dans #17962. Sur un conteneur de 4 threads, la re-exécution donnait 2 chaînes ; après ajout de chains=4, on retrouve les valeurs de la flotte.

Mesure (main 1c8d8841, 2026-09-27)

Sont comptés les appels pm.sample( dont la liste d'arguments ne contient pas chains, dans les cellules de code, hors _output.ipynb. Le compte se lit « appels sans chains / appels pm.sample du notebook ».

Notebook Sans chains
Probas/PyMC/PyMC-04-Bayesian-Networks.ipynb 6/6
Probas/PyMC/PyMC-08-TrueSkill.ipynb 5/5
Probas/PyMC/PyMC-10-Model-Selection.ipynb 5/5
Probas/PyMC/PyMC-09-Classification.ipynb 4/5
Probas/PyMC/PyMC-01-Setup.ipynb 2/4
Probas/PyMC/PyMC-03-Factor-Graphs.ipynb 2/2
Probas/PyMC/PyMC-07-Skills-IRT.ipynb 2/2
Probas/PyMC/PyMC-11-Topic-Models.ipynb 2/4
Probas/PyMC/PyMC-15-Recommenders.ipynb 1/7
Probas/DecisionTheory/DecPyMC/DecPyMC-1-Utility-Foundations.ipynb 1/4
Probas/DecisionTheory/DecPyMC/DecPyMC-4-Decision-Networks.ipynb 1/2
Probas/DecisionTheory/DecPyMC/DecPyMC-5-Value-Information.ipynb 1/2

Total : 32 appels répartis dans 12 notebooks. Les 19 autres notebooks de ces deux séries passent déjà chains explicitement.

Un appel pm.sample(**kwargs) dont le dictionnaire contient chains serait compté à tort. Il faut donc relire chaque cas avant de le corriger.

Recette (celle de #17962)

  1. Ajouter chains=4 à chaque appel listé. C'est la valeur que les sorties committées montrent déjà : sur la flotte, le résultat est identique bit pour bit, seule la machine de l'étudiant change de comportement. Si un appel vise une autre valeur par choix pédagogique, l'écrire en commentaire.
  2. Reporter chains=4 dans le markdown qui cite l'appel.
  3. Re-exécuter les notebooks modifiés (C.2, dans le périmètre de C.3). Les valeurs ne devraient pas bouger. Si elles bougent, la cause n'est pas le nombre de chaînes : appliquer le diagnostic C.4.
  4. Paires jumelles : python scripts/notebook_tools/check_twin_parity.py --per-pair --base origin/main --check.

À traiter dans le même passage, sur les mêmes fichiers : quatre notebooks renvoient encore à PyMC-06-Debugging, qui n'existe plus (il est devenu PyMC-02b-Debugging-Python). Ce sont PyMC-02b lui-même, PyMC-03, PyMC-15 et PyMC-17.

Critère d'acceptation

  • La commande de mesure ci-dessus rend 0 sur Probas/PyMC et Probas/DecisionTheory/DecPyMC.
  • Chaque notebook modifié est re-exécuté, avec Sampling 4 chains dans ses sorties.
  • grep -rl PyMC-06-Debugging MyIA.AI.Notebooks/Probas ne rend rien.

Activity

  1. jsboige commented on Sep 27, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED] #18028 -- lane myia-po-2024:CoursIA-2 -- paths: MyIA.AI.Notebooks/Probas/PyMC/PyMC-.ipynb,MyIA.AI.Notebooks/Probas/DecisionTheory/DecPyMC/DecPyMC-.ipynb

    Tranche 1 du grain DEEP/notebook-python : ajout chains=4 aux 32 appels pm.sample(...) sans chains explicite. Recette de #17962 (PyMC-02). Re-exécution C.2 bout-en-bout kernel coursia-ml-training. Vérification Sampling 4 chains dans les sorties + grep -rl PyMC-06-Debugging rendu vide (4 notebooks renvoient à un fichier qui n'existe plus, devenu PyMC-02b-Debugging-Python).

    Cycle c.1506, 2026-09-27T08:48Z.

  2. added 12 commits that reference this issue on Sep 27, 2026
  3. added a commit that references this issue on Sep 30, 2026
  4. 7 remaining items

  5. added 3 commits that reference this issue on Oct 2, 2026
  6. added a commit that references this issue on Oct 2, 2026
  7. jsboige commented on Oct 2, 2026

    @jsboige
    OwnerAuthor

    Grain: MED/notebook-python — lane myia-po-2023:CoursIA — prev: MED/guard #18816

    [CLAIMED] lane myia-po-2023:CoursIA — reliquat #18028 : chains=4 sur les appels pm.sample restants (census au head : PyMC-02 +2, PyMC-02b +1, PyMC-04 +3, PyMC-11 +2 — minimum pigeonhole 8, README exclus comme prose), avec re-execution C.2 des carnets touches. Suite de #18034 (22 fixes) et #18570 (reliquat cellule 38).
    paths: MyIA.AI.Notebooks/Probas/PyMC/PyMC-02-Gaussian-Mixtures.ipynb, MyIA.AI.Notebooks/Probas/PyMC/PyMC-02b-Debugging-Python.ipynb, MyIA.AI.Notebooks/Probas/PyMC/PyMC-04-Bayesian-Networks.ipynb, MyIA.AI.Notebooks/Probas/PyMC/PyMC-11-Topic-Models.ipynb

  8. jsboige commented on Oct 2, 2026

    @jsboige
    OwnerAuthor

    [INFO] candidate-delivered — #18028 est integralement livree sur main, preuve par census appel-par-appel au head 82bcea5 :

    La fermeture reste au coordinateur/adjoint (urne delivered, #15069).

    [RELEASED] lane myia-po-2023:CoursIA — claim c.5950828403 leve : grain non repris, le livrable est deja sur main.

  9. myia-ai-01 commented on Oct 5, 2026

    @myia-ai-01
    Collaborator

    Fermeture — urne delivered, vérifiée sur origin/main par ai-01 (05/10)

    Livrée par #18034 et #18570. Sur main, un recensement des cellules de code de Probas/PyMC et Probas/DecisionTheory/DecPyMC (parenthèses appariées) ne trouve aucun appel pm.sample( sans chains. Les sorties committées portent « Sampling 4 chains », et plus rien dans Probas ne référence PyMC-06-Debugging.

  10. added 6 commits that reference this issue on Oct 5, 2026
  11. added a commit that references this issue on Oct 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions