Le vrai sujet de cette semaine : le MLOps — l'art de faire vivre un modèle en production. Et le terrain sur lequel on va l'apprendre : la fraude bancaire. The real subject of this week: MLOps — the craft of making a model live in production. And the playground we'll learn it on: card fraud.
Chaque point qui traverse l'écran est une transaction par carte : un café à Esch, des courses à Lisbonne, un abonnement à Singapour. Des millions par jour. La quasi-totalité est parfaitement légitime. Every dot crossing the screen is a card transaction: a coffee in Esch, groceries in Lisbon, a subscription in Singapore. Millions a day. Almost all of them perfectly legitimate.
Regardez les points rouges. Ce sont les fraudes : 17 transactions sur 10 000. Rares, mais chacune coûte cher — et bloquer un client honnête par erreur coûte aussi : de la confiance. Un problème d'aiguille dans une botte de foin, avec un coût asymétrique. Watch the red dots. Those are frauds: 17 transactions in 10,000. Rare, but each one is expensive — and wrongly blocking an honest customer costs too: trust. A needle in a haystack problem, with asymmetric costs.
Le compteur en bas à droite monte. Pourtant, quelque part dans la banque, un data scientist a déjà entraîné un excellent modèle de détection… dans un notebook, sur son laptop. La grande majorité des modèles ML ne quittent jamais le laboratoire. The counter at the bottom right keeps climbing. Yet somewhere in the bank, a data scientist has already trained an excellent detection model… in a notebook, on their laptop. The vast majority of ML models never leave the lab.
Jamais déployé · « ça marche chez moi » · aucune trace des expériences · le monde change et le modèle dérive (drift) · rien n'est reproductible · data et ops travaillent en silos. Six symptômes, une seule maladie : on traite l'IA comme une expérience, pas comme du logiciel. Never deployed · "works on my machine" · no trace of experiments · the world changes and the model drifts · nothing is reproducible · data and ops work in silos. Six symptoms, one disease: we treat AI as an experiment, not as software.
Regardez les silhouettes en pointillés sur la carte : c'est tout ce qui manque autour du modèle pour qu'il vive en production. Construire ça, le faire tenir, le surveiller — c'est le métier qu'on apprend cette semaine. La fraude n'est que notre terrain d'entraînement : réaliste, à enjeux, parfait pour tout apprendre. Look at the dotted silhouettes on the map: that's everything the model is missing to live in production. Building it, keeping it up, watching it — that's the craft we learn this week. Fraud is just our training ground: realistic, high-stakes, perfect for learning it all.
Pour comprendre le MLOps, il faut remonter à une autre histoire. Dans les années 2000, les développeurs écrivaient du code, puis le « jetaient par-dessus le mur » aux équipes d'exploitation. Résultat : des mises en production rares, longues, terrifiantes. Le mouvement DevOps a cassé ce mur : mêmes outils, mêmes responsabilités, automatisation de bout en bout. Livrer est passé d'un événement trimestriel à un non-événement quotidien. To understand MLOps, rewind to another story. In the 2000s, developers wrote code and "threw it over the wall" to operations teams. The result: rare, slow, terrifying releases. The DevOps movement broke that wall: same tools, shared responsibility, end-to-end automation. Shipping went from a quarterly event to a daily non-event.
Le MLOps, c'est ce même état d'esprit, appliqué au Machine Learning. Mais avec une difficulté en plus : en ML, on ne versionne pas que du code. Un système ML, c'est du code + des données + un modèle — trois choses qui changent, chacune à son rythme, et qui peuvent toutes casser la production. MLOps is that same mindset, applied to Machine Learning. With one extra difficulty: in ML, code isn't the only thing you version. An ML system is code + data + a model — three things that change, each at its own pace, and each able to break production.
Un logiciel classique casse quand quelqu'un change le code. Un système ML peut casser sans que personne ne touche à rien — simplement parce que le monde a changé. C'est le drift, et c'est pour ça que le MLOps existe. Classic software breaks when someone changes the code. An ML system can break while nobody touches anything — simply because the world changed. That's drift, and it's why MLOps exists.
Entre celui qui invente le modèle et celui qui fait tourner l'infrastructure, il y a un métier : celui qui fait passer le modèle du notebook à la production, de façon fiable, répétable, surveillée. C'est le rôle qu'on endosse toute la semaine. Between the person who invents the model and the person who runs the infrastructure, there's a craft: taking the model from notebook to production, reliably, repeatably, under watch. That's the role we wear all week.
Il faut un système réel, qui casse pour de vraies raisons. Le nôtre : la détection de fraude. Chaque bloc de la semaine prend un concept MLOps — serving, reproductibilité, tracking, CI/CD, orchestration, monitoring — et vous le fait apprendre en ajoutant un organe au système. Voici le chemin. You need a real system that breaks for real reasons. Ours: fraud detection. Each block of the week takes one MLOps concept — serving, reproducibility, tracking, CI/CD, orchestration, monitoring — and makes you learn it by adding one organ to the system. Here's the path.
Le cerveau apparaît sur la carte : un modèle scikit-learn entraîné sur des transactions réelles. Les points s'arrêtent, sont scorés, les fraudes sont bloquées. Mais regardez le cadre en pointillés : il vit encore dans un notebook. Fragile, injoignable, inutilisable par la banque. The brain appears on the map: a scikit-learn model trained on real transactions. Dots stop, get scored, frauds get blocked. But look at the dotted frame: it still lives in a notebook. Fragile, unreachable, unusable by the bank.
Une API FastAPI se dresse devant le cerveau. Le notebook disparaît : désormais, n'importe quel système de la banque peut demander POST /predict et recevoir un verdict en millisecondes. Le modèle a une adresse.
A FastAPI gate rises in front of the brain. The notebook dissolves: from now on, any system in the bank can call POST /predict and get a verdict in milliseconds. The model has an address.
Tout le système — API, modèle, dépendances — est emballé dans un conteneur Docker. La même boîte tourne à l'identique sur votre laptop, sur un serveur, dans le cloud. Le système devient portable et reproductible. The whole system — API, model, dependencies — gets packed into a Docker container. The same box runs identically on your laptop, a server, the cloud. The system becomes portable and reproducible.
MLflow rejoint la carte. Chaque entraînement est tracé — paramètres, métriques, artefacts — et le registry décide quelle version est en production. Regardez le badge sur le cerveau : v3 · prod. Plus jamais « c'était quel modèle, déjà ? ». MLflow joins the map. Every training run is tracked — parameters, metrics, artifacts — and the registry decides which version is in production. See the badge on the brain: v3 · prod. Never again "wait, which model was that?".
Le convoyeur s'allume en haut : commit → tests → build → déploiement. Chaque modification passe par la chaîne CI/CD — y compris des tests spécifiques au ML : validation des données, et un portique qui refuse tout modèle dont le PR-AUC régresse. The conveyor lights up at the top: commit → tests → build → deploy. Every change rides the CI/CD line — including ML-specific checks: data validation, and a gate that rejects any model whose PR-AUC regresses.
Kubernetes entre en scène : la boîte est répliquée, un load balancer répartit le flux, et les capteurs s'allument. Le panneau de monitoring guette le drift — quand la courbe s'affole et que le voyant passe au rouge, une alerte part vers MLflow : réentraîner. Kubernetes takes the stage: the box is replicated, a load balancer spreads the stream, and the sensors switch on. The monitoring panel watches for drift — when the curve spikes and the light turns red, an alert fires toward MLflow: retrain.
Voilà où on va : un commit déclenche la chaîne, la chaîne livre la boîte, le cluster la déploie en canary, le registry fournit le modèle, les capteurs veillent, et le flux est scoré en continu. C'est ce système complet que vous présenterez. Chaque chapitre, cette carte s'enrichira — c'est votre boussole. This is where we're headed: a commit triggers the line, the line ships the box, the cluster deploys it canary-style, the registry serves the model, the sensors keep watch, and the stream is scored continuously. This complete system is what you'll present. Chapter after chapter, this map will grow — it's your compass.
Trois principes, tenus du lundi au vendredi. Rien de ce que vous construirez ne sera jeté : chaque brique du lab sert la suivante. Three principles, held from Monday to Friday. Nothing you build gets thrown away: every lab brick feeds the next one.
Chacun reçoit une VM Linux cloud prête à l'emploi. On y installe et prend en main le trio du terminal moderne — zellij (multiplexeur), yazi (explorateur de fichiers), lazygit (interface Git) — puis on pose un workflow Git propre pour le ML : structure de repo, .gitignore qui exclut données et modèles, commits conventionnels, branches + pull requests.
Everyone gets a ready-to-use cloud Linux VM. We install and tame the modern terminal trio — zellij (multiplexer), yazi (file explorer), lazygit (Git UI) — then set up a clean Git workflow for ML: repo structure, a .gitignore that excludes data and models, conventional commits, branches + pull requests.
# fraud-detection/ — la structure qu'on posera ensemblethe structure we'll lay down together
├── data/ # jamais commité (voir .gitignore)never committed (see .gitignore)
├── notebooks/ # exploration seulementexploration only
├── src/
│ ├── data/ # chargement, validationloading, validation
│ ├── train/ # entraînement, évaluationtraining, evaluation
│ └── serve/ # API (à partir du Bloc 3)API (from Block 3 on)
├── tests/
└── README.md
On télécharge le dataset Credit Card Fraud Detection (284 807 transactions réelles anonymisées, 492 fraudes) et on l'explore : distribution des classes, features V1–V28, montants. Puis on écrit noir sur blanc le cadrage : que doit faire le système, avec quelle métrique, à quel coût. We download the Credit Card Fraud Detection dataset (284,807 real anonymized transactions, 492 frauds) and explore it: class distribution, V1–V28 features, amounts. Then we write down the scoping: what the system must do, with which metric, at what cost.
Avec 0,17 % de fraudes, un modèle qui répond « légitime » à tout atteint 99,83 % d'accuracy — et ne sert à rien. Notre métrique sera la PR-AUC (aire sous la courbe precision-recall), complétée par un coût métier : une fraude ratée coûte beaucoup plus cher qu'une fausse alerte, mais les fausses alertes érodent la confiance. With 0.17% fraud, a model that answers "legit" to everything scores 99.83% accuracy — and is useless. Our metric will be PR-AUC (area under the precision-recall curve), plus a business cost: a missed fraud costs far more than a false alarm, but false alarms erode trust.
À la fin du bloc, votre repo existe, votre environnement tourne, votre dataset est exploré et votre cadrage est écrit. La carte du système, elle, est encore vide — plus pour longtemps. By the end of this block, your repo exists, your environment runs, your dataset is explored and your scoping is written. The system map is still empty — not for long.