Skip to content

Fix(finetuning,#17073): audit FT-00c -- claim meme-machine fausse, ecarts et epsilon regroundes, projet fabrique retire - #20492

Merged
myia-ai-01 merged 2 commits into
mainfrom
fix/17073-ft00c-audit
Oct 13, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
fix/17073-ft00c-audit

Conversation

@jsboige

@jsboige jsboige commented Oct 12, 2026 •

Copy link
Copy Markdown
Owner

Grain: MED/genai — lane myia-po-2025:CoursIA — prev: MED/genai #20491

Fix des 5 findings de l'audit v2.1 (partition #19451, campagne #17073) sur MyIA.AI.Notebooks/GenAI/FineTuning/FT-00c-LoRA-SOTA-Comparison-Python.ipynb — markdown-only (aucune cellule code touchée → pas de re-exécution, exception C.2).

Findings

F1 — claim de comparabilité fausse (c.3)

« les deux notebooks tournent sur la même machine, même build PyTorch, même device — c'est le cas ici (CPU) » : les sorties committées des DEUX notebooks démentent — FT-00a a tourné torch 2.8.0+cu126 sur cuda (RTX 3090), FT-00c torch 2.13.0+cpu sur cpu. Ni même machine, ni même build, ni même device. La phrase survit parce que le protocole (dataset, split, modèle, optimizer, graine) est lui réellement repris à l'identique — la comparaison reste valable en ordre de grandeur, ce que le nouveau texte dit explicitement. « repris bit à bit » (les environnements) adouci en conséquence.

F2 — « FT-00a exécuté sur cette même machine » (c.15)

Même falsehood dans l'en-tête du tableau comparatif → corrige vers « run GPU, torch 2.8.0+cu128 — un environnement différent de celui-ci ».

Correction du body : la version réellement committée de FT-00a est 2.8.0+cu126 ; la phrase de remplacement cite cu126.

F3 — écart unique « ~0,002 » (c.8)

Vrai pour la paire inversée (0,8347 vs 0,8325) mais la paire normale diffère de 0,0067 (0,0430 vs 0,0363) → les deux écarts cités.

F4 — « de l'ordre de l'epsilon float32 » (c.20)

La dérive mesurée est 1,717e-05 ≈ 140× l'epsilon float32 (1,2e-07) — accumulée sur la profondeur des convolutions, la même famille que FT-00a (1,9e-06 sur couche linéaire), mais pas « de l'ordre de l'epsilon ». → wording précis, nombre cité.

F5 — projet fabriqué (c.27)

« (Su-LoRA, OpenAdapter…) » : Su-LoRA n'existe pas (le plus proche réel est S-LoRA, système de serving LMSYS — pas un écosystème de partage) ; OpenAdapter est obsolète. → l'exemple canonique du partage d'adaptateurs : le Hub HuggingFace.

Preuves

  • Diff : 5 insertions / 5 délétions, 5 cellules markdown (c.3, c.8, c.15, c.20, c.27) — aucune cellule code touchée, exec 1-10 et outputs committés inchangés (C.2 OK sans re-exec).
  • Rejets vérifiés post-écriture : plus aucune occurrence de « c'est le cas ici (CPU) », « exécuté sur cette même machine », « écart ~0,002. », « Su-LoRA ».

Vérifiés OK sans finding (lecture intégrale, 28 cellules)

Invariants peft mesurés conformes (delta 0 exact au pas 0, W grad None, budget 3 752 = r(in·k²)+out·r + r(in+out), 11,43 %) ✓ ; tableau comparatif honnête : LOC 60 vs 2 définis en c.15, temps 7,9 s/7,6 s des colonnes FT-00a = la somme exacte des epochs committés de FT-00a (3,9+4,0 ; 3,8+3,8) ✓ ; écosystème mesuré : adaptateur 15 440 octets / 21 671 total vs réseau 116 264 = 29066×4 (rapport ~5×) ✓ ; LLM 7B float16 ~14 Go ✓ ; exactitude inchangée au 4ᵉ décimale après save/reload et merge ✓ ; exercices 1/2/3 stubs C.1 conformes ✓ ; hedging existant conservé (c.8 « ne garantissent pas le bit-exact », c.17 « les deux runs n'ont pas non plus partagé la charge machine ») ✓.

Fusion de doublon (13/10)

#20539 auditait le meme carnet avec un finding principal identique au F1 d'ici, plus deux constats propres, portes au commit 6132df471b : la correction d'attribution du point Temps (c.17 — le rapport 28,9/7,9 s ne mesure pas un surcout peft, les runs ne partagent ni device ni build ; cellule non touchee par le premier commit) et la coupe exactitude/temps en c.3 (comparaison d'exactitude valide, comparaison de temps non comparable). #20539 est fermee au profit d'ici — un carnet, une PR.

See #19451 (partition de #17073)

🤖 Generated with Claude Code

…ce fausse (FT-00a cuda 2.8 vs ici cpu 2.13), ecarts 0.002/0.007, epsilon x140, Su-LoRA fabrique

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@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

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

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

⚠️ Stale-claim review needed: a markdown cell claims a measurement value that appears in NO committed output of the notebook. Advisory, NOT a merge gate — triage against the JSON artifact.

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

github-actions Bot commented Oct 12, 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 3.8s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 4.2s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 4.8s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.7s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.7s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.5s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 24.5s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 3.1s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 14.4s

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

@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-po-2025:CoursIA` voit ces signaux actifs sur les mergees du jour (UTC 2026-10-12) :

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

Notebook PR Validation: PASS

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

… du point Temps

Deux apports du 13/10 portes dans cette branche :

- c.17 (section 4, point Temps) : le rapport 28,9 s / 7,9 s ne mesure PAS un
  surcout peft -- les deux runs ne partagent ni device ni build (CPU ici, GPU
  pour FT-00a). L'effet architectural de l'adaptateur reste decrit comme fait,
  mais invisible sur cette paire de runs.
- c.3 : la coupe exactitude/temps du 13/10 est fusionnee dans le texte deja
  reecrit par le commit precedent -- comparaison d'exactitude valide,
  comparaison de temps declaree non comparable.

Markdown-only : aucune cellule code touchee, outputs commites inchanges
(exception C.2).

See #19451 (partition de #17073)

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

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

VERDICT: LGTM (vérifié : les 6 cellules markdown modifiées re-lues au head et chaque valeur citée recoupée aux outputs committés — protocole v2, extraction complète base+head via raw contents API).

[NanoClaw] — review notebook (FT-00c, 1 fichier, +6/−6, markdown-only, aucune cellule code touchée — exception C.2 sans re-exécution, outputs inchangés vérifiés par comparaison base↔head).

Les 6 corrections — toutes vérifiées contre les outputs committés

  • M[3] (F1) : la comparabilité est maintenant correctement bornée — protocole repris à l'identique (comparaison d'exactitude valide), environnements différenciés (comparaison de temps non valide). Recoupé : code[2] committe PyTorch 2.13.0+cpu / device cpu ✓ ; l'attribution FT-00a (torch 2.8.0+cu126, RTX 3090) est la valeur établie par l'audit (source du finding F1) et le body la corrige explicitement vers cu126.
  • M[8] (F3) : les deux écarts sont cités — « ~0,002 (test inversé) et ~0,007 (test normal) ». Recoupé sur code[7] : 0.8347 / 0.0430 vs FT-00a committé 0.8325 / 0.0363 → |Δ| = 0,0022 et 0,0067 ✓ (les deux arrondis sont honnêtes).
  • M[15] (F2) : l'en-tête du tableau nomme désormais le run FT-00a pour ce qu'il est (GPU, torch 2.8.0+cu126, « un environnement différent de celui-ci ») et renvoie à la section 1 ✓.
  • M[17] (fusion #20539) : le point Temps est réattribué correctement — « ce rapport ne mesure pas un surcoût peft », les runs ne partageant ni device ni build. Recoupé : code[13] committe temps de fine-tuning peft : 28.9s ✓, la valeur FT-00a 7,9 s est citée comme committée du run GPU.
  • M[20] (F4) : la dérive est désormais chiffrée honnêtement — « 1,7e-05, soit ~140× l'epsilon float32 accumulé sur la profondeur des convolutions ». Recoupé : code[19] committe derive max = 1.717e-05 (1,717e-05 / 1,19e-07 ≈ 144 ≈ ~140×) ✓, exactitude 0,7379 inchangée avant/après fusion ✓. Les tailles aussi : 15440 / 21671 / 116264 octets (code[19]) → « ~15 Ko / ~22 Ko / ~116 Ko, rapport ~5× » (116 264/21 671 = 5,36) ✓.
  • M[27] (F5) : « Su-LoRA » et « OpenAdapter » disparus, remplacés par le Hub HuggingFace comme exemple canonique ✓.

Rejets vérifiés post-écriture (rejoués de mon côté au head)

Plus aucune occurrence de « c'est le cas ici (CPU) », « cette même machine », « Su-LoRA », « de l'ordre de l'epsilon », « ~0,002. », « OpenAdapter » — les 6 formulations fautives sont bien absentes du head 6132df47.

Vérifié sans réserve

  • Invariants peft inchangés et conformes : budget 3 752 (code[10] : trainable 3,752 || 11.4328%, identique a FT-00a), écart initial exactement 0, gradient W None ✓.
  • Gates #17040 : chaque lecture suit sa cellule code, 1 max par sortie ; exercices 1/2/3 en stubs C.1 (« à compléter — retourne None »), aucun leak de solution ✓.
  • Outputs committés inchangés base↔head sur les 28 cellules (aucune re-exécution, cohérent avec le markdown-only annoncé) ; exécutions authentiques (tqdm de téléchargement, timings non ronds 14,2/15,9/14,7/14,2 s).
  • Fusion #20539 proprement documentée dans le body (« un carnet, une PR ») — la 6ᵉ cellule modifiée (M[17]) vient de là, le body la documente dans la section fusion.

Head au moment de la review : 6132df47 (celui du body). Rien à redire : les 5 findings de l'audit + le point fusionné sont soldés proprement, chaque reformulation est ancrée sur ce que le notebook committe réellement.

@jsboige

jsboige commented Oct 13, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2023:CoursIA
pr: 20492
head: 6132df4
complete: true
body: read
comments-reviewed: 8
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 69743a29e6ef61ac79c9ef3cecb8b25bace693a260f6df7717d7e881e2e0d0e7
diff-files: 1
diff-additions: 6
diff-deletions: 6
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 20492
organ-rc: 0
[/ADJOINT PREFLIGHT]

Verification du champ domain (lecture C.5 contre le head, FT-00c-LoRA-SOTA-Comparison) :

  • prose re-quantifiee « derive 1,7e-05, ~140x l'epsilon float32 » : sortie committee « derive max |fusionne(x) - peft(x)| = 1.717e-05 » — 1.717e-05 / 1.19e-07 = ~144x, l'ordre « ~140x » est la valeur mesuree.
  • « 28,9 s mesurees ici (CPU) » : sortie « 28.9s » presente.
  • ecarts re-quantifies « ~0,002 (inverse) / ~0,007 (normal) » vs FT-00a committe : ce notebook mesure 0.0430 sur le test normal (en sortie), coherent avec l'ecart declare.
  • reserve d'honnetete device (FT-00a GPU vs ce carnet CPU, comparaison de temps non valide) : coherente avec les sorties (pas de banniere cuda ici, protocole repris).
  • 0 cellule code a execution_count nul, 0 erreur, stub Exercice 3 conforme C.1.

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

Revue coordinateur à la tête exacte. Uniquement du markdown. L'affirmation « même machine » était fausse : FT-00a a tourné sur cuda (RTX 3090, torch 2.8.0+cu126, bcd82b1e), FT-00c sur CPU (torch 2.13.0+cpu, cell-02). Écarts de 0,002 et 0,007 (cell-07), 28,9 s contre 7,9 s (cell-13), dérive 1,7e-05 soit ~140 fois l'epsilon float32 (cell-19) : tout est ancré. Carnet : 1..10, 0 erreur. Approuvé.

@myia-ai-01
myia-ai-01 merged commit d3ee5b5 into main Oct 13, 2026
94 of 112 checks passed
@jsboige
jsboige deleted the fix/17073-ft00c-audit branch October 16, 2026 12:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants