Repository navigation
EPIC origami : de la bibliothèque au cursus, parcours verticaux d'abord puis les sous-sujets confirmés absents #19543
Description
Grain: DEEP/notebook-python
Pourquoi cette issue
Un retour extérieur sur le catalogue, reçu le 06/10, propose treize évolutions et cinq parcours verticaux. Sa thèse centrale est juste. Le dépôt compte 1498 notebooks, mesurés par find MyIA.AI.Notebooks -name "*.ipynb" sans les sorties, les points de contrôle ni _archive. Le prochain saut de qualité ne viendra donc pas d'un surcroît de volume. Il viendra de la transformation de la bibliothèque en itinéraires guidés, avec prérequis, niveaux, objectifs, évaluations et projets finaux.
Ce retour ne connaît pas notre corpus. Il ignore en particulier que l'infrastructure de parcours existe déjà. Cette issue confronte ses propositions aux sources, puis les range en plis.
Consigne pour toute lane qui déplie un pli : partir du besoin décrit ici et de notre corpus. Les règles habituelles s'appliquent : C.1, C.2, organe natif d'abord (organ-first-implementation.md), étiquetage exemple ou exercice.
Vérification avant de croire le retour
Chaque proposition a été confrontée au corpus le 06/10. Les termes ont été cherchés dans les sources des cellules, sorties exclues : une recherche brute sur les .ipynb donne de faux positifs dans les images en base64.
| # | Thème proposé | Verdict | Ce qui existe | Ce qui manque |
|---|---|---|---|---|
| 1 | Data science, de zéro au ML | partiel | DataScienceWithAgents/01 (1.2 NumPy, 1.3 Pandas), 02-ML-Cours (2.1 workflow, 2.5 biais-variance, validation croisée et ROC, 2.10 hyperparamètres, 2.14 SHAP/LIME) |
Python depuis zéro (pas de 1.1), visualisation, exploration et nettoyage, statistiques descriptives |
| 2 | Tokenisation | partiel | RAG-et-Memoire-Semantique/04-Tokenisation-From-Scratch (BPE à la main, coût), tiktoken dans 5 notebooks |
WordPiece (0 occurrence), Unigram/SentencePiece comme sujet, comparatif de tokenizers, effet multilingue |
| 3 | Embeddings | partiel | RAG/03-Embeddings-From-Scratch, RAG/02-Retrieval-Avance, 03-DeepLearning/3.8-Representations-Contrastives |
visualisation de l'espace vectoriel, banc de modèles d'embedding |
| 4 | Bases vectorielles | partiel | RAG/05-Stockage-Vectoriel (HNSW, approché contre exact, rappel), RAG/05b (serveur Qdrant), RAG/08 (hybride), SemanticKernel/05-VectorStores |
FAISS (0), pgvector (0), comparaison mesurée de plusieurs moteurs |
| 5 | LLM local | couvert | GenAI/Texte/10_LocalLlama (vLLM, Ollama, endpoints compatibles OpenAI : le projet final proposé existe déjà), 10e/10f (bancs .NET), 11_Quantization |
MLX et Apple Silicon (aucun matériel dans la flotte) |
| 6 | Ingénierie d'inférence | partiel | 10b_Inference_Mechanics (KV-cache construit et mesuré, prefill, continuous batching, PagedAttention), 10c, 11, 09d |
décodage spéculatif traité comme sujet (il n'est que mentionné), toit mémoire et bande passante, TensorRT-LLM |
| 7 | Context engineering | partiel | 02_PromptEngineering, 03_Structured_Outputs, 03c_Constrained_Decoding_Python, 10c_Long_Context_Strategies, 09d_Production_Caches, 14b_Paginated_Memory |
DSPy (0 occurrence) et l'optimisation de pipelines, hiérarchie d'instructions, compression de contexte |
| 8 | Évaluation des LLM et des agents | couvert | 22_Evaluating_Generated_Text (BLEU et ROUGE from scratch, juge LLM et ses failles, fidélité RAG), 13b_Agent_Evaluation, PostTraining/PT_06 |
harnais de non-régression avant/après : déjà au pli 3 de #18220 |
| 9 | Sécurité et red team | partiel | 09b_Prompt_Security_RedTeam (injection directe et indirecte), GenAI/Security/* (surface d'attaque MCP, direction de refus) |
jailbreaks, empoisonnement, chaîne d'approvisionnement, bac à sable et permissions comme sujets |
| 10 | Matériel pour l'IA | partiel | 11_Quantization, 3.9/3.9a (formats flottants, INT8), 3.11-Budget-Memoire-Entrainement |
relier débit, mémoire et coût sur notre matériel ; TPU, NPU, Apple et AMD absents (voir pli 4) |
| 11 | Applications rapides | partiel | Gradio, Streamlit et FastAPI utilisés dans une dizaine de notebooks, toujours comme outil | un notebook dont le sujet est le passage du notebook à l'application |
| 12 | Auto-évaluation | déjà suivie | — | #18207 (pilote 02-ML-Cours), #19297 |
| 13 | Glossaire transversal | déjà suivi | — | #18209 (pilote 03-DeepLearning) |
| 14 | Parcours verticaux | socle existant | PARCOURS.md (3 parcours narratifs), docs/curriculum/ (dont actuariat.json, première sortie du compilateur), GenAI/Texte 01 à 22, qui forme déjà de fait un arc d'ingénierie LLM |
les verticaux ML Engineer, LLM Engineer, AI Engineer et Recherche ; le symbolique existe déjà (symbolic-formalization) |
Bilan : 2 thèmes couverts, 9 partiels, 3 déjà portés par une issue, aucun entièrement absent. Le retour sous-estime le corpus. Ses lacunes réelles sont des sous-sujets précis, presque tous dans des séries qui existent.
Angles morts du retour (à ne pas reprendre)
- Le tour d'outils. Sept bases vectorielles, cinq moteurs d'inférence, du low-code et de l'AutoML : un inventaire n'est pas un cours. Chez nous, un concept s'enseigne avec un organe. Une comparaison n'entre que si elle enseigne quelque chose, par exemple exact contre approché, ou rappel contre latence.
- Le matériel qu'on n'a pas. Un banc TPU, NPU, Apple Silicon ou AMD ne peut pas produire de sorties réelles (C.2) : la flotte est NVIDIA et CPU. En revanche, notre propre infrastructure est un cas réel rare : vLLM servi en continu, sondes VRAM mesurées sur 4090 ([EPIC] Training & Post-Training — trading + sudoku + RL/PPO + GenAI fine-tuning (po-2024 pionnier ⇄ ai-01 approfondit) #1454), registre de réservation GPU.
- Les niveaux en emoji. Ils sont interdits dans le code et les fichiers générés (règle E).
PARCOURS.mdporte déjà des niveaux de difficulté en texte. - Le Python depuis zéro. C'est un vrai trou, mais nos publics d'école arrivent avec un prérequis Python. L'ajout vise l'apprenant autonome, sans alourdir les parcours d'école.
Ce que le retour confirme (à garder)
Nos forces ne figurent pas dans sa liste, mais ses priorités ne les menacent pas. Les jumeaux Python, .NET et Lean, la discipline d'exécution, la preuve formelle, le symbolique et le RAG mesuré restent la colonne vertébrale. Les parcours verticaux doivent les traverser, pas les contourner.
Plis
Pli 1 — parcours verticaux (ouvert maintenant)
C'est la proposition la plus importante. Elle se construit sur le compilateur de #14620 et sur les référentiels de #17982, sans nouvelle infrastructure.
- [Parcours] Parcours vertical « LLM Engineer » : manifeste compilé et carte des trous (EPIC #19543, pli 1) #19544 — parcours vertical « LLM Engineer », composé depuis
GenAI/Texte,RAG-et-Memoire-Semantique,FineTuningetPostTraining - [Parcours] Parcours vertical « ML Engineer » : manifeste compilé et carte des trous (EPIC #19543, pli 1) #19545 — parcours vertical « ML Engineer », composé depuis
DataScienceWithAgents01 à 04 et le budget mémoire d'entraînement
À déplier quand #19544 aura rendu sa carte des trous : « AI Engineer » (GenAI, agents, production) et « Recherche » (papiers, reproduction, ablations ; docs/curriculum/recherche.md n'est aujourd'hui qu'une vue de catalogue). Le vertical symbolique n'est qu'à relier : symbolic-formalization existe.
Pli 2 — sous-sujets confirmés absents (ouvert maintenant)
- [GenAI/Texte] Du prompt écrit au prompt compilé : optimiser un pipeline avec DSPy, mesuré sur jeu de test (EPIC #19543, pli 2) #19546 — DSPy et l'optimisation de pipelines de contexte (0 occurrence dans le corpus)
- [DataScienceWithAgents] Prérequis data science : Python, visualisation, exploration et nettoyage, statistiques descriptives (EPIC #19543, pli 2) #19547 — prérequis data science : Python depuis zéro, visualisation, exploration et nettoyage, statistiques descriptives (
DataScienceWithAgents/01)
Pli 3 — à déplier une ligne à la fois
La lane qui clôt une fille du pli 2 ouvre la ligne suivante, après avoir re-vérifié son constat. Au plus deux filles sont ouvertes à la fois. Chaque ligne étend une série existante plutôt que d'en créer une.
| Ligne | Série d'accueil | Contenu |
|---|---|---|
| Tokenizers comparés | RAG-et-Memoire-Semantique (après 04) |
WordPiece et Unigram from scratch sur le même corpus, comparaison des longueurs, effet multilingue sur le coût |
| Espace des embeddings | RAG-et-Memoire-Semantique (après 03) |
réduction de dimension et visualisation, banc de deux ou trois modèles sur notre corpus français |
| Moteurs vectoriels mesurés | RAG-et-Memoire-Semantique (05/05b) |
FAISS et pgvector à côté de Qdrant, sur le même jeu : rappel, latence, mémoire, filtrage |
| Inférence : spéculatif et toit mémoire | GenAI/Texte (après 10b) |
décodage spéculatif mesuré sur la flotte, modèle du toit bande passante/calcul relié aux mesures de #1454 |
| Red team au-delà de l'injection | GenAI/Security |
jailbreaks, empoisonnement, chaîne d'approvisionnement, bac à sable et permissions d'un agent outillé |
| Du notebook à l'application | GenAI/Texte ou Vibe-Coding |
interface, API et déploiement local d'un pipeline déjà construit dans la série |
| Matériel, coût, débit | GenAI/Texte ou 03-DeepLearning |
relier formats numériques, VRAM, débit et coût par million de tokens, sur nos seules cartes |
Pli 4 — arbitrages
- Bancs sur TPU, NPU, Apple Silicon, AMD : non retenus. Sans matériel, pas de sortie réelle (C.2) ; verdict
INTRINSIC. Réouvrable si la flotte en acquiert. - Inventaire d'outils (sept bases vectorielles, low-code, AutoML) : non retenu comme tel. Une famille par concept ; la comparaison n'entre qu'au pli 3, mesurée.
- Niveaux et certification : les niveaux existent déjà en texte (
PARCOURS.md). La certification a déjà été écartée par EPIC origami : lacunes pédagogiques vérifiées — dispositifs pour l'apprenant d'abord, puis contenus confirmés absents #18220 : nous notons, nous ne certifions pas.
Articulation avec l'existant (ne pas dupliquer)
| Déjà porté par | Sujet |
|---|---|
| #18220 | lacunes vérifiées du 28/09 : auto-évaluation (#18207), préflight (#18208), glossaire (#18209), décodage contraint (#18212), harnais de non-régression (pli 3) |
| #13844 | refonte des parcours, PARCOURS.md |
| #14620 | compilateur de parcours et ses instances verticales |
| #17982 | correspondance notebooks-compétences |
| #10921 | site public |
Note de passage : #18212 (décodage contraint) est ouverte alors que GenAI/Texte/03c_Constrained_Decoding_Python.ipynb existe sur main. La lane qui la porte vérifie si elle est déjà livrée.
Activity
jsboige commentedon Oct 6, 2026
[c.205 myia-ai-01:CoursIA-2] Carte des trous du pli 1 « LLM Engineer » (PR #19580, issue #19544).
Synthese
Pli 1 (parcours LLM Engineer) a livre un manifeste
docs/curriculum/llm-engineer.json(8 branches + 6 accretions, 39 notebooks, 26 h) avec un test dedie (TestLlmEngineerManifest, 4 tests, 54/54 verts). Le pli 1 tient la consigne de l'EPIC : composer l'arc sans modifier de notebook.Trous identifies (a traiter dans les plis suivants)
Trous actionnables (plis 2/3 de l'EPIC)
stockage-ragappel-controlesecuriteTrous INTRINSIC (non actionnables sur la flotte)
Ces 4 trous relevent d'un constat materiel, pas d'un manque documentaire. A documenter dans l'EPIC comme « non actionnable » (le depot a un GPU 2 RTX 3090 sur po-2023 et une flotte de runners self-hosted NVIDIA ; le perimetre est fixe).
Decompte
Liens
docs/curriculum/llm-engineer.jsondocs/curriculum/llm-engineer.compiled.jsonjsboige commentedon Oct 6, 2026
Carte des trous — Manifeste ML Engineer (#19545 / EPIC #19543 pli 1)
Statut
donneesworkflow-mlapprentissage-superviseevaluation-validationfiabiliteinterpretabilitedeep-learning-budgetTotal : 50 carnets, 30h de duree estimee. Compile clean (0 erreur, 12 groupes, 30h).
Trou principal : mise en service d'un modele
L'issue spec (#19545) nomme ce trou explicitement : "y a-t-il un notebook qui sert un modele entraine ?"
Verifie : aucun carnet du depot ne couvre FastAPI, Flask, BentoML, Seldon, ou un service HTTP/grpc minimal qui prend un modele ML et l'expose. Les seuls points de contact :
ML-6-ONNX-Python.ipynb(sauvegarde/chargement via ONNX, pas de service)ML-7-Recommendation.ipynb(utilise ONNX localement, pas de service)ML/ML.Net/ML-3-Entrainement-Python.ipynb(entrainement, pas service)Le pli 2 ou 3 doit porter un carnet de mise en service :
FastAPI-serveur-ML-from-scratch.ipynbou equivalent, sur le modele du carnet de tokenisation04-Tokenisation-From-Scratch.ipynbdu parcours LLM Engineer.Trous mineurs (non bloquants pour le pli 1)
donneesworkflow-mlsklearn-01-Setup.ipynb?)apprentissage-supervisedeep-learning-budgetRenommage prealable
Aucun renommage necessaire sur les fichiers des branches. Le seul doublon potentiel etait
2.4b-AdaBoost-From-Scratch.ipynb(recent accretion non catalogue), que j'ai retire du manifeste pour respecter la regle catalog-pr-hygiene : pas de carnet orphelin non catalogue dans un manifeste. Une regeneration ulterieure du catalogue (par #9377) le reintegrera.Acceptance issue #19545
generate_parcours.py --manifest docs/curriculum/ml-engineer.json: OK (12 groupes, 30h)main: verifie par script (test_all_selected_notebooks_exist_on_disk)main(catalog-pr-hygiene : regeneration par Les donnees quantitatives appartiennent au CI, pas a la prose — supprimer les compteurs manuels (44 notebooks + ~30 README) #9377, pas a la main)Refs #19543, #19545, #14620.
jsboige commentedon Oct 6, 2026
Compléments au pliage (lane myia-po-2027, vérification 2026-10-06)
J'ai relu l'EPIC après avoir reçu le même type de retour. Les 14 thèmes pliés couvrent l'essentiel ; trois angles du même corpus de propositions me semblent non encore pliés et pertinents. Je les pose ici avec ce qui existe déjà mesuré, pour ne pas dupliquer.
1. Pédagogie par agents (0 occurrence mesurée)
Aucune issue ni fichier ne traite d'agents pédagogiques au-delà de leur utilisation technique dans des notebooks GenAI. La distinction manque entre :
09d_Production_Caches,14b_Paginated_Memory,SemanticKernel/05-VectorStores) ;Ce qui existe :
genai-iterator,genai-stack,qc-research-notebook(sous-agents cluster, hors parcours apprenant).Ce qui manque :
Hors scope apprentissage, ces agents sont eux-mêmes des sujets d'ingénierie : comment les branche-t-on sur notre infrastructure (kernel Jupyter, carnet Quarto, registre GPU), comment évalue-t-on leur cours (cf. axe 5 ci-dessous).
2. AI-native education : les agents comme objet d'étude
Le retour souligne que l'expérimentation pédagogique elle-même (mesurer apprentissage, rétention, dépendance à l'agent, transfert, qualité du raisonnement) est un terrain inexploré par les cursus open source. Le dépôt n'a pas d'instance de ce terrain :
#4208parle de publication du cours, pas d'observation pédagogique.#10921parle de site, pas d'étude.Ce qui manque : un dossier, voire un EPIC, qui pose la question de manière falsifiable. « CoursIA Human/AI Teaching Experiment » est une formulation que je n'ai pas vue écrite dans nos issues.
3. Arc transverse de construction d'un agent scientifique par l'apprenant
#19297(finition de série, critères de sortie, blocs de fin, capstone) traite le capstone comme un livrable de contenu. Le retour distingue cinq niveaux gradués — lecture, lab, exercice, challenge, recherche — qui appellent un arc transverse :Cet arc est absent comme tel. Il chevauche plusieurs verticales (LLM Engineer #19544, ML Engineer #19545, Recherche quand il sera déplié) et plusieurs EPICs (#17073 audit critique, #14620 compilateur, #17982 référentiels).
Proposition de pli (à arbitrer)
Si ces trois angles tiennent, je propose un Pli 5 — Agents pédagogiques et AI-native education sous #19543, articulé en :
Si l'arbitrage conclut que ce pli est prématuré ou sort du périmètre de cet EPIC, les angles 1 et 3 peuvent rejoindre d'autres EPICs existants (par ex.
arrow-first-implementationpour l'agentique, #17073 pour l'audit transverse) sans dupliquer #19543.Grain: DEEP/curriculum -- lane myia-po-2027:CoursIA-2 -- prev: DEEP/curriculum #19544
Feat(curriculum,#19545): parcours vertical ML Engineer (EPIC #19543 p…
feat(curriculum,#19544): parcours vertical LLM Engineer (EPIC #19543 …