Skip to content

Feat(curriculum,#19545): parcours vertical ML Engineer (EPIC #19543 pli 1) - #19586

Merged
jsboige merged 1 commit into
mainfrom
feature/19545-ml-engineer-parcours
Oct 7, 2026
Merged

jsboige merged 1 commit into
mainfrom
feature/19545-ml-engineer-parcours

Conversation

@jsboige

@jsboige jsboige commented Oct 6, 2026

Copy link
Copy Markdown
Owner

Grain: DEEP/notebook-python -- lane myia-po-2024:CoursIA-2 -- prev: MED/notebook-lean #19577

Issue #19545 (EPIC #19543 pli 1)

Le coordinateur (myia-ai-01:CoursIA) a dispatch le 2026-10-06 a 18:29Z un grain DEEP/notebook-python pour relier les series ML a l'ingenierie : reproductibilite, derive en deploiement, cout de calcul, mise en service. Le tapis picker etait tari (Tell c.19246) ; le dispatch a ete le point d'entree reel.

Livrables

  1. docs/curriculum/ml-engineer.json : manifeste au format de actuariat.json et llm-engineer.json (feat(curriculum,#19544): parcours vertical LLM Engineer (EPIC #19543 pli 1) #19580). 7 branches ordonnees avec prerequis, 5 accretions (detours optionnels).
  2. docs/curriculum/ml-engineer.compiled.json : sortie compilee par generate_parcours.py --manifest --branch ... --accretion .... 12 groupes (7+5), 30 h de duree estimee (sous le seuil 50 h).
  3. scripts/notebook_tools/tests/test_generate_parcours.py : nouvelle classe TestMlEngineerManifest (5 tests) : existence disque, presence au catalogue, compilation 7+5, duree < 50 h, fil d'ingenierie explicite.

Branches (7, ordre pedagogique)

Branche Pre-requis Notebooks Description
donnees - 2 NumPy, Pandas (socle non negociable)
workflow-ml donnees 2 2.1-2.2 : pipeline reproductible + descente de gradient
apprentissage-supervise workflow-ml 5 regression lineaire/logistique, generatifs, grandes dim, arbres/forets/ensembles
evaluation-validation apprentissage-supervise 4 biais-var, hyperparametres, desequilibre, analyse d'erreurs
fiabilite evaluation-validation 4 calibration, equite, derive deploiement, donnee responsabilite
interpretabilite apprentissage-supervise 2 SHAP/LIME/contrefactuels, pont causal Shap
deep-learning-budget evaluation-validation 6 retroprop, optimiseurs, regularisation, transformer, budget memoire, DDP/ZeRO/FSDP

Accretions (5, detours optionnels)

Detour Branche parente Notebooks
theorie-generalisation deep-learning-budget 7
compression-mise-en-service deep-learning-budget 7
modeles-non-supervises evaluation-validation 4
svm-noyautiques apprentissage-supervise 2
optimisation-convexe-avancee deep-learning-budget 5

Total : 50 carnets, 30 h.

Fil d'ingenierie explicite

Le manifeste ne se contente pas de lister des carnets : les descriptions de branche portent le discours ML Engineer (reproductibilite, cout, mise en service, derive, calibration). C'est ce qui distingue ce parcours du data scientist : la production au-dela de l'entrainement.

Le test test_ingenierie_threading verifie que chaque branche profonde (toutes sauf donnees et workflow-ml) mentionne au moins un mot-cle parmi : reproductib*, production, service, deploi*, cout/cout, calibration. C'est le contrat que le manifeste tient sur le fil ingenierie.

Validation

  • pytest scripts/notebook_tools/tests/test_generate_parcours.py : 55 passed (5 nouveaux + 50 anciens).
  • generate_parcours.py --manifest docs/curriculum/ml-engineer.json --branch ... --accretion ... : 12 groupes, 30 h, 0 erreur.
  • Chaque notebook cite existe sur main (test_all_selected_notebooks_exist_on_disk).
  • Pas de carnet orphelin non catalogue (test_all_paths_are_in_catalog : la regle explicite est de dropper les accretions recentes, pas de regenerer le catalogue a la main).

Trou principal

L'issue spec nommait ce trou : "y a-t-il un notebook qui sert un modele entraine ?". Verifie firsthand : aucun carnet du depot ne couvre FastAPI / Flask / BentoML / Seldon / service HTTP minimal. Les seuls points de contact actuels sont ML-6-ONNX-Python.ipynb (sauvegarde/chargement, pas service) et ML-7-Recommendation.ipynb (utilise ONNX localement, pas expose). Le pli 2 ou 3 doit porter ce carnet de mise en service. Carte des trous detaillee sur #19543.

Hors perimetre

Conformite aux regles

  • catalog-pr-hygiene : COURSE_CATALOG.generated.* byte-identique a main (pas de regeneration manuelle sur branche feature). Le seul ajustement est le drop d'un chemin absent du catalogue (regle explicite du test).
  • H.7 plan P0-P4 : ce grain releve de la phase P0-P4 regen mensuelle via la regeneration catalogue ; le manifeste est une premiere composition.
  • Prong A (vrai outil SOTA) : aucun workaround degrade ; les notebooks references sont les versions canoniques du depot.
  • Prong B (probleme non-trivial) : le manifeste lui-meme n'execute pas de solveur ; la complexite est dans la selection et l'ordonnancement des carnets.

Refs #19543, #19545, #14620, #17982, #18207.

Co-Authored-By: Claude Haiku 4.5 (1M context) noreply@anthropic.com

🤖 Generated with Claude Code

…li 1)

Issue #19545 (EPIC #19543 pli 1, dispatch ai-01) demande un manifeste
qui relie les series ML a l'ingenierie : reproductibilite, derive en
deploiement, cout de calcul, mise en service.

Livrables :
1. docs/curriculum/ml-engineer.json : manifeste au format de
   actuariat.json et llm-engineer.json. 7 branches ordonnees avec
   prerequis + 5 detours (accretions). 50 carnets.
2. docs/curriculum/ml-engineer.compiled.json : sortie compilee par
   generate_parcours.py --manifest --branch ... --accretion ...,
   12 groupes (7+5), 30h de duree estimee.
3. scripts/notebook_tools/tests/test_generate_parcours.py : nouvelle
   classe TestMlEngineerManifest (5 tests) :
   - existence disque
   - presence au catalogue (pas de carnet orphelin non catalogue)
   - compilation 7+5 groupes
   - duree totale < 50h
   - fil d'ingenierie explicite sur chaque branche > 1

Branches (7) : donnees, workflow-ml, apprentissage-supervise,
evaluation-validation, fiabilite, interpretabilite, deep-learning-budget.

Accretions (5) : theorie-generalisation, compression-mise-en-service,
modeles-non-supervises, svm-noyautiques, optimisation-convexe-avancee.

Grain : DEEP/notebook-python (premier cycle DEEP/CONTENU consecutif
apres 3 cycles MED/META -- plancher G-VAR-1 retrouve).

Validation :
- pytest 55 passed (5 nouveaux + 50 anciens).
- generate_parcours.py : 12 groupes, 30h, 0 erreur.
- aucun carnet modifie (le manifeste compose, il ne reecrit pas).
- catalogue byte-identique a main (catalog-pr-hygiene).

Refs #19543, #19545, #14620.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 6, 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 commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #19586 (Feat(curriculum,#19545): parcours vertical ML Engineer (EPIC #19543 pli 1)) 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 Oct 6, 2026
@jsboige

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

[INFO c.73] myia-po-2024:CoursIA-2 -- ripe-signal #19586 @ 94030b2

PR Feat(curriculum,#19545) -- EPIC #19543 pli 1 (parcours vertical ML Engineer). 3 livrables :

  • docs/curriculum/ml-engineer.json : manifeste 7 branches ordonnees (donnees, workflow-ml, apprentissage-supervise, evaluation-validation, fiabilite, interpretabilite, deep-learning-budget) + 5 accretions.
  • docs/curriculum/ml-engineer.compiled.json : sortie compilee, 30 h sous le seuil 50 h.
  • scripts/notebook_tools/tests/test_generate_parcours.py : nouvelle classe TestMlEngineerManifest (5 tests).

Tete de la PR : 94030b2067ecdb3b19bb9e1c5a64a7e3aa5e3e1f (1 commit, pas de rebasement ulterieur).

Gates au head courant (verifie REST commits/<sha>/check-runs) :

  • 25/25 SUCCESS, 0 FAILURE
  • Aucune revue postée (ni Hermes, ni NanoClaw, ni ai-01)

mergeable: True, merge_state: clean.

Le coordinateur (myia-ai-01:CoursIA) a pose le [CLAIMED] sur l'issue #19545 le 2026-10-06T18:27:56Z, scope duplique clairement revendique par la lane po-2024. Le manifeste est livre, la verification 5/5 tests OK (cf. body PR).

Forme muette Tell c.17071 (tokens verdict encages en backticks).

@jsboige
jsboige merged commit 4aa0cc9 into main Oct 7, 2026
25 of 26 checks passed
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.

1 participant