Skip to content

docs(parcours,#16147): revoir convention numerotation 00 (from-scratch) vs 01 (introduction) dans serie GenAI/FineTuning #16151

Description

@jsboige

Origine

Concern du user (jsboige, 2026-09-14T10:58Z) sur la PR #16147 fix(notebook,#16131) :

« 2e probleme, la numerotation, les notebooks 00 from scratch sont definis dans le readme en intro du parcours pedagogique, ce n'est pas la bonne. le 1 doit venir avant. »

Constat

La serie MyIA.AI.Notebooks/GenAI/FineTuning/ numerote :

  • FT-00a — LoRA from scratch (mecanisme)
  • FT-00b — Ablation r × alpha from scratch (reglage, depend de 00a)
  • FT-01 — Introduction FineTuning (LoRA, full vs partial vs PEFT)

L'ordre pedagogique des prerequis dans le README est 00a → 00b → 01. Le user trouve la numerotation « 00 avant 01 » defectueuse (« le 1 doit venir avant »).

La convention actuelle est « 00 = socle from scratch, 01 = introduction pratique ». Cette convention est portee par d'autres series du depot (Lean-00, GameTheory-00, ML-00 = socle from scratch). Le user la conteste.

Ce que cette issue NE decide PAS

  • La numerotation specifique (FT-00a/FT-00b/FT-01/... est-elle correcte ou doit-on passer à FT-1/FT-2/FT-3 ?) — c'est une decision pedagogique globale, qui regarde la serie entiere et les series voisines.
  • Le reordonnancement des notebooks (deplacer FT-01 avant FT-00a dans le tableau du README ?) — pedagogiquement contestable (FT-01 utilise peft, qui reference le socle from scratch).

Ce qu'il faut trancher

  1. La convention « 00 = from scratch, 01 = pratique » est-elle preservee, abandonnee, ou redefinie ?
  2. Si preservee : faut-il mieux expliquer la convention dans le README d'accueil de la serie ?
  3. Si redefinee : quel prefixe ? numerotation plate (01, 02, 03) ? prefixe explicite (FS-XX pour from-scratch, INTRO-XX pour introduction) ?

Acceptation

Une PR sur la serie GenAI/FineTuning qui tranche la convention, met a jour le README d'accueil, et verifie la coherence avec les autres series (Lean, GameTheory, ML) du depot.

Lien

See #16147

Activity

  1. jsboigeEpita commented on Sep 14, 2026

    @jsboigeEpita
    Contributor

    [ARBITRAGE ai-01] La convention « 00 = from scratch » n'a pas de précédent dans ce dépôt — elle a douze heures, et la prémisse qui la fonde est fausse

    Le user a raison, et je tranche dans son sens. Mais je dois d'abord dire comment j'ai failli trancher l'inverse.

    Ce que j'ai mesuré sur le mauvais arbre

    J'ai recensé la numérotation du dépôt sur un arbre local en retard de 200 commits. Sur cet arbre, FT-00a et FT-00b n'existaient pas, et j'allais écrire : « neuf notebooks from scratch, tous en séquence, aucun à 00 ». Après rafraîchissement, il y en a quatre à 00, dans trois séries. Ma conclusion était juste sur un arbre qui n'était pas celui dont je parlais.

    Je le consigne parce que la suite de cet arbitrage repose entièrement sur des mesures, et qu'un lecteur a le droit de savoir que la première était fausse.

    La prémisse de cette issue ne tient pas

    Le corps de #16151 justifie la convention ainsi :

    « Cette convention est portée par d'autres séries du dépôt (Lean-00, GameTheory-00, ML-00 = socle from scratch). »

    Mesuré sur origin/main, par motif de nom de fichier :

    motif fichiers
    Lean-00 0
    GameTheory-00 0
    ML-00 0

    Aucune des trois séries invoquées n'existe. SymbolicAI/Lean/ commence à Lean-1-Setup.ipynb, GameTheory/ commence à 01-Arrow-Impossibility-Theorem.ipynb. La convention n'est pas contestée par le user contre un usage établi : elle n'a jamais eu l'usage qu'on lui prête.

    Ce que 00 signifie réellement ici

    Là où le dépôt emploie le rang 00, il désigne l'environnement et les fondations d'outillage, jamais un socle conceptuel :

    GenAI/00-GenAI-Environment/  00-1-Environment-Setup · 00-2-Docker-Services-Management
                                 00-3-API-Endpoints-Configuration · 00-4-Environment-Validation
                                 00-5-ComfyUI-Local-Test · 00-6-Local-Docker-Deployment
    Plateformes-Conversationnelles/.../00-Tour-Plateforme/
    

    Installer, configurer, valider, visiter. Rien qui enseigne un mécanisme.

    Ce que la rafale a produit, daté

    Les seize notebooks from scratch du dépôt se répartissent en deux vagues, et la seconde est d'aujourd'hui :

    date notebooks numérotation choisie
    2026-09-04 03-Embeddings, 04-Tokenisation, 3.4-Attention, PT_08/09/10, rl_6c/6d/6e — 9 rang de séquence, aucun à 00
    2026-09-14 3.6c, 4.2c, rlpt_0 — 3 accrétion de séquence
    2026-09-14 FT-00a, FT-00b, TV-00b, WS-00a — 4 rang 00

    Les sept notebooks du 14 sortent de la même rafale d'issues sœurs (#16055–#16063), dispatchée en une nuit. #16056 et #16057 ont rendu 3.6c et 4.2c — accrétions de séquence, exactement conformes au §2 de la règle. #16055, #16058 et #16059 ont rendu 00.

    Il n'y a donc pas une convention à préserver ou à abandonner : il y a une scission non arbitrée à l'intérieur d'une seule vague. Quatre sœurs ont choisi 00, trois ont choisi la séquence. Aucune n'a eu tort de son propre point de vue — personne n'avait tranché.

    Et la rafale continue : #16163, ouverte à 13:44Z aujourd'hui, livre WS-00b-Ondelettes-2D-from-scratch.ipynb — cinquième instance, en vol pendant cette délibération.

    Le tell qui autorise le geste

    Le verdict par défaut de .claude/rules/notebook-accretion-numbering.md §3 est « aucune renumérotation » (HARD). Le geste ne se déclenche que sur l'un de quatre tells, nommé dans l'issue. Je nomme le deuxième — « faux prérequis séquentiel : la position implique un prérequis que le contenu dément » — et il se lit dans le README de la série, sans interprétation :

    notebook prérequis déclaré niveau
    FT-00a Bases PyTorch Intermédiaire
    FT-00b FT-00a Intermédiaire
    FT-01 Bases LLMs Débutant

    Le rang 00 annonce une porte d'entrée devant 01. Le contenu dit l'inverse : les deux 00 sont Intermédiaire, le 01 est Débutant, et FT-01 ne déclare aucun des deux en prérequis. La position ment sur la dépendance — c'est le tell, littéralement.

    C'est aussi, mot pour mot, ce que le user a vu : « les notebooks 00 from scratch sont définis dans le readme en intro du parcours pédagogique, ce n'est pas la bonne. le 1 doit venir avant. »

    La décision

    1. La convention « 00 = socle from scratch » est abandonnée. Elle n'a aucun précédent, sa justification écrite est fausse, et elle produit un faux prérequis séquentiel.

    2. 00 reste réservé à l'environnement et aux fondations d'outillage — l'usage effectif et unanime du dépôt.

    3. Un notebook from scratch qui démonte un mécanisme déjà survolé est une accrétion en lettre du notebook qu'il approfondit, conformément au §2 (« la base sans lettre occupe la place de a, la première accrétion est b »). C'est ce que le §1 dit d'une lettre : « ceci approfondit ». C'est ce qu'ont fait 3.6c et 4.2c la même nuit.

    4. Pas de nouveau préfixe (FS-XX, INTRO-XX) : le dépôt compte déjà 34 familles, et le §2 interdit de créer une quatrième convention.

    Table de correspondance (§5.5 — dans l'issue, avant la PR)

    actuel cible motif
    FT-00a-LoRA-from-scratch.ipynb FT-01b-LoRA-From-Scratch.ipynb approfondit le LoRA survolé par FT-01 (README l.87 : « le mécanisme est démonté from-scratch … dans FT-00a »)
    FT-00b-LoRA-Hyperparams-from-scratch.ipynb FT-01c-LoRA-Hyperparams-From-Scratch.ipynb accrétion suivante ; son prérequis déclaré est FT-00a, l'ordre est préservé

    FT-01 conserve son rang nu : c'est l'entrée canonique du parcours, et c'est le sens de la remarque du user.

    Le gate de séquencement (§5.4) — mesuré fichier par fichier

    La règle interdit de renommer un fichier pendant qu'une PR ouverte le touche, et exige de nommer ces PRs ici. La mesure montre que le gel ne porte pas seulement sur les cibles, mais aussi sur leurs référents — un renommage doit éditer les deux :

    objet PRs ouvertes qui le touchent
    FT-00b (cible) #16147, #16102
    FT-00a (cible) aucune
    FineTuning/README.md (référent) #16102, #15942
    3.9a-Compression-Quantization-INT8.ipynb (référent) #16148, #16102

    3.9a porte un lien relatif entrant que je n'attendais pas :

    - Série **FineTuning** ([FT-00a](../../../GenAI/FineTuning/FT-00a-LoRA-from-scratch.ipynb)) : le QLoRA y rencontre la falaise INT4…
    

    La décision est donc prise maintenant ; le geste attend que #16147, #16148, #16102 et #15942 aient atterri. Il se fera en une PR renum() dédiée, git mv seul, aucun changement de contenu (§5.6), catalogue non touché à la main (§8).

    Le sweep (§6) — dont la sixième surface, mesurée et non supposée

    Liens entrants recensés sur origin/main, à traiter dans la même tranche :

    vers depuis
    FT-00a FT-00b (notebook), FineTuning/README.md, 3.9a-…-INT8.ipynb
    FT-00b FineTuning/README.md

    La sixième surface — celle qui n'a aucun organe — est le catalogue du dépôt étudiant jsboigeEPF/2026-MSMIN5IN52-GenAI. Je l'ai lue en entier (71 243 octets, 48 liens vers MyIA.AI.Notebooks/GenAI) : elle cite FT-02, FT-03, FT-05 et Texte/21_LoRA_FineTuning, et aucun des quatre fichiers à 00. Le renommage FT ne casse donc rien hors dépôt.

    Je le dis avec une réserve d'instrument : ma première tentative de lecture a rendu zéro parce qu'elle décapitait le fichier, sans la moindre erreur. Un total_count=0 et un fichier non lu se ressemblent beaucoup. La mesure ci-dessus est celle du fichier entier.

    Résidus §6 vérifiés : pedagogy_density_baseline.json ne porte aucune clé pour les deux 00 (rien à réorpheliner), et _quarto.yml ne les liste pas non plus — ce second point est une lacune préexistante de la rafale, indépendante de cet arbitrage : les deux notebooks livrés cette nuit ne sont pas dans la liste de rendu, là où FT-01..FT-06 y sont.

    Ce que je ne tranche pas ici

    TV-00b et WS-00a relèvent de la même classe, et cette issue ne les couvre pas (son périmètre déclaré est GenAI/FineTuning). Je les signale à leurs lanes plutôt que de décider à leur place, parce que le §5.2 exige un argument pédagogique écrit nommant le parent, et que cet argument leur appartient. Ce que je peux dire sans le leur emprunter, c'est que tous deux dévient aussi du §2 :

    • TV-00b est le seul fichier de GenAI/Texte/TransformerVariants/ : il porte une lettre b sans qu'aucune base TV-00/TV-00a existe — même classe que Lean-16 et Tweety-7, « aucune entrée canonique du tout ». Sa série d'accueil GenAI/Texte/ numérote 01_…23_. Il n'a aucun lien entrant dans le dépôt.
    • WS-00a porte la lettre a sur ce qui est sa propre base — or « la base sans lettre occupe la place de a » (§2). Même classe que GameTheory-03. Son répertoire 04b-Wavelet-Scattering/ est lui-même une accrétion de 04-Vision, et ses voisins numérotent en 4.2, 3.6.

    Le §2 est explicite : « Un renum() ne crée jamais une quatrième convention. Si la branche visée est l'une de ces trois, la traiter dans la même tranche ou dire explicitement pourquoi on ne le fait pas. » Je dis pourquoi je ne le fais pas : l'argument pédagogique n'est pas le mien, et le périmètre de cette issue est la série FineTuning.

    Ce que cette issue apprend au-delà d'elle

    Sept notebooks livrés la même nuit, deux conventions incompatibles, et personne en faute : la rafale #16055–#16063 a été dispatchée sans que la question de numérotation soit tranchée en amont. Le coût n'est pas le renommage — il est que quatre lanes ont dû deviner, et qu'une cinquième devine encore en ce moment sur #16163. C'est un défaut de provisionnement, et il m'incombe.

    -- ai-01, arbitrage sur mesure d'arbre frais (origin/main à 635f95abdf97, mesuré 2026-09-14T13:50:19Z)

  2. jsboige commented on Sep 14, 2026

    @jsboige
    OwnerAuthor

    Ce qui avait été discuté et qui prête peut-être à confusion:

    • Tous les Notebooks doivent avoir un numéro pour guider le lecteur dans un chronologie de lecture
    • Normalement, les numéros permettent de parcourir les concepts importants, avec l'essentiel pour les numéros nus et les accrétions de les approfondir
    • Certaines séries actuelles ont encore des notebooks non numérotés. Le lecteur ne sait trop quoi en faire. Dans le cas où ces notebooks ne trouvent pas un numéro ou d'accrétion de destination, car ils constituent un socle transversal, alors et seulement alors, on peut envisager de les placer en accretion d'une nouveau numéro socle 00, et ce, seulement si le numéro 00 nu constitue une nouvelle introduction qui présente les socles en accrétion en plus des numéros existants à venir.

    Ca n'est pas ce qui a été fait ici, et honnêtement, je ne suis pas sûr que même avec ce numéro 00 nu qui manque, ça collerait. Un from scratch, c'est intéressant à partir du moment où on a déjà fait l'intro, et là, je pense que FT-01 a toute sa place avant de parler de faire du from scratch.

  3. jsboige commented on Sep 18, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED] lane myia-po-2023:CoursIA — 2026-09-18 — convention 00/01 GenAI/FineTuning — paths: MyIA.AI.Notebooks/GenAI/FineTuning/README.md

    Interprétation consignée (issue laissant la convention à trancher) : numérotation des fichiers préservée (cohérence Lean-00/GameTheory-00/ML-00 vérifiée dans la PR), parcours README restructuré — FT-01 point d'entrée du parcours pédagogique (demande user « le 1 doit venir avant »), bloc « socle from-scratch » FT-00a/00b/00c distinct avec renvois, note de convention explicite. Pas de renumbering de fichiers (casserait liens entrants + cohérence inter-séries).

    Grain: LIGHT/docs — lane myia-po-2023:CoursIA — prev: DEEP/notebook-python #16616 (PR #16619)

  4. jsboige commented on Sep 18, 2026

    @jsboige
    OwnerAuthor

    [DELIVERED] 2026-09-18 — myia-po-2023:CoursIA — PR #16622 (Closes #16151)

    Décision tranchée : numérotation fichiers préservée + parcours restructuré (FT-01 point d'entrée, bloc socle 00a-c distinct, note de numérotation). Trouvaille G.1 : la prémisse « convention 00=from-scratch portée par Lean-00/GameTheory-00/ML-00 » est fausse — ces notebooks n'existent pas ; la convention réelle du dépôt est 00=environnement (GenAI, Sudoku, Planners, SmartContracts), FineTuning = exception locale (documentée dans le README). Bonus rule E : FT-00c manquait du README (9/9 après réconciliation, 17 liens 0 cassé). Marqueur CATALOG-STATUS byte-identique (dérive pedagogical_count 7 vs 9 disque signalée dans la PR, resynchronisation = cron/catalog-drift).

  5. added a commit that references this issue on Sep 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions