Skip to content

docs(13410): 3 lecture cells chiffrees (QLoRA load, trainable params, training budget) in 21_LoRA_FineTuning (density 960 -> 1225) - #16628

Closed
jsboige wants to merge 2 commits into
mainfrom
feature/13410-density-lora21-finetuning
Closed

jsboige wants to merge 2 commits into
mainfrom
feature/13410-density-lora21-finetuning

Conversation

@jsboige

@jsboige jsboige commented Sep 18, 2026

Copy link
Copy Markdown
Owner

Grain: DEEP/notebook-python -- lane myia-po-2026:CoursIA -- prev: DEEP/notebook-python #16621

Summary

Density grain EPIC #13410 on MyIA.AI.Notebooks/GenAI/Texte/21_LoRA_FineTuning.ipynb (python kernel coursia-ml-training, fully executed, 0 errors): 3 reading cells inserted, anchored ONLY on real executed outputs (no exercise stub anchored, no exercise statement restated, no expected answer given).

Content (cell ids + anchors)

  • c1lora21-1 (after exec=2, QLoRA 4-bit load): anchored on Modele charge en 5.7s and VRAM apres chargement : 0.78 Go / 8 Go + GPU cell output (RTX 3070, 8.6 Go). Arithmetic: 0.78/8.6 ~ 9%; 755M params at 4 bits ~ 0.38 Go vs measured 0.78 (~2x, exact split flagged as NOT measured); nominal "8 Go" denominator vs real 8.6 Go card.
  • c1lora21-2 (after exec=6, print_trainable_parameters): anchored on trainable params: 3,194,880 || all params: 755,587,904 || trainable%: 0.4228. Hand-recomputed 3,194,880/755,587,904 = 0.4228%; ~1 trainable param in 237; per-module decomposition NOT printable from outputs (flagged).
  • c1lora21-3 (after exec=7, training): anchored on Entrainement termine en 1593.6s, VRAM pic pendant l'entrainement : 2.51 Go / 8 Go, Perte finale : 0.6147. Arithmetic: 26min34s; 60 ex x 40 epochs = 2400 seen / batch effectif 8 ~ 300 steps ~ 5.3 s/step (exact count NOT printed, flagged); 2.51 Go = 29% of 8.6, +1.73 over load; loss 0.6147 vs in-comment calibration 0.7545 disclosed as two real runs.

Accent register measured first: 14.36% accented words -> accented French matched.

Proofs

  • Canonical round-trip verified BEFORE edit: json.dumps(nb,indent=1,ensure_ascii=False)+"\n" == raw.
  • Originals deep-equal in order vs HEAD: PASS. Code cells byte-identical (source+outputs, 12 cells): PASS.
  • git diff -U0 | grep -c '^-[^-]' == 0 (commit: 42 insertions, 0 deletions).
  • Density measured in a SEPARATE command from the commit: pedagogy_density.py --json -> density 1225, status ok (was 960, floor 1200, prose 11524 -> 14710, code 12).
  • Idempotency guard on ids; last-line \n matches the 15 pre-existing markdown cells' convention; metadata {}; nbformat 4.5.

Preflight: 0 hits for the filename in gh pr list --state open --limit 400 --json number,files (166 PRs raw-grepped); no twin_pairs.d entry for this family. Discovery trail: SemanticWeb had 4 below-floor (3 blocked by open PRs, SW-11 clear but char-deficit 9677 > 6000 avoided); GenAI/Texte retained (09b/13b/24_NGrammes/TV-01 blocked or duplication-heavy); Search/Part3-Advanced had 0 below-floor.

Flagged (out of scope, not touched): section-6 prose says "~0,9 % des paramètres" while the measured print is 0.4228% -- pre-existing inconsistency, left as-is.

Test plan

  • Official density tool passes: 1225 >= 1200 (JSON output above)
  • Pre-commit hooks all Passed (gitleaks, notebook scrubbers, H.3 un-executed check, markdown defects)
  • Proofs rerun post-commit vs HEAD (originals + code cells byte-identical)

See #13410

🤖 Generated with Claude Code

… training budget) in 21_LoRA_FineTuning (density 960 -> 1225)

Anchored readings (all on real executed outputs, no exercise stubs):
- c1lora21-1 (after exec=2 load): 0.78 Go / 8.6 Go card ~9%, 4-bit estimate
  ~0.38 Go vs measured 0.78 (~2x, unmeasured split flagged), 5.7s vs 1593.6s.
- c1lora21-2 (after exec=6 print_trainable_parameters): 3,194,880 / 755,587,904
  = 0.4228% recomputed by hand, ~1 trainable param in 237, module decomposition
  not printable from outputs (flagged).
- c1lora21-3 (after exec=7 training): 1593.6s = 26min34s, 2400 examples / batch 8
  ~300 steps ~5.3s/step (exact count not printed, flagged), VRAM 2.51 Go = 29%
  of 8.6 Go (+1.73 over load), loss 0.6147 vs in-comment calibration 0.7545
  disclosed as two real runs.

Proofs:
- json.dumps(nb,indent=1,ensure_ascii=False)+"\n" == raw verified BEFORE edit.
- Originals deep-equal in order vs HEAD: PASS.
- Code cells byte-identical (source+outputs, 12 cells): PASS.
- git diff -U0 | grep -c '^-[^-]' == 0: PASS.
- Official measure (separate command): density 1225, status ok (floor 1200).
- Idempotency guard on ids c1lora21-1/2/3; last-line \n matches the 15 existing
  markdown cells' convention.

Hooks: pre-commit passed, no hr-separator normalization needed (no `---` openers).

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

jsboige commented Sep 18, 2026

Copy link
Copy Markdown
Owner Author

Concern: Est-ce que ce notebook est au bon endroit? Comment se positionne-t-il à la fois par rapport à la série Finetuning, et aux séries ML?

@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

⚠️ 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 added the variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) label Sep 18, 2026
@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

github-actions Bot commented Sep 18, 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 11.4s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 11.4s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 13.6s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 13.7s
Search-01-StateSpace.ipynb ✅ SUCCESS 7.5s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 3.1s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 22.4s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 3.6s

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

@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

[Hermes] — #16628 vérifié au head e456bd34 : les 17 récitations arithmétiques des 3 cellules recalculées à la main (technique inline-arithmetic) — toutes conformes, y compris les arrondis :

  • c1lora21-1 : 0,78/8,6 ≈ 9 % ✓ ; 755 M × 4 bits ≈ 0,38 Go ✓ et pic ≈ 2× l'estimation ✓ (écart honnêtement attribué aux modules pleine précision, non mesuré) ; 8,6 − 0,78 ≈ 7,8 Go restants ✓ ; distinction budget nominal 8 Go vs carte réelle 8,6 Go ✓.
  • c1lora21-2 : 3 194 880 ÷ 755 587 904 = 0,4228 % exactement ✓ ; 1/236,6 ≈ 1 sur 237 ✓ ; promesse LoRA 0,1–1 % tenue à 0,42 % ✓.
  • c1lora21-3 : 1593,6 s = 26 min 34 s ✓ ; 60×40 = 2400, ÷8 → ~300 pas, 5,3 s/pas ✓ ; 2,51/8,6 = 29 % ✓ ; +1,73 Go sur 0,78 ✓ ; marge >3× ✓.

Discipline d'ancrage exemplaire : chaque non-mesure est flaggée (répartition VRAM exacte, largeurs des projections par module, compte exact de pas, forme de convergence) au lieu d'être inventée, et la divergence 0,6147 vs 0,7545 est correctement attribuée à deux runs réels. Cells markdown pures insérées entre cellules existantes, aucun output/code touché. Scan sécurité : néant.

(contrainte token : COMMENT only, cap #15511)

[Hermes hermes-pr-review, cycle :09 18/09, host c92df397a786]

@jsboige

jsboige commented Sep 18, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT] PR #16628 -- verdict: PREFLIGHT_HOLD

Preflight B.0 lot 3 c.33 — sub-agent sonnet, lane myia-po-2025:CoursIA-2, mesure fresh 2026-09-18T22:00:34Z. Aucun merge, aucune fermeture, aucune demande de changements, aucun rebase ni push posés ici : lecture seule + ce commentaire.

Ancre : organ check_unaddressed_nits.py extrait frais de origin/main « c818f6a » (ancre dispatch 21:51Z : « 7885a69 » — main a avancé depuis, SHA mesuré firsthand retenu).

Surfaces (mesure fresh, pas payload) :

  • mss : « UNKNOWN » — mergeable : « UNKNOWN »
  • reviewDecision : « vide » — reviews lues : 1, commentaires lus : 5
  • dernière review : clusterManager-Myia, état « COMMENTED »
  • organ B.0 frais : rc=1 — l'organe signale des phrases manquantes (détail ci-dessous). L'organe ne dit ni qui ni quand — lecture finale B.0 reste à ai-01.
    • « BOT-CONCERN par jsboige le 2026-09-18T02:07:28+00:00 (canal comment) : Concern: Est-ce que ce notebook est au bon endroit? Comment se positionne-t-il à la fois par rapport à la série Finetuning, et aux séries ML? »
  • checks sur head « e456bd3 » : 30 terminés, 0 annulés, 0 en échec, 0 en cours
  • Grain : « Grain: DEEP/notebook-python -- lane myia-po-2026:CoursIA -- prev: DEEP/notebook-python docs(13410): 3 lecture cells chiffrees (XOR/AND, palindrome, conservation) in Z3-Python-03-Tactics (density 1051 -> 1267) #16621 »

Lecture du verdict :

  • organe B.0 rc=1

Verdicts Hermes relevés dans reviews (copie sourcée, première ligne) :

  • clusterManager-Myia (état « COMMENTED ») : « VERDICT: LGTM »

Substance (une phrase, body de la PR) : « Density grain EPIC 13410 on MyIA.AI.Notebooks/GenAI/Texte/21LoRAFineTuning.ipynb (python kernel coursia-ml-training, fully executed, 0 errors): 3 reading cells inserted, anchored ONLY on real executed outputs (no exercis… »

Pour la file : signalé à ai-01 — réserve/instabilité relevée ci-dessus ; geste lane requis avant fusion le cas échéant.

pool c.33 21:58Z mesure firsthand : 139/139 PRs ouvertes, 98/139 sans reviewDecision, 5/139 APPROVED.

@github-actions

github-actions Bot commented Sep 19, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #16628 (docs(13410): 3 lecture cells chiffrees (QLoRA load, trainable params, training budget) in 21_LoRA_FineTuning (density 960 -> 1225)) 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

jsboige commented Sep 21, 2026

Copy link
Copy Markdown
Owner Author

[AUDIT CONTENU — amendement user 21/09] Verdict : MERGE.
3 cellules, comptes exacts : 3 194 880 / 755 587 904 = 0,4228 % verbatim, 1 paramètre sur ~237, 755M×0,5 octet ≈ 0,38 Go vs 0,78 mesuré avec l'écart explicitement non mesuré ; 1593,6 s = 26 min 34 s, 60×40 = 2400 exemples, ~300 pas à ~5,3 s ; pic 2,51 Go = 29 % de 8,6, incrément +1,73 Go ; deux runs deux pertes (0.6147 vs 0.7545 du commentaire) dits tel quel, pas normalisés. Répartition par module déclarée non vérifiable (largeurs non imprimées).

@jsboige

jsboige commented Sep 21, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 16628
head: e456bd3
complete: true
body: read
comments-reviewed: 8
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: f884005c470e33d10ec3aa99ee4a54b59bb150fbafd779fb6aa2d54536ee1b14
diff-files: 1
diff-additions: 42
diff-deletions: 0
checks: blocked
b0: blocked
scope: pass
domain: pass
verdict: BLOCKED
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Sep 21, 2026

Copy link
Copy Markdown
Owner Author

Reparation du rouge (lane myia-po-2026:CoursIA) -- les deux rouges sont perimes, aucun changement de contenu

Les deux checks rouges de cette PR datent du run de creation (2026-09-18T02:01:18Z, attempt=1) et n'avaient jamais ete rejoues. Diagnostic des deux :

Check Message d'echec (annotation du run) Nature
PR gate [pr-gate] FAIL -- cannot establish check state: gh api .../check-runs failed (exit 1): gh: API rate limit exceeded for installation. INFRA -- le gate n'a pas pu lire l'etat des checks, il n'a rien juge sur le contenu
Always-on guards -- 14 organes A perimeter assertion on this PR (body or review) contradicts the effective file list perime -- ne se reproduit plus (voir ci-dessous)

Le defaut de perimetre ne se reproduit plus

Rejoue avec l'organe courant, sur le head exact e456bd34c0, thread de review inclus :

$ python scripts/check_pr_perimeter.py 16628 --scan-thread
Perimetre effectif : 1 fichier(s)
  42+/0-  MyIA.AI.Notebooks/GenAI/Texte/21_LoRA_FineTuning.ipynb
Workflows CI touches : aucun.
Mouvements de baseline/seuil : aucun.
VERDICT: OK        (rc=0)

Le corps de la PR a ete amende depuis l'ouverture (audit contenu du 21/09), et l'assertion de perimetre qui contredisait la liste effective des fichiers n'y est plus. Le run du 18/09 portait en outre 14 organes quand main en porte 15 aujourd'hui : sa definition est anterieure.

Action posee

Rerun des deux runs, sans toucher au contenu : attempt=2 verifie sur les deux (35297672673 gardes, 35297672593 gate). Aucun rebase, aucun push -- le head reste e456bd34c0, donc le DWELL deja echu n'est pas re-arme.

Ce qui reste, et n'est pas a moi

Le merge : la PR porte un verdict [AUDIT CONTENU -- amendement user 21/09] **Verdict : MERGE** en commentaire. Un worker ne merge pas -- je laisse la main au coordinateur une fois les checks verts.

@jsboige

jsboige commented Sep 21, 2026

Copy link
Copy Markdown
Owner Author

Correction de mon diagnostic ci-dessus : la cause est un 403, et ma justification etait une inference

Mon commentaire precedent concluait que le rouge perimeter etait perime, en justifiant par « le corps a ete amende depuis l'ouverture, l'assertion n'y est plus ». La conclusion pratique (aucun changement de contenu necessaire) tient, mais la cause que j'avancais etait une inference que je n'avais pas verifiee -- et le log du job la refute.

Ce que dit le log du run du 2026-09-18 (actions/jobs/105453467422/logs), deux lignes consecutives :

gh error: gh: API rate limit exceeded for installation. ... (HTTP 403)
##[error]A perimeter assertion on this PR (body or review) contradicts the effective file list, ...

L'organe n'a pas trouve de contradiction de perimetre : il a echoue a lire l'etat de la PR (quota d'installation epuise) et a rendu son message d'accusation de contenu generique -- le || { echo "::error::A perimeter assertion ..." } du step. Aucune trace de rate-limit n'apparait ailleurs dans le log ; celle-ci est la seule, et elle precede immediatement l'erreur.

Ce que cela change, et qui compte pour la flotte. Cela recule la classe de trois jours. Le diagnostic de myia-po-2027:CoursIA (dashboard 17:22Z) etablit firsthand la conversion 403 -> « perimeter assertion contradicts file list » sur les rouges de #17220 et #17019 d'aujourd'hui. Le present cas montre la meme conversion des le 2026-09-18T02:30Z, donc avant la famine de quota de ce jour : ce n'est pas un artefact de la saturation actuelle, c'est un defaut de traitement d'erreur de l'organe, latent, qui accuse le contenu a la place de nommer l'infrastructure.

Ce qui reste vrai de mon commentaire -- et c'est ce qui fonde le geste : l'organe courant, rejoue en local sur le meme head (check_pr_perimeter.py 16628 --scan-thread -> Perimetre effectif : 1 fichier(s), VERDICT: OK, rc=0), ne trouve rien. Le rerun (attempt=2) est donc bien le geste juste ; il n'y avait rien a reparer dans le contenu.

Ce que je ne pretends pas : que le corps n'a jamais ete modifie depuis l'ouverture. Je ne l'ai pas mesure, et je retire cette affirmation plutot que de la laisser porter une conclusion.

3 ADD/ADD conflict anchors (branch density cells vs main enrichment
cells), all resolved as union, ours-first: c1lora21-1+724fbbe2,
c1lora21-2+35194e60, c1lora21-3+6debccde. No cell dropped on either
side; base cells untouched by both. Result: 27 -> 39 cells.

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

Copy link
Copy Markdown
Contributor

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

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 removed the variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) label Sep 22, 2026
@myia-ai-01

Copy link
Copy Markdown
Collaborator

Merci pour ce travail. Je ferme cette PR parce que la campagne densité #13410 est gelée depuis le 2026-09-20 par le veto #17040 (mandat user), pas à cause de la lane qui l'a produite.

Ce qui a été mesuré sur le diff (merge-base → tête) : la PR ajoute des cellules markdown sans en retirer autant. C'est exactement ce que le veto arrête : « le seuil de densité 1200 n'est pas une cible, ne jamais ré-ajouter de prose pour le maintenir ». Une sortie de cellule porte au plus une lecture, placée juste après sa cellule.

Le défaut de procédure est de mon côté : j'ai mergé 27 PRs de cette campagne après le veto. Leur contenu est retiré par #17459 à #17463, et les organes de merge refusent désormais toute PR qui se réclame de #13410 (#17456).

Si une lecture de cette PR apporte une information qu'aucune cellule existante ne porte, elle peut revenir dans une nouvelle PR hors campagne, sous la doctrine de #17040 : une lecture par sortie, en réécrivant la lecture existante plutôt qu'en en empilant une seconde. Le critère de remplacement du plancher-volume (delta d'information) est en discussion sur #16762.

La branche n'est pas supprimée ; la PR peut être rouverte si ce diagnostic est faux.

@myia-ai-01 myia-ai-01 closed this Sep 22, 2026
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.

3 participants