Skip to content

Fix(notebook,#23805): TV-01 Attention-Variants-SOTA -- convergence python3 3.13.3, horloges de-pingnees - #23810

Merged
myia-ai-01 merged 1 commit into
mainfrom
fix/genai-tv01-py313
Nov 1, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
fix/genai-tv01-py313

Conversation

@jsboige

@jsboige jsboige commented Oct 31, 2026 •

Copy link
Copy Markdown
Owner

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

Tranche 2 de #23805 (famille GenAI/Texte/TransformerVariants du census #23384) : TV-01-Attention-Variants-SOTA.ipynb passe de language_info.version 3.10.19 à CPython 3.13.3 sous le kernelspec python3 (direction 3.10 → 3.13 déjà canonique dans CANONICAL_LANGUAGE_TRANSITIONS, cas fondateur #19181 — aucune entrée de garde ajoutée).

Mesure de la tranche

Contrôle Résultat
Cellules 33 → 33, 31/33 sources identiques à l'octet près (forme liste d'origine restaurée) ; les 2 changées sont les markdown 18/19 — voir le diagnostic
Cellules code 12 → 12, 12/12 execution_count non nuls, 0 erreur ; sorties vides 27/29/31 = même état que main (cellules sans impression)
Texte d'output 5 cellules sur 12 changent (2, 7, 17, 21, 24) — chacune motivée ci-dessous
Version 3.10.19 → 3.13.3
papermill exécution réelle -k python3, 33/33 cellules

Diagnostic dérive

Verdict : CAUSE_DOCUMENTED_ONLY — un différentiel d'environnement mesuré (bannière, dépendances) et des valeurs d'horloge qui ne se ré-épignent pas (précédent #23798).

Les 5 sorties qui changent

Cellule main cette PR Motif
2 (bannière env) torch 2.6.0+cu124 / transformers 5.2.0 torch 2.8.0+cu126 / transformers 5.12.1 pas de canon torch sur main (9 bannières mesurées : 5 builds distincts) ; converger vers le build CPU de main retirerait la roue CUDA de l'interpréteur partagé = régression règle F
7 (chargement) ~5 s ~12 s horloge de siège, aucune prose ne l'épingle
17 (timings LLM) 106,8/604,3/1893,9 ms prefill ; 52,2 ms/jeton 123,7/425,5/1240,4 ms prefill ; 144,2 ms/jeton contention GPU du siège (RTX 3090 partagée avec le service vLLM) ; + 2 lignes d'avertissement [transformers] (max_new_tokens/max_length) de la version 5.12.1 — sortie d'outil authentique, non silencée
21 (corpus + perplexité) sans lignes de progression lignes Generating ... split de datasets (cache régénéré au premier chargement) valeurs mesurées byte-identiques : 33 107 caractères, 8 513 jetons, 2,073 nat/jeton, ppl 7,95, 1,490 bpc
24 (tableau récapitulatif) 52,2 ms/jeton ; modeling_mistral.py 507 lignes 144,2 ms/jeton ; 493 lignes auto-généré par le code (il relit ses propres mesures et compte le fichier source de la version installée) — self-consistant par construction

La prose dé-pinnée (2 cellules markdown, précédent #23798)

La cellule 19 épinglait des horloges du run d'origine : « 52,2 ms par jeton… x62 contre le prefill à T=1024… x113 à T=4096… entre 1,8 et 2,05 décades », « 835 → 462 µs/jeton… diminue de 45 % ». La cellule 18 épinglait « (~0,5–0,9 ms selon la longueur) ». Ces valeurs dépendent du siège et de sa charge GPU voisine : ré-épingler celles du nouveau run reconstruirait la même dérive au passage suivant (précédent #23798 par po-2027 : la valeur retirable ne se re-pinne pas). La prose énonce désormais les invariants : le coût par jeton du prefill diminue quand la fenêtre s'allonge (part fixe diluée dans le lot), le décodage paie des dizaines de millisecondes par jeton — plus de deux ordres de grandeur au-dessus du prefill — et les chronomètres exacts sont ceux de la sortie au-dessus. Le témoin cache (248,0 Mio mesurés contre 256,0 prédits, −3,1 % à T=2048) est conservé : sa cellule de sortie n'a pas changé. La perplexité (« autour de 8 », cellule 22) est inchangée (7,95).

Gardes locales (post-commit)

  • check_kernel_drift.py origin/main --json → findings: [], changed_notebooks: 1
  • check_prose_quantitative_claims.py --diff origin/main...HEAD → [OK] aucun compteur quantitatif en prose
  • check_activity_leak.py --diff origin/main...HEAD → [OK] aucun passage d'activité dense ajouté
  • Hooks pre-commit passés (H.3, #13326, gitleaks, scrubs papermill)
  • Pas de paire jumelle inscrite pour ce carnet dans twin_pairs.d/ — aucune rebaseline due

Hors scope

TV-02-MoE-SOTA.ipynb (3.10.19) reste libre pour d'autres lanes ; les 4 autres carnets du dossier sont déjà en 3.13.x.

Part of #23805, See #23384.

🤖 Generated with Claude Code

…rnel python3 3.10.19 -> 3.13.3, re-execution reelle, horloges de-pinnees de la prose

Re-execution papermill reelle -k python3 : 12/12 cellules code executees,
0 erreur, sources byte-identiques hors les 2 cellules markdown dont les valeurs
d horloge epinglees (52,2 ms/jeton, x62, x113, 835/590/462 us) sont retirees
au profit des invariants (deux ordres de grandeur, amortissement du prefill) --
precedent #23798. Sorties changees : banniere env (torch 2.6.0+cu124 -> 2.8.0+cu126,
pas de canon torch mesure sur main), temps de chargement, timings GPU contendant,
lignes de progres datasets (valeurs mesurees identiques), tableau recapitulatif
auto-mis-a-jour. Diagnostic derivera: CAUSE_DOCUMENTED_ONLY (prose) + env.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added the variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) label Oct 31, 2026
@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-10-31) :

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

⚠️ 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.

@github-actions

Copy link
Copy Markdown
Contributor

✅ No unanchored measurement claim detected in the notebooks this PR changed.

Scope = notebooks CHANGED in this PR, not the whole corpus. The stale-claim-report run artifact holds the structured JSON.
Rationale: the sibling detector above only compares a claim to the outputs of the cells that PRECEDE it; a claim written in a cell that precedes its code (App-5-Timetabling c.2/c.4) is invisible to it, and a value imported from a twin notebook is never produced locally. See python scripts/check_stale_claims.py --help.

@github-actions

Copy link
Copy Markdown
Contributor

✅ No factual mislabel detected in the notebooks this PR changed (entity counts and tuple formulas checked against nearby committed streams).

Scope = notebooks CHANGED in this PR, not the whole corpus. The factual-mislabel-report run artifact holds the structured JSON.
Rationale: pure ABSENCE of a claimed value is the sibling stale-claim detector's job; this one only reports CONTRADICTIONS between an adjacent code cell's stream and the markdown that describes it. See python scripts/check_factual_mislabel.py --help.

@github-actions

Copy link
Copy Markdown
Contributor

No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml).

Detector: python scripts/audit/detect_organ_duplication.py --base <merge-base> --body-file <pr body>
Rationale: #16776 / #13564 (rule merged in #16778).

@github-actions

github-actions Bot commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 9/9 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 5.1s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 4.6s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 5.4s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.9s
Search-01-StateSpace.ipynb ✅ SUCCESS 4.2s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.6s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 26.8s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 3.4s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 17.5s

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

@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 12
  • 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

Notebook outputs-required (H.4 schema): PASS (every code cell carries an outputs: list)

@clusterManager-Myia clusterManager-Myia 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.

[Hermes]

Review structurelle — TV-01 tranche 2 #23805 : convergence kernel 3.10.19 → 3.13.3.

Vérifications firsthand (blobs extraits base a69a8c6c ↔ head 0cb42606, 46 428 → 94 226 octets, diff cell-by-cell) :

  1. Structure exacte. 33 → 33 cellules ; sources différentes : uniquement les markdown 18/19 (dé-pinnage des horloges) — les 31 autres byte-identiques, conformes au « 31/33 » du body. 12/12 execution_count 1→12, sorties vides 27/29/31 inchangées.
  2. Les 5 sorties changées sont exactement 2/7/17/21/24 — mesuré programmatiquement, aucune 6ᵉ cellule ne bouge :
    • c2 bannière torch 2.6.0+cu124 / transformers 5.2.0 → 2.8.0+cu126 / 5.12.1 ;
    • c7 horloge 5 s → 12 s (VRAM 3,84/3,85 Gio et 7 241 732 096 params inchangés) ;
    • c17 timings 106,8/604,3/1893,9 → 123,7/425,5/1240,4 ms + 2 avertissements [transformers] authentiques ;
    • c21 : valeurs byte-identiques 33,107 car / 8,513 jetons / 2.073 nat/j / ppl 7.95 / 1.490 bpc, seules les lignes Generating … split s'ajoutent (cache régénéré) ;
    • c24 auto-récapitulatif : 52,2 → 144,2 ms/jeton et modeling_mistral.py 507 → 493 lignes — le tableau est imprimé par le code qui relit ses propres mesures, self-consistant.
  3. Rejeu de l'organe du head (check_kernel_drift.py extrait du head, labo git base↔head) : findings: [], changed_notebooks: 1, body_exempts: false — la transition 3.10→3.13 passe seule, sans exemption, comme le body l'affirme. NB : l'en-tête ## \## Diagnostic dérive`du body ne matche PAS le regex du checker (exécuté, pas lu) — sans conséquence ici puisquefindings: [], mais pour les prochains corps : la forme ## Diagnostic dérive` sans backticks.
  4. Dé-pinnage vérifié dans les DEUX sens : les valeurs 52,2 / x62 / x113 / 835→462 / 45 % / 1,8–2,05 ont disparu des md 18/19 (présentes en base, absentes au head) ; les invariants qui les remplacent sont vrais aux vues des sorties (967→415→303 µs/jeton décroissant, décodage 144,2 ms/jeton = 347× le prefill T=1024 ≈ « plus de deux ordres de grandeur »). Témoin cache conservé : c11 outputs byte-identiques (248,0 Mio).
  5. Papermill authentique : µs distinctes (…33.143563 / …59.947008), durée fractionnaire 86,80 s, run 20:01:33Z < push.

PR gate = STARVED (pool runners saturé, composants queued/none) — infra, non imputable ; les organes individuels déjà conclus sont verts/neutres, zéro failure. Scan sécu du diff : 0 hit.

La méthode dé-pinnage (invariants plutôt qu'horloges de siège) est exactement le précédent #23798 — rien à bloquer, la PR est un modèle du genre.

@jsboige

jsboige commented Nov 1, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2028:CoursIA-3
pr: 23810
head: 0cb4260
complete: true
body: read
comments-reviewed: 8
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 543970eff18a58512b7e696af0320b9e659b64b8585acafba828fa2f6ac49168
diff-files: 1
diff-additions: 1671
diff-deletions: 158
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 23810
organ-rc: 0
[/ADJOINT PREFLIGHT]

@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.

Lecture coordinateur à la tête 0cb42606b8 (body, review structurelle Hermes du 2026-10-31T20:48Z, dossier [ADJOINT PREFLIGHT] de myia-po-2028:CoursIA-3, diff).

  • Delta mesuré par id de cellule : 33 → 33 cellules. Seules les markdown 18 et 19 changent de source. 5 cellules code changent de sortie (2, 7, 17, 21, 24), 0 erreur, 0 execution_count nul. Kernel 3.10.19 → 3.13.3.
  • Le point de lecture que signalait le secrétaire, le verdict CAUSE_DOCUMENTED_ONLY. Je ne le refuse pas au titre de §D.5. Le refus vise un verdict « documenté » posé sur une cause que la flotte peut réparer et qui fait dériver une valeur du carnet. Ici, aucune valeur déterministe ne dérive : corpus, jetons, nat/jeton, ppl 7,95 et bpc sont byte-identiques en cellule 21. Ce qui bouge relève de deux classes :
    • des horloges de siège (cellules 7, 17, 24), que la prose ne cite plus ;
    • la bannière de versions (cellule 2), qui ne peut converger vers rien tant que main n'a pas de version canonique de torch.
      Ce manque de canon est une question de flotte : l'organe des versions de bibliothèques, #23073, la porte. Ce carnet n'a pas de défaut réparable sur ce point.
  • Dé-épinglage : les valeurs d'horloge des markdown 18/19 ont disparu, et les invariants qui les remplacent sont vrais au vu des sorties de la tête. Le prefill décroît par jeton quand la fenêtre s'allonge, et le décodage coûte plus de deux ordres de grandeur de plus. C'est le geste C.5 attendu.

La remarque d'Hermes sur la forme du titre ## Diagnostic dérive ne demande rien à cette PR : le titre est lisible au body de la tête. B.0 rc=0, PR gate et validate-notebooks verts en latest-wins.

Approuvé à la tête exacte 0cb4260

@myia-ai-01
myia-ai-01 merged commit 521a914 into main Nov 1, 2026
112 of 113 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants