MLOps en Pratique — Atelier de 4 jours
Atelier de 4 jours : Docker, CI/CD, monitoring, MLflow, DVC — du notebook à la production.
Formateur : Dr. Yaé Ulrich Gaba Durée : 4 jours (24 heures) Niveau : Intermédiaire à Avancé Langue : Français
Présentation
Cet atelier comble le fossé entre les expériences en notebook et les systèmes ML en production. Les participants apprennent à packager, déployer, surveiller et maintenir des modèles de machine learning avec des outils standards de l’industrie. L’accent est mis sur des workflows pratiques et reproductibles fonctionnant dans des environnements à ressources limitées — y compris des configurations sans cloud pertinentes pour les contextes africains.
Prérequis
- Programmation Python (à l’aise avec les fonctions, classes, packages)
- Bases du machine learning (entraînement, évaluation, scikit-learn ou équivalent)
- Familiarité avec la ligne de commande (terminal, commandes shell de base)
- Ordinateur portable avec Docker Desktop installé (docker.com)
Objectifs Pédagogiques
À la fin de cet atelier, les participants seront capables de :
- Structurer des projets ML pour la reproductibilité et la collaboration
- Suivre les expériences systématiquement avec MLflow
- Versionner les données et modèles avec DVC
- Conteneuriser les applications ML avec Docker
- Construire des pipelines CI/CD pour les tests et le déploiement automatisés
- Surveiller les modèles en production et détecter la dérive
Logiciels Requis
- Python 3.10+, pip, virtualenv
- Docker Desktop
- Git
- Bibliothèques : mlflow, dvc, fastapi, uvicorn, pytest, great-expectations
- Optionnel : compte GitHub, fournisseur cloud (niveaux gratuits suffisent)
Programme Jour par Jour
Jour 1 : Structure de Projet & Suivi d’Expériences
Objectifs : Organiser les projets ML pour la reproductibilité et suivre les expériences systématiquement.
| Horaire | Sujet |
|---|---|
| 09:00–10:00 | Le Problème MLOps — Pourquoi les notebooks échouent en production, le cycle de vie ML, la dette technique dans les systèmes ML, niveaux de maturité MLOps |
| 10:00–10:45 | Structure de Projet — Template Cookiecutter Data Science, séparation config/données/code/modèles, gestion d’environnement (virtualenv, conda), fichiers requirements, patterns Makefile |
| 10:45–11:00 | Pause |
| 11:00–12:30 | Suivi d’Expériences avec MLflow — Installation, journalisation des paramètres/métriques/artefacts, comparaison des runs, interface MLflow, organisation des expériences |
| 12:30–14:00 | Déjeuner |
| 14:00–15:30 | Versioning de Données & Modèles avec DVC — Git pour les données, DVC init, ajout de fichiers, stockage distant (local, S3, GCS), pipelines avec dvc.yaml, reproduction des expériences |
| 15:30–15:45 | Pause |
| 15:45–17:00 | Gestion de Configuration — Hydra / OmegaConf pour gérer les hyperparamètres, fichiers de config vs. overrides en ligne de commande, configurations reproductibles |
TP 1 : Prendre un notebook Jupyter désordonné (fourni) et le refactorer en un projet propre : structure de répertoires, fichiers de config, suivi MLflow, pipeline DVC. Lancer 5 expériences avec différents hyperparamètres et les comparer dans l’interface MLflow.
Devoir : Appliquer la même structure à l’un de vos propres projets ML.
Jour 2 : Conteneurisation & APIs
Objectifs : Packager les modèles en conteneurs Docker et les servir via des APIs REST.
| Horaire | Sujet |
|---|---|
| 09:00–09:30 | Revue du devoir |
| 09:30–10:30 | Fondamentaux de Docker — Images vs. conteneurs, anatomie d’un Dockerfile, construction d’images, exécution de conteneurs, mapping de ports, volumes, .dockerignore |
| 10:30–10:45 | Pause |
| 10:45–12:30 | Dockeriser des Applications ML — Images de base Python, installation de dépendances, copie d’artefacts modèle, builds multi-étapes pour des images plus petites, bases du support GPU |
| 12:30–14:00 | Déjeuner |
| 14:00–15:30 | Servir des Modèles avec FastAPI — Construire une API de prédiction : endpoints, modèles requête/réponse (Pydantic), chargement du modèle au démarrage, prédiction par lots, endpoints async, docs automatiques (Swagger) |
| 15:30–15:45 | Pause |
| 15:45–17:00 | Docker Compose — Applications multi-conteneurs : API + base de données + serveur MLflow. docker-compose.yml, réseau, variables d’environnement, health checks |
TP 2 : Construire une stack complète de serving : entraîner un modèle, le sauver avec MLflow, l’encapsuler dans une application FastAPI, conteneuriser avec Docker, orchestrer avec Docker Compose (API + MLflow UI). Tester l’endpoint avec curl et Python requests.
Devoir : Ajouter la validation des entrées et la gestion d’erreurs à votre API.
Jour 3 : Tests & CI/CD
Objectifs : Tester le code ML et automatiser les pipelines avec l’intégration continue.
| Horaire | Sujet |
|---|---|
| 09:00–09:30 | Revue du devoir |
| 09:30–10:30 | Tester les Systèmes ML — Tests unitaires (pytest), tester les fonctions de traitement de données, tester les prédictions, fixtures, parametrize, mocking |
| 10:30–10:45 | Pause |
| 10:45–12:00 | Validation des Données — Great Expectations : définir des attentes, valider des datasets, contrats de données, attraper les problèmes de qualité avant le modèle |
| 12:00–12:30 | Validation du Modèle — Seuils de performance, tests de régression, comparaison avec la baseline, smoke tests pour les endpoints |
| 12:30–14:00 | Déjeuner |
| 14:00–15:30 | CI/CD avec GitHub Actions — Fichiers workflow, déclencheurs, jobs et steps, exécution des tests à chaque push, construction d’images Docker, secrets, cache d’artefacts |
| 15:30–15:45 | Pause |
| 15:45–17:00 | Pipelines ML Automatisés — De bout en bout : push code → tests → validation données → entraînement → évaluation → construction conteneur → déploiement. Workflows par branches (dev/staging/prod) |
TP 3 : Mettre en place un pipeline CI/CD complet pour le modèle du Jour 2 : écrire des tests unitaires, ajouter la validation des données, créer un workflow GitHub Actions qui lance les tests, entraîne le modèle et construit une image Docker à chaque push.
Devoir : Ajouter une barrière de performance — le pipeline doit échouer si la précision descend sous un seuil.
Jour 4 : Monitoring, Détection de Dérive & Production
Objectifs : Surveiller les modèles déployés et gérer les défis de production.
| Horaire | Sujet |
|---|---|
| 09:00–09:30 | Revue du devoir |
| 09:30–10:30 | Monitoring de Modèles — Quoi surveiller : latence de prédiction, taux d’erreur, distributions d’entrée/sortie. Stratégies de logging et d’alertes. Bases de Prometheus + Grafana |
| 10:30–10:45 | Pause |
| 10:45–12:00 | Dérive des Données & du Modèle — Dérive conceptuelle, dérive de données, dérive de features. Méthodes de détection : PSI, test KS, Evidently AI. Quand réentraîner, déclencheurs automatiques |
| 12:00–12:30 | Tests A/B & Déploiement Shadow — Releases canary, mode shadow, feature flags pour ML, comparaison de versions en production |
| 12:30–14:00 | Déjeuner |
| 14:00–15:00 | Patterns de Production — Registres de modèles (MLflow), déploiement blue-green, stratégies de rollback, inférence batch vs. temps réel, considérations de mise à l’échelle |
| 15:00–15:15 | Pause |
| 15:15–16:15 | MLOps en Environnements à Ressources Limitées — Stratégies pour infrastructure limitée : serving léger (Flask + systemd), réentraînement par cron, serveurs MLflow locaux, DVC avec remotes locaux, déploiement edge |
| 16:15–17:00 | Présentations & Bilan — Présentation des pipelines MLOps complets, discussion, questions, certificats |
TP 4 (Projet Final) : Ajouter le monitoring au modèle déployé : implémenter la détection de dérive avec Evidently AI, configurer les alertes basiques, créer un tableau de bord montrant les métriques de santé du modèle. Présenter le pipeline complet : code → test → build → déploiement → monitoring.
Évaluation
- TPs quotidiens (50 %) — Pipelines et infrastructure fonctionnels
- Pipeline final (30 %) — Système MLOps complet démontré le Jour 4
- Participation (20 %) — Engagement et devoirs
Ressources
- Documentation MLflow
- Documentation DVC
- Documentation FastAPI
- Documentation Docker
- Evidently AI
- Made With ML — Cours MLOps
Certificat
Les participants ayant complété tous les TPs et le pipeline final reçoivent un certificat de complétion.