Skip to content

fix(qc,#16795): QC-Py-23 determinisme GPU effectif + re-exec locale (stack etrangere 2.11.0) - #16807

Merged
myia-ai-01 merged 1 commit into
mainfrom
feature/qcdet-qcpy23
Sep 21, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
feature/qcdet-qcpy23

Conversation

@jsboige

@jsboige jsboige commented Sep 19, 2026

Copy link
Copy Markdown
Owner

Grain: DEEP/qc -- lane myia-po-2026:CoursIA -- prev: DEEP/qc #16806

QC-Py-23 : déterminisme rendu effectif + re-exécution GPU locale

Tranche 3/13 du volet QuantConnect de #16795. Note de triage : le notebook a été renommé sur main (Attention-Transformers → State-Space-Models) ; la re-vérification firsthand confirme le candidat — seed 42 posé (cellule 4), AUCUN réglage de déterminisme, métriques réelles committées. Le triage initial avait aussi manqué QC-Py-23b (14e candidat, en file). QC-Py-32 re-vérifié et EXCLU (aucun seed posé — hors pattern du fix #16795).

Le fix (cellule 4, site du seed)

import os
os.environ.setdefault('CUBLAS_WORKSPACE_CONFIG', ':4096:8')  # avant import torch
# après les seeds :
torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False
torch.use_deterministic_algorithms(True, warn_only=True)

Même pattern que tranches 1 (#16803) et 2 (#16806). warn_only = pédagogique (warning, pas un crash ; exécutable de bout en bout, C.1).

Preuve d'exécution (C.2) — kernel documenté du notebook

Papermill 17/17 cellules code, kernel coursia-ml-training, 0 erreur
Device: cuda | RTX 3080 Ti Laptop | PyTorch 2.6.0+cu124
grep NotImplementedError/assert False/1/0 : 0 occurrence
Guard markdown : 0 nouvelle violation ERROR

Les chiffres — honnêteté complète

L'ancienne exécution committée provenait d'une stack étrangère (PyTorch 2.11.0+cu128, autre GPU : Mamba 49,5s vs 75,0s local). Les métriques dérivent en conséquence :

Modèle Acc avant (stack 2.11) Acc cette PR (2.6.0+cu124 déterministe)
LSTM 53,33% 53,56%
Mamba 50,89% 52,22%
SST Hybrid 52,22% 49,56%
Transformer 52,22% 52,00%
  • Le classement du benchmark change (SST Hybrid passe de 2e ex-aequo à dernier) — les outputs committés font foi ; aucune interprétation de rang n'était figée en prose.
  • Prose vérifiée sans ancrage stale : 0 citation numérique des métriques dans le markdown (les seuls nombres à 3+ décimales sont des arXiv IDs et un DOI Hochreiter 1997) ; le seul claim qualitatif (« avantage attendu » multi-échelle, cellule 35) est théorique pré-entraînement et survit.
  • Taille du modèle exporté : 89,3 → 88,9 KB (non citée en prose).

Périmètre

1 fichier, QC-Py-23-State-Space-Models.ipynb (+260/−246, outputs régénérés inclus).

SOTA

SOTA-OK : vrai PyTorch, vrai GPU local, kernel documenté (coursia-ml-training), sorties réelles d'entraînement, aucun workaround.

See #16795 (contribution partielle — volet QC ; 10 FIX_CANDIDATE restants dont QC-Py-23b découvert ce cycle)

🤖 Generated with Claude Code

…U locale

Cellule 4 (site du seed 42) : CUBLAS_WORKSPACE_CONFIG avant import torch,
puis cudnn.deterministic=True / benchmark=False / use_deterministic_algorithms(True,
warn_only=True). Re-execution complete kernel coursia-ml-training (RTX 3080 Ti
locale, 17/17 cellules, 0 erreur). Metriques regenerees : l'ancienne execution
provenait d'une stack etrangere (PyTorch 2.11.0+cu128) ; prose verifiee sans
ancrage numerique stale (0 citation, seul claim theorique "avantage attendu"
survit). Classement benchmark derive (LSTM 53.56% > Mamba 52.22% > Transformer
52.00% > SST Hybrid 49.56%) — les outputs committes font foi.

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.

@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 2.6s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 3.2s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 3.8s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 3.7s
Search-01-StateSpace.ipynb ✅ SUCCESS 2.7s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.8s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 13.7s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.1s

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: 17
  • 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)

@github-actions

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #16807 (fix(qc,#16795): QC-Py-23 determinisme GPU effectif + re-exec locale (stack etrangere 2.11.0)) 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.

@jsboige

jsboige commented Sep 20, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 16807
head: 0512640
complete: true
body: read
comments-reviewed: 5
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: fcab917d4259cc34b3d0c3d07c119abf8ee5aaaf021b0d58e6b0066ea1d842b1
diff-files: 1
diff-additions: 260
diff-deletions: 246
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

@myia-ai-01
myia-ai-01 merged commit 7caa583 into main Sep 21, 2026
77 of 78 checks passed
myia-ai-01 pushed a commit that referenced this pull request Sep 23, 2026
…1/32, research_rl_grpo) (#17482)

* fix(qc,#16795): determinisme GPU strict — residu non couvert (QC-Py-31/32, research_rl_grpo)

Three notebooks from the closed QC determinism series whose re-executed states
were NOT covered on main (arbitrage c.38 volet QC, DM po2026-arb-16795-qc-volet) :
main already carries the same fixes for QC-Py-22/23/24/33/34 + 6 research via
#16803/#16806/#16807/#16811/#16812/#16815/#16816/#16818/#16822/#16823/#16824.
Cherry-picked states from the retained branches feature/16795-qcdet-pr{A,B,C}.

C.2: execution_count+outputs coherents (17/17, 15/15, 7/7), 0 error, 0
NotImplementedError; machine attestee dans les sorties (PyTorch 2.6.0+cu124,
device cuda, NVIDIA RTX 3080 Ti; GRPO 4 seeds pour research_rl_grpo).

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

* ci: force fresh pull_request event (body Diagnostic derive kernel ajoutee)

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Sep 23, 2026
… de la branche retenue

Les deux cotes corrigent le MEME defaut (+16795 : graine posee, aucun reglage de
determinisme) sur le MEME notebook, par deux formes differentes. Conflit
semantique, pas textuel -- sorti uniquement sur la cellule 4 (52 cellules des
deux cotes, une seule dont la SOURCE differe).

Forme retenue (branche) : `os.environ.setdefault('CUBLAS_WORKSPACE_CONFIG',
':4096:8')` pose AVANT `import torch` (l.16 vs l.17, mesure), puis
`use_deterministic_algorithms(True, warn_only=True)`.
- placement : le reglage doit preceder l'initialisation cuBLAS ; la forme de
  main le pose APRES `import torch` (l'effet n'est alors pas etabli).
- `warn_only=True` : le motif des 12 autres tranches du volet #16795
  (#16803/#16806/#16807) -- un motif strict ici ferait diverger cette tranche
  du reste du volet.

Ce qui est ecarte, et pourquoi : la ligne `print("Determinisme: ...")` de main
n'est PAS greffee. Elle apparaitrait dans la sortie de la cellule 4 sans y avoir
ete produite (la sortie retenue est celle de l'execution de la branche) --
l'incoherence sortie<>code est precisement ce que C.2/H.1 interdisent, et la
corriger exigerait une re-execution GPU que cette lane n'a pas.

Ce que les deux cotes ont en commun et qui est preserve : la sortie de la
cellule 4 atteste la meme stack (PyTorch 2.6.0+cu124, RTX 3080 Ti Laptop) --
les deux cotes ont re-execute, aucun n'a committe un reglage sans execution.

Artefacts suivis : `transformer_multiasset_model.pt` et `training_curves.png`
ne sont touches que par cette branche (1 commit chacun ; main 0). La suppression
non committee du .pt presente dans le worktree a ete restauree avant la fusion
(`git checkout HEAD -- <pt>`, 17927888 octets) : elle contredisait le perimetre
annonce de la PR (regeneration, pas retrait) et sortait du sujet.

Preuve : JSON valide, 52 cellules, 17 cellules code toutes avec
execution_count et outputs (0 sans), 0 CRLF, 0 raise NotImplementedError /
assert False, fichier du notebook byte-identique a la tete de branche.
jsboige added a commit that referenced this pull request Sep 23, 2026
…1/32, research_rl_grpo) (#17482)

* fix(qc,#16795): determinisme GPU strict — residu non couvert (QC-Py-31/32, research_rl_grpo)

Three notebooks from the closed QC determinism series whose re-executed states
were NOT covered on main (arbitrage c.38 volet QC, DM po2026-arb-16795-qc-volet) :
main already carries the same fixes for QC-Py-22/23/24/33/34 + 6 research via
#16803/#16806/#16807/#16811/#16812/#16815/#16816/#16818/#16822/#16823/#16824.
Cherry-picked states from the retained branches feature/16795-qcdet-pr{A,B,C}.

C.2: execution_count+outputs coherents (17/17, 15/15, 7/7), 0 error, 0
NotImplementedError; machine attestee dans les sorties (PyTorch 2.6.0+cu124,
device cuda, NVIDIA RTX 3080 Ti; GRPO 4 seeds pour research_rl_grpo).

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

* ci: force fresh pull_request event (body Diagnostic derive kernel ajoutee)

---------

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

lane-claim-absent Closing issue carries no claim at all (#10223) pr-overlap Advisory: another open PR touches the same files (organ #13615)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Metriques GPU non reproductibles : 43 notebooks posent une graine sans reglage de determinisme

2 participants