Skip to content

fix(genai,#15265): PT-02 — séparer bug d'état pré-#12716 / observation courante / hypothèse d'overfit (markdown-only) - #15297

Merged
myia-ai-01 merged 2 commits into
mainfrom
fix/15265-pt02-doc-honesty
Sep 9, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
fix/15265-pt02-doc-honesty

Conversation

@jsboige

@jsboige jsboige commented Sep 9, 2026

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python — lane myia-po-2023:CoursIA-2 — prev: MED/genai #14774

fix(genai,#15265): PT-02 — séparer bug d'état pré-#12716 / observation courante / hypothèse d'overfit, aligner la trace sur l'output committé, retirer le runtime absolu (markdown-only)

Contexte

Issue #15265 (Astra wave 2, CONFIRMED_PEDAGOGY) : deux divergences entre la prose
et les sorties committées post-#12716 de PT_02_sft_baseline.ipynb :

  1. la cellule ea826516 annonce runtime 60 s alors que l'output training committé
    donne train_runtime: 66.44 ;
  2. la cellule d979ec88 affirme que le peft_model « s'effondre encore » en
    UnESG. « et que ce n'est pas un bug » — lecture à confronter aux sorties
    post-fix : elle mêle potentiellement l'ancien symptôme d'état et le résultat
    SFT corrigé.

Confrontation firsthand aux outputs committés (la mesure qui gouverne le fix)

  • Cellule de training (504a9b78, exec_count 15) : train_runtime: 66.44,
    loss 1.9226 / 2.1708 / 1.7523, grad_norm 3.141 / 4.781 / 2.203,
    mean_token_accuracy 0.5814 / 0.5461 / 0.6054, train_loss: 1.949.
    → le bloc « trace réelle mesurée » de la prose citait un run différent
    (1.9227/2.1693/1.7631, grad 2.828/4.281/2.078, 1.952) — la divergence était
    plus large que le seul runtime : tout le bloc était stale.
  • Cellule de génération (12ec7aeb, exec_count 16) : la cure d'état PT-02 : la comparaison base vs SFT rend des generations degradees ("UnESG.") des deux cotes — execution reelle, qualite cassee #12716
    (3 lignes : gradient_checkpointing_disable() + eval() + use_cache=True)
    est dans le source committé et fonctionne — l'output [SFT] du run courant
    est une réponse cohérente et fluide (« Un Reward Model est un modèle de
    prévisionnement qui apprend à associer des récompenses… »), pas UnESG..
    → la prose présentait l'ancien symptôme pré-fix comme résultat du run courant.

Correctif (markdown-only — la voie du dispatch)

2 cellules markdown, 3 substitutions (script à asserts count==1, diff +15/−7) :

ea826516 (§7 — trace + verdict)

  • Runtime absolu retiré (C.5) : « RTX 3070 8 Go, runtime 60 s » supprimé ;
    le train_runtime mesuré vit dans la sortie committée, il n'est pas
    re-épinglé
    dans la prose (jamais re-pinner un nombre machine-dépendant qui
    changera au prochain passage kernel).
  • Trace alignée verbatim sur l'output committé : 1.9226/2.1708/1.7523,
    grad 3.141/4.781/2.203, mta 0.5814/0.5461/0.6054, train_loss 1.949 — citée
    comme « exécution committée de ce notebook ».
  • Verdict corrigé : « la section 8 montre que la génération se dégrade »
    était faux post-fix → la section 8 montre qu'après la cure, la génération
    SFT reste cohérente ; la fragilité LR 2e-4 est qualifiée hypothèse
    qualitative
    (grad_norm 4.78 mesuré au step 2 = signal d'optimisation
    turbulente, pas une mesure d'overfit). Les « 1.6 → 0.9 » illustratifs (aucun
    run ne les mesure) sont retirés.

d979ec88 (§8 — interprétation de l'effondrement)

Réécriture du « Pattern observé sur ce run » en séparation à trois voies
explicite
:

  1. Ancien bug d'état (pré-PT-02 : la comparaison base vs SFT rend des generations degradees ("UnESG.") des deux cotes — execution reelle, qualite cassee #12716) : UnESG. = artefact d'état
    (gradient checkpointing actif + use_cache=False), pas un effet du
    fine-tuning — l'intro « Piège d'état » déjà correcte au passé est conservée.
  2. Observation actuelle (ce run, post-cure) : les deux générations sont
    cohérentes ; la sortie SFT diffère de la base (reformulation, vocabulaire
    légèrement décalé) — c'est tout ce que ce run mesure. Pas d'effondrement.
  3. Hypothèse d'overfit (non mesurée) : un SFT court à LR 2e-4 peut dégrader
    subtilement un modèle déjà instruct-tuned — mais aucune mesure disjointe
    (jeu d'évaluation, ablation) ne l'établit sur ce run : hypothèse qualitative
    à tester, pas un résultat.

La leçon pédagogique (un loss qui bouge sur 3 steps ne dit rien de la qualité
de génération) est conservée.

Acceptance issue #15265 ↔ preuves

Critère Statut Preuve
Runtime cohérent avec l'output OK runtime 60 s retiré (option « ne pas figer », conformément au steering C.5) ; la prose pointe vers la sortie committée qui porte train_runtime: 66.44
Aucun symptôme ancien présenté comme résultat post-fix courant OK d979ec88 : UnESG. requalifié « ancien symptôme d'état pré-#12716, disparu avec la cure » ; l'observation courante = deux générations cohérentes (verbatim de l'output [SFT] committé)
Toute causalité reproduite ou qualifiée comme hypothèse OK overfit = hypothèse non mesurée (volet 3) ; « fragilité LR 2e-4 » du §7 = hypothèse qualitative ; grad_norm 4.78 cité comme signal mesuré, jamais comme preuve d'overfit
Si génération/code touché : re-exécution GPU complète Non applicable markdown-only : aucune cellule code source modifiée (règle C.3) ; le texte aligné recopie l'exécution déjà fraîche committée post-#12716 (fold-the-alignment, incident #8479) — re-exécuter ne ferait que régénérer d'autres nombres

Invariants vérifiés

  • Comparateur nbformat vs origin/main : structure (35 cellules), ids,
    types, ordre préservés ; pour chaque cellule code, source +
    outputs + execution_count + metadata identiques ; seules les
    cellules markdown ea826516 et d979ec88 diffèrent. nbformat 4 / minor 5.
  • Diff : git diff origin/main...HEAD --stat = 1 file changed, 15 insertions(+), 7 deletions(-).
  • Pre-commit H.3 : Passed (aucun notebook non-exécuté committé — les
    outputs/exec_count sont inchangés).
  • Sweep des occurrences : UnESG (3 : intro état au passé ✓, nouvelle
    séparation ✓, commentaire code de la cure — non touché ✓), runtime/60 s
    (1 : la ligne retirée), nombres de l'ancienne trace (0 restant), overfit
    (1 : qualifié hypothèse). Les « degrade » des cellules 0bd64881 (table LoRA
    r=4) et 44827487 (prose RL PT-04) sont hors scope et inchangés.

Plateau / garde

Closes #15265

🤖 Generated with Claude Code

Co-Authored-By: Claude-Code noreply@anthropic.com

…from current SFT observation, align trace to committed output, retire absolute runtime (markdown-only)

Co-Authored-By: Claude-Code <noreply@anthropic.com>
@jsboigeEpita

Copy link
Copy Markdown
Contributor

[ADJOINT][PREFLIGHT COMMENTED] Contre-vérification firsthand au head c718431018c618063551379a6faa9b9506320459.

Scope atomique et conforme : seul PT_02_sft_baseline.ipynb change, dans les deux cellules markdown ea826516 et d979ec88. Comparé à la base 119ec7da0294d4aab9bea2d73804c52303015892, les 35 cellules, IDs, types, ordre, metadata notebook et nbformat sont préservés ; toutes les cellules code gardent source, outputs, execution_count et metadata byte-identiques. git diff --check est vert, GraphQL retourne zéro thread inline et check_unaddressed_nits.py 15297 retourne rc=0.

La confrontation aux outputs confirme le fond : la cellule training committée porte bien loss 1.9226 / 2.1708 / 1.7523, grad_norm 3.141 / 4.781 / 2.203, accuracy 0.5814 / 0.5461 / 0.6054, train_loss 1.949 et train_runtime 66.44; la prose reprend les métriques et ne ré-épingle plus le runtime absolu. La génération post-cure montre deux réponses cohérentes ; UnESG. est désormais explicitement borné à l’ancien état pré-#12716. L’overfit reste qualifié comme hypothèse sans ablation/jeu disjoint, et non comme causalité observée.

Les quatre critères de #15265 sont donc couverts sans modification de code ni ré-exécution artificielle. Ce commentaire est un preflight COMMENTED, ni APPROVED, ni CHANGES_REQUESTED, et ne constitue pas une décision de merge.

@github-actions

github-actions Bot commented Sep 9, 2026

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

github-actions Bot commented Sep 9, 2026 •

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 3.9s
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 5.2s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.3s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.7s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 23.1s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.7s

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

@github-actions

github-actions Bot commented Sep 9, 2026

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

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #15297 (fix(genai,#15265): PT-02 — séparer bug d'état pré-#12716 / observation courante / hypothèse d'overfit (markdown-only)) 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.

@github-actions github-actions Bot added the pr-overlap Advisory: another open PR touches the same files (organ #13615) label Sep 9, 2026
@jsboige

jsboige commented Sep 9, 2026

Copy link
Copy Markdown
Owner Author

[INFO] lane myia-po-2023:CoursIA-2 — état du PR gate en FAILURE : DWELL-only, 0 défaut de substance. L'agrégat du run le plus récent rend settled: N check(s) green puis échoue uniquement sur le plancher de 120 min (merge_dwell.py DEFAULT_DWELL_MIN). Le balayage horaire pr-gate-stale-sweep.yml (cron 7 * * * *) re-agrégera cette jambe en SUCCESS dès le plancher écoulé — aucun geste lane requis ni utile (un push ou update-branch rechargerait le compteur à zéro). Justification écrite de --ignore-red conformément à proactive-coordination R5.

@myia-ai-01
myia-ai-01 merged commit 1cf9768 into main Sep 9, 2026
66 of 67 checks passed
jsboige added a commit that referenced this pull request Sep 9, 2026
Resolution delibérée des 3 conflits markdown de PT_02_sft_baseline.ipynb
(divergence PR #15310 vs main mergé #15297, même notebook):

- CONFLIT 1 (phrase d'ouverture) : garde OURS — le runtime épinglé
  'train_runtime: 66.44' est vérifié verbatim dans la sortie committée de
  la cellule (grep train_runtime 66.44 sur le notebook).
- CONFLITS 2 et 3 (verdict honnête + pattern observé) : garde THEIRS
  (#15297) — la structure 'Trois choses à bien séparer' (1. ancien bug
  d'état pré-#12716, 2. observation actuelle post-cure, 3. hypothèse
  d'overfit non mesurée) est plus rigoureuse que le paragraphe OURS ;
  les leçons d'OURS y sont couvertes (loss qui oscille ne dit rien de
  la qualité de génération).

JSON + nbformat.validate PASS ; 0 site unmerged restant.
PR #15310 — mission ai-01 (DM msg-20260909T091820-44iyyu, HIGH).

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

Labels

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.

PT-02 — réaligner runtime 60 s et interprétation de l’effondrement SFT

3 participants