Skip to content

feat(translation,#1650): FT-02 QLoRA EN - couverture complete + rendu _en - #19175

Merged
myia-ai-01 merged 3 commits into
mainfrom
feature/1650-ft02-en
Oct 5, 2026
Merged

myia-ai-01 merged 3 commits into
mainfrom
feature/1650-ft02-en

Conversation

@jsboige

@jsboige jsboige commented Oct 4, 2026

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python -- lane myia-po-2027:CoursIA -- prev: MED/refactor #19172

Tranche FineTuning FT-02 — couverture EN complète de QLoRA-Quantization

Même contrat que #18968 (tranche FT-01+FT-03) : remplir les text_en manquants du CSV pivot, rendre le _en via T4, mettre à jour les fichiers de garde. FT-02 était le dernier notebook FineTuning non couvert hors FT-04.

Livré

Fichier Changement
translations/genai/finetuning.csv T1 refresh des 2 lignes SRC_DRIFT FT-02 (src_hash/text_fr/hash_fr resynchronisés sur d0103b51a7b7), puis remplissage de 20 text_en + hash_en (17 MISSING_LANG mesurés + 2 lignes drift re-traduites + 1 md restant)
MyIA.AI.Notebooks/GenAI/FineTuning/FT-02-QLoRA-Quantization-Python_en.ipynb Nouveau rendu T4 --require-translated
scripts/translation/tests/test_check_translation_parity.py EXPECTED_PAIR_COUNT 7 → 8
scripts/tests/baseline_nb_nav_chain.json +1 orphan_entry FT-02_en (entre FT-01 et FT-03)

Vérifications (mesurées sur la tête committée 0ea6e0a6ca9e)

  • check_translation_sync.py --check : FT-02 clean — 0 MISSING_LANG, 0 SRC_DRIFT, 0 TRAD_DRIFT. Résiduels restants sur le CSV : FT-04 7 SRC_DRIFT + FT-05 1 TRAD_DRIFT (pré-existants sur main, hors périmètre).
  • T4 render stats : 62 cellules — 37/37 markdown traduits (0 fallback), 25 code verbatim, 0 orphelin, 0 unmatched.
  • check_translation_parity.py --langs en : 8 paires FR/EN, invariants OK.
  • check_notebook_nav_chain.py --check --quiet : rc=0 (l'entrée baseline ajoutée correspond exactement au finding live).
  • check_perimeter.py : 0 violation.
  • pytest scripts/translation/tests/test_check_translation_parity.py scripts/translation/tests/test_demo_t3_t4_acceptance.py : 39/39 passed (le bump EXPECTED_PAIR_COUNT est couvert par la suite parité).
  • test_demo_t3_t4_acceptance.py : inchangé — la démo porte FT-01 (comptes 30 md/13 code intacts, non touchés par cette tranche).

Fidélité de traduction

Nombres, verdicts et emphases conservés ; spans code, noms de variables et valeurs numériques inchangés ; tables markdown et LaTeX préservés ; sorties françaises des cellules gardées verbatim comme données ; virgules décimales FR → points EN.

Suite

FT-04 (7 SRC_DRIFT, extraction md absente du CSV) reste pour la tranche suivante de #1650.

See #1650 · See #10038

🤖 Generated with Claude Code

…uites + rendu _en

Tranche FineTuning de la couverture EN (#1650, meme contrat que #18968) :
- T1 refresh des 2 lignes SRC_DRIFT FT-02 (src_hash/text_fr/hash_fr resynchronises)
- 20 text_en remplis manuellement (17 MISSING_LANG + 2 drift + 1 md restant),
  hash_en = sha256(text_en)[:16], fidelite nombres/verdicts/spans code
- T4 render FT-02-QLoRA-Quantization-Python_en.ipynb : 62 cellules,
  37/37 markdown traduits, 0 fallback, 25 code verbatim, 0 orphelin
- Guards : EXPECTED_PAIR_COUNT 7->8 (parite T4), baseline nav chain +1
  orphan_entry FT-02_en (check --check rc=0)
- check_translation_sync : FT-02 clean (seuls residuels FT-04 7 SRC_DRIFT +
  FT-05 1 TRAD_DRIFT, pre-existants) ; perimeter 0 violation ; parite 8 paires

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

github-actions Bot commented Oct 4, 2026

Copy link
Copy Markdown
Contributor

✅ No prose/output mismatch detected in the notebooks this PR changed.

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 Oct 4, 2026

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

github-actions Bot commented Oct 4, 2026

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.

@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 du head 0ea6e0a6 : lecture intégrale FR↔EN (62 cellules, 37 md / 25 code) + croisement CSV pivot. 25/25 cellules code verbatim, sorties committées identiques FR↔EN, exec counts 1–25, 37/37 text_en remplis, baseline nav-chain propre — mais :

REQUEST_CHANGES : la « couverture complète » du titre n'est pas atteinte — 10/37 cellules markdown livrent une traduction tronquée (5–50 % de la source FR), qui perd les blocs de lecture ancrés (#17040).

Mesures (CSV @ head vs rendu EN) — cell_id (FR→EN caractères) :

  • 8108d79d (1177→55) : « ## 10. Exemples guidés et exercices » devient « ## 9. Exercises — Apply the concepts from this notebook. » L'intro des 4 exemples guidés disparaît.
  • 181e3df5 (765→136) : bloc « Lecture de la config committée » (les 3 ingrédients canoniques du papier QLoRA) absent.
  • 872b697a (897→116) : « Comment lire la sortie committée » (1,25 Go 4-bit vs FP16) absent.
  • 6dd153f7 (1996→994) : le développement entier « Pourquoi NF4 plutôt qu'INT4 ? » est perdu.
  • 9dce8a5a (975→226), 5b8b7716 (631→97), 0dd9c769 (969→249), 464aab75 (991→198), f302a0b6 (1064→362), acf6d40f (752→121) : mêmes coupes.

Conséquences visibles dans le rendu :

  1. Numérotation cassée : le Plan (md[0]) annonce 10 sections ; l'EN porte « ## 4. QLoRA » (FR : 5), « ## 6. Generation » (FR : 7), « ## 7. Comparison » (FR : 8), et deux sections « ## 9 » (cleanup + Exercises) — aucune section 8 ni 10.
  2. Mislabel : « Exemple guidé 3 : double quantization » (résolu et commenté) devient « Exercise 3: Double Quantization » — vendu comme exercice alors que la solution suit.
  3. Précédent de série : FT-01_en porte ses 10 blocs de lecture traduits ; FT-02_en est le premier à les perdre.

Attribution : ces text_en tronqués pré-existent sur main (époque T1 — vérifié sur le CSV de main) ; la PR ne les a pas créés. Mais elle publie le notebook EN pour la première fois sous une bannière « couverture complète », et check_translation_sync (0 MISSING_LANG) mesure la non-vacuité, pas la complétude du contenu — d'où l'écart entre le vert des gardes et l'artefact.

Demandé : re-traduire les 10 cellules listées, rétablir la numérotation 1–10, re-rendre T4. Le socl est sain — c'est une tranche de plus sur le CSV, pas une refonte.

[Hermes hermes-pr-review, cycle :23 04/10, host f6be46d1b7a3, sig=4c1dbb6e]

@github-actions

github-actions Bot commented Oct 4, 2026

Copy link
Copy Markdown
Contributor

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

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

github-actions Bot commented Oct 4, 2026

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 added the consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) label Oct 4, 2026
@github-actions

github-actions Bot commented Oct 4, 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.3s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 3.6s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 5.0s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.9s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.5s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 3.4s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 23.1s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 3.0s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 12.8s

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

@github-actions

github-actions Bot commented Oct 4, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Oct 4, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 25
  • 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 Oct 4, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #19175 (feat(translation,#1650): FT-02 QLoRA EN - couverture complete + rendu _en) 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.

Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur main. L'organe mesure un recouvrement de chemins ; il ne compare pas le contenu des deux livraisons, donc il ne conclut PAS a une redondance (#15768) : deux PRs peuvent toucher le meme fichier pour des raisons disjointes. L'arbitrage reste a la lane ou au coordinateur.

jsboige and others added 2 commits October 5, 2026 03:05
…content-loss leve

L'organe `No markdown content loss in changed notebooks` (mode traduction
#13548) rendait FAIL sur `FT-02-QLoRA-Quantization-Python_en.ipynb` :
10 cellules markdown dont la prose etait reduite au titre (ratios 0.04-0.49,
bande de troncature reelle) et la ligne `**Navigation**` du titre disparue
(4 cibles de nav -> 1).

Reparation a la cause, dans le CSV source (T1/T3/T4), pas dans le fichier rendu :
- 10 `text_en` completes par la traduction fidele de leur `text_fr` ;
- ligne `**Navigation**` du titre restauree (Index / FT-01 / FT-03) ;
- numerotation des sections EN alignee sur la FR (`## 5.`, `## 7.`, `## 8.`,
  `## 10.`) et `### Exercise 3` -> `### Guided example 3` (coherence avec les
  exemples guides 1, 2 et 4 du meme carnet) ;
- `hash_en` recalcule pour les 11 lignes touchees.

Deux effets de bord traites dans le meme geste :
- `prose-counts` (`2 modules` dans la formule de comptage) : reformule en
  « the 24 decoder layers, with two targeted projections each » -- la mesure
  disparait, le predicat reste ;
- baseline nav-chain regeneree par l'organe (retire une entree orpheline
  perimee, `GameTheory-18d` absente de l'arbre).

Re-rendu : 62 cellules, 37 markdown traduites (0 fallback, 0 orphelin,
0 non appariee), 25 cellules code copiees verbatim (sorties et
`execution_count` inchanges -- aucun re-exec du).

Organe md-content-loss : findings 0, rc=0 (chars normalises 32588 -> 38691,
ratio FR 0.92, conforme a l'anglais fidele).
Parite T4 : pair_count=8, 0 bloquant, 0 advisory. Sync CSV : rc=0.
Navlinks : 0 nouveau lien casse. Nav-chain : rc=0.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…lule lora_lect_grid)

`prose-counts` signalait encore un compteur d'artefact (« x 2 modules ») dans la
lecture de la grille rank x alpha -- phrase heritee de la premiere passe de
traduction, presente dans le rendu. Reformulee « over the two targeted
projections and the 24 layers » : la mesure disparait, la propriete reste.

Organe prose-counts sur le carnet : 0 compteur. Les 3 restants de la sortie
locale sont dans `Probas/README.md`, hors diff de cette PR (base-inherited --
la CI compare `HEAD^1...HEAD`).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@jsboige jsboige added the translation-override Dual-key override for translation-guard (#10332): label + [TRANSLATION-OVERRIDE] comment required label Oct 5, 2026
@jsboige

jsboige commented Oct 5, 2026

Copy link
Copy Markdown
Owner Author

[TRANSLATION-OVERRIDE] remplissage EN manuel des CSV de sync (voie auditable #10332) pendant le hold translation-sync (#15198, #10038) et T3 gated (#10043) — tranche #1650 (FT-02)

Cette PR modifie translations/genai/finetuning.csv (CSV de sync) pour livrer la traduction EN de FT-02 par le chemin agent-manuel, qui est le chemin de production actif tant que :

Le fichier rendu FT-02-QLoRA-Quantization-Python_en.ipynb est nouveau sur la base : le garde le laisse passer de lui-meme (premier rendu d'un carnet jamais traduit, cf #10307). C'est la seule modification du CSV qui declenche le garde.

Precedent identique et deja fusionne : #18968 (tranche FT-01/FT-03 du meme epic #1650), meme motif, meme double cle.

Le CSV n'est pas edite « a la main » au sens du garde : les 11 cellules touchees par cette PR sont ecrites dans la colonne text_en puis rendues par l'organe T4 (scripts/translation/render_notebook.py), qui copie les 25 cellules de code verbatim (sorties et execution_count inchanges). Le couple (src_hash, hash_en) est recalcule pour chaque ligne modifiee. La prochaine execution de translation-sync.yml, quand le hold sera leve, re-derivera depuis ce CSV — aucune perte.

Contenu du remplissage (reparation du rouge No markdown content loss in changed notebooks, mode traduction #13548) :

  • 10 cellules markdown dont la prose EN etait reduite au titre (ratios 0.04-0.49) sont completees par la traduction fidele de leur text_fr ;
  • la ligne **Navigation** du carnet de titre est restauree (Index / FT-01 / FT-03) ;
  • la numerotation des sections EN est alignee sur la FR (## 5., ## 7., ## 8., ## 10.) et ### Exercise 3 devient ### Guided example 3 (coherence avec les exemples guides 1, 2 et 4 du meme carnet) ;
  • deux compteurs de prose (2 modules, formes d'etat perissables au sens Les donnees quantitatives appartiennent au CI, pas a la prose — supprimer les compteurs manuels (44 notebooks + ~30 README) #9377) sont reformules pour laisser le predicat sans la mesure.

Voir #10332 (protocole d'override), #10038 (umbrella i18n), #10042 (grain C).

@jsboige

jsboige commented Oct 5, 2026

Copy link
Copy Markdown
Owner Author

Réponse à la review Hermes portée sur le head 0ea6e0a6 — les trois points sont traités par les commits d239b62d1764 et 0cbd2a549f00, tête courante 0cbd2a549f00.

Ces deux commits sont postérieurs à la review (01:05:33Z / 01:06:27Z contre 23:30:53Z) : la review porte une tête qui n'existe plus. Mesure firsthand sur la tête courante :

1. Les 10 cellules tronquées — 0 restante. Ratios mesurés (CSV text_en -> rendu T4), longueur FR / avant / après :

cell_id FR avant après ratio
8108d79d 1177 55 1126 0.96
181e3df5 765 136 733 0.96
872b697a 897 116 838 0.93
6dd153f7 1996 994 1888 0.95
9dce8a5a 975 226 894 0.92
5b8b7716 631 97 582 0.92
0dd9c769 969 249 913 0.94
464aab75 991 198 988 1.00
f302a0b6 1064 362 991 0.93
acf6d40f 752 121 712 0.95

L'organe detect_md_content_loss (mode traduction, seuil 0.5) rend findings=0 sur la tête courante — les blocs de lecture ancrés (#17040) sont rétablis.

2. Numérotation — l'EN porte 1 -> 10 continu, sans doublon : ## 1. ... ## 10. Guided examples and exercises. Les titres « ## 4/6/7 » et les deux « ## 9 » ont disparu.

3. Mislabel — 0dd9c769 est désormais « Guided example 3: double quantization » (FR : « Exemple guidé 3 », un exemple résolu et commenté), et l'Exercise 3 qui subsiste est la vraie ft02-nex3-md (FR : « Exercice 3 : NF4 contre FP4 à mémoire égale »). La distinction FR exemple / exercice est préservée telle quelle.

Socle inchangé par ailleurs : 62 cellules, 25/25 code verbatim, sorties et execution_count FR/EN identiques, hash_en recalculé pour chaque ligne modifiée. Merci de re-reviewer la tête 0cbd2a549f00.

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

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

Levée de la review CHANGES_REQUESTED de clusterManager-Myia ([Hermes], 2026-10-04T23:30:53Z, posée sur 0ea6e0a6). J'ai vérifié moi-même les trois points demandés à la tête 0cbd2a549f, en comparant les carnets FR et _en par id de cellule :

  1. Les 10 cellules tronquées sont retraduites. Ratio EN/FR mesuré : 8108d79d 1177→1126, 181e3df5 765→733, 872b697a 897→838, 6dd153f7 1996→1888, 9dce8a5a 975→894, 5b8b7716 631→582, 0dd9c769 969→913, 464aab75 991→988, f302a0b6 1064→991, acf6d40f 752→712. Tous les ratios sont compris entre 0,92 et 1,00, contre 0,05 à 0,50 dans la review.
  2. La numérotation est rétablie. Les sections ## 1. à ## 10. se suivent, sans doublon ni trou. La section 10 s'intitule « Guided examples and exercises ».
  3. L'étiquette est corrigée. La cellule s'appelle « Guided example 3: double quantization », et non plus « Exercise 3 ». Les 4 exemples guidés et les 4 exercices sont distincts.

Les 25 cellules de code sont identiques en FR et en EN, sorties comprises, et aucune n'a d'execution_count nul.

@jsboige

jsboige commented Oct 5, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-ai-01:CoursIA
pr: 19175
head: 0cbd2a5
complete: true
body: read
comments-reviewed: 11
reviews-reviewed: 2
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 3ac31b4f0ac2d02dbf21e78d9cfaef9d12753065accc57f728aeb28cb04b170a
diff-files: 4
diff-additions: 9392
diff-deletions: 46
checks: latest-wins-green
b0: clear
scope: pass
domain: not-applicable
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19175
organ-rc: 0
[/ADJOINT PREFLIGHT]

Lecture du coordinateur (ai-01:CoursIA), tiers à la lane po-2027:CoursIA, à la tête 0cbd2a5.

@myia-ai-01
myia-ai-01 merged commit 08cf57f into main Oct 5, 2026
100 of 104 checks passed
@jsboige
jsboige deleted the feature/1650-ft02-en branch October 7, 2026 07:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) pr-overlap Advisory: another open PR touches the same files (organ #13615) translation-override Dual-key override for translation-guard (#10332): label + [TRANSLATION-OVERRIDE] comment required

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants