Formation ML/LLM · 51 semaines · 08/09/2026 → 27/08/2027

La timeline jusqu'aux candidatures

Cibles par ordre : research engineer AI safety → research engineer IA/ML → FDE / applied AI. Chaque colonne est une semaine. La barre claire mesure les heures de bloc principal, les points marquent les drills, les losanges les jalons. Clique une semaine — ou navigue aux flèches ← →.

Le créneau libre — les deux backlogs

jamais obligatoire

Environ 1 h, début ou fin d'après-midi, selon les réunions — jamais obligatoire. La règle de routage complète (ce qui passe en premier, le plafond hebdomadaire, ce qui n'entre jamais ici) vit dans TickTick, dans 🎟 Backlog dev web : une seule source, pour qu'elle ne diverge pas.

un seul à la fois — clique pour basculer

23 tickets, pagination vérifiée sur le PDF (2e éd.). Un ticket se coche quand la section est lue et qu'un idiome en a été écrit dans la semaine — lue seule, elle ne compte pas. À ~30 min hebdomadaires tu en traiteras une quinzaine d'ici janvier : c'est une réserve ordonnée, pas une liste à finir.

B1 · micrograd + makemore 1 — 21/09 → 05/10

FP-01ch. 1 · Python Data Model, intégralp. 3–18Value.__repr__ et __add__. Le seul chapitre que Ramalho recommande à tout lecteur, quoi qu'il arrive.
FP-02ch. 16 · Operator Overloading 101 → Unary Operatorsp. 562–568__add__, __mul__, __pow__, __neg__, __sub__, __truediv__.
FP-03ch. 16 · Overloading + → Wrapping-Up Arithmetic Operatorsp. 568–577Opérateurs réfléchis. 2 * v échoue sans __rmul__ — tu vas rencontrer le bug avant de lire la section. Pagination corrigée le 10/09 : la matière commence p. 568, pas 576.
FP-04ch. 9 · Variable Scope Rules → Closures → nonlocalp. 308–316_backward est une closure. Le cœur conceptuel de micrograd, pas un à-côté.

B2 · makemore 2 — 05/10 → 16/10

FP-05ch. 17 · Iterables vs Iterators → generator function → genexpsp. 599–613Construction du dataset, minibatchs.
FP-06ch. 2 · Why Slices and Ranges Exclude the Last Item + Slice Objectsp. 47–49view(-1,6), indices de contexte, et la convention de tranche que tu poses avant chaque TAP.
FP-2bch. 2 · Arrays → Memory Views → NumPyp. 59–67Ramalho construit un memoryview sur un array, modifie un octet, voit la valeur changer des deux côtés. Le pont buffer / vue / copie en Python pur — il éclaire keepdim, la contiguïté et le bug « view échoue là où reshape passe ». Ajouté après lecture du PDF complet.

B3 · makemore 3 — 19/10 → 30/10

FP-07ch. 5 · Overview of Data Class Builders → @dataclass field optionsp. 164–186Objets de configuration d'expérience.
FP-08ch. 6 · Variables Are Not Boxes → Identity & Aliases → Copies Are Shallowp. 202–216Recentré le 10/09 : le déclencheur est le modèle d'aliasing (202–207), pas seulement les copies superficielles — c'est lui qui explique vue-vs-copie en torch, tes trois cartes déjà en deck. Puis le dict de config partagé entre runs (214–216).

B4 · makemore 4, backprop manuel — 02/11 → 13/11

FP-09ch. 7 · Higher-Order Functions → operator → functools.partialp. 234–249Comparaison de gradients, fonctions de vérification.
FP-10ch. 8 · Gradual Typing in Practice → Generic Collections → ABCsp. 255–280Annoter les repos from-scratch, mypy sur tinygraph.

B5–B8 · GPT, BPE, from-scratch — 16/11 → 08/01

FP-11ch. 11 · Object Representations → __format__ / __hash__ → __slots__p. 364–388Classes de modules propres.
FP-12ch. 12 · Protocols and Duck Typing → __getitem__ slice-aware → __getattr__p. 402–411Comment nn.Module expose ses paramètres. Le dynamique est en 408–411.
FP-13ch. 13 · Two Kinds of Protocols → Goose Typing → Static Protocolsp. 434–476Ce qu'est vraiment nn.Module ; socle pour lire du code de labo.
FP-14ch. 4 · Byte Essentials → Basic Encoders/Decodersp. 120–128Le BPE opère sur des octets UTF-8. Seul ticket hors ordre du livre : chapitre de la Partie I, déclencheur en novembre.
FP-15ch. 18 · Context Managers and with Blocks → @contextmanagerp. 658–668torch.no_grad() est un context manager.

Phase 3 · LLM engineering — dès le 12/01

FP-16ch. 9 · Implementing a Simple Decorator → functools.cache / lru_cachep. 317–323Caching d'inférence.
FP-17ch. 9 · Single Dispatch → Parameterized Decoratorsp. 324–335Registries de handlers.
FP-18ch. 19 · Processes, Threads and the GIL → The Real Impact of the GILp. 699–713Serving, batching.
FP-19ch. 21 · Downloading with asyncio → Throttling with a Semaphorep. 782–794Appels LLM concurrents avec rate limit — ton quotidien.
FP-20ch. 21 · Asynchronous Generator Functions → Async Comprehensionsp. 812–818Streaming de tokens.
FP-21ch. 21 · A FastAPI Web Servicep. 799–804Ton stack.
FP-22ch. 15 · TypedDict → Overloaded Signaturesp. 519–534Schémas d'API, structured outputs.
Exclus, à ne pas réintroduire — ch. 3 dicts/sets (acquis) · ch. 10 design patterns par fonctions · ch. 14 héritage multiple · ch. 20 Concurrent Executors (redondant avec 19 et 21) · ch. 22 attributs dynamiques, cached_property comprise — le décorateur seul s'apprend en trois minutes de doc le jour venu · ch. 23 descripteurs · ch. 24 métaclasses : aucun round de labo ne les teste, et Ramalho prévient lui-même que l'abstraction prématurée vaut l'optimisation prématurée · ch. 17 yield from (631–634) — le tri topologique de micrograd s'écrit en DFS simple ; si le code le réclame, le ticket sera émis à ce moment-là.

Deux moitiés d'un même système. Pull : les tickets Linear « learn » que Claude Code produit après chaque itération Relaycat — prioritaires, un concept rencontré s'apprend mieux qu'un concept anticipé. Push : boot.dev, où tout est codé à la main, contrepoids au workflow agentique. Objectif : bases solides en software engineering, niveau moyen en web — savoir build correctement avec Claude Code, pas en autonomie complète.

Learn Pandas105 leçonsL'objet de l'item est le verdict, pas le cours. Pandas n'a pas été touché depuis quelques années, et l'incertitude coûte de l'espace mental en permanence — numpy et torch ont été levés de la même façon, en une séance. Point de décision fixé d'avance : après ~2 h ou le premier tiers, on tranche. Revient vite → déprioriser ou exclure. Résiste vraiment → continuer.
Learn TypeScript105 leçonsRefait il y a longtemps. Prérequis de toute la chaîne web.
Learn HTTP Clients53 leçonsFetch, async, erreurs. Vérification plus qu'apprentissage.
Learn HTTP Servers44 restantes · ~20 hEntamé (8/52). Routes, middleware, auth — le squelette de ce que Claude Code écrit dans Medusa. Tombe vers décembre, quand REL-6/7 multiplient routes et middlewares.
Memory Management in C102 leçons · 24 hLe seul cours du catalogue qui construit des bases au sens strict : pile, tas, pointeurs, GC. Rien à voir avec le web, tout à voir avec l'objectif software engineering. À l'hiver, quand la Phase 2 rend la mémoire concrète — il rejoint Fluent Python ch. 6 et la contiguïté des tenseurs.
JS runtime — sur ticketpas le coursPas les 113 leçons. TypeScript couvre déjà syntaxe et structures ; ce qu'il ne touche pas, c'est la sémantique d'exécution — this et sa liaison, prototypes, event loop, coercion, closures en boucle. Exactement les bugs invisibles au typage que Claude Code produit sans les signaler.
File Servers and CDNs43 leçonsDéclencheur : la slice images fournisseur de Relaycat.
Pub/Sub RabbitMQ (TS)37 leçons · 32 hDéclencheur : Relaycat sort du synchrone. Cher pour 37 leçons.
Web Security (TS)105 leçonsMarketplace avec paiement en ligne : non négociable avant qu'un euro transite. Mais la slice paiement est à ~1 an — le lire maintenant, c'est le relire plus tard. À programmer 2–3 mois avant.
Learn SQL95 leçonsFond de file : déjà maîtrisé.
Learn Docker43 leçonsFond de file : bases acquises, suffisantes pour Relaycat.
CI/CD Actions + Docker + TS36 leçonsFond de file : au-delà des bases.
Exclus, à ne pas réintroduire — toute la piste Python hors Pandas (dix ans de métier, plus Fluent Python en parallèle) · toute la piste Go : le stack est TypeScript et le fil rouge coding est Python, un troisième langage ne sert pas l'objectif · Kubernetes (hors plan de formation) · Git et Linux (métier) · Power BI, Find a Job · First et Second Personal Project — Relaycat est le projet personnel · Pokedex, Web Scraper, Blog Aggregator : déjà fait ou redondant avec Relaycat.
Volume — ~65 h pour ⓪ à ⑤, à ~2 h par semaine dans le créneau : environ 30 semaines. C'est le rythme, pas un retard.

Cadence (11/09) : mar build 3 h → mer comprendre 2 h → jeu prouver 2 h · ven tampon 8h → revue 9h → cartes 10h · drills 08h—09h lun→jeu (algo lun/jeu, ML mar/mer) · weekend : un jour à zéro, l'autre léger · la grille est un défaut, pas un contrat.

← → semaine · ↑ ↓ jalon · trame hachurée = semaine blanche · colonne créneau : 08h—09h grisé = créneau drill par défaut (lun→jeu, règle du 08/09) · = pas d'horaire propre (jalon)