Bienvenue dans ce dépôt de démonstration pour le cours "Introduction au MLOps". Ce projet illustre de manière itérative comment passer d'un code de Machine Learning monolithique (sous forme de Notebook) à une structure de production robuste, modulaire et conteneurisée.
Montrer la transition entre trois niveaux de maturité architecturale :
- Niveau 0 - Le Brouillon : Tout le code d'entraînement est centralisé dans un Notebook (
notebooks/). - Niveau 1 - La Modularisation : Le code est restructuré en scripts Python indépendants, versionnés et exécutables via un environnement virtuel (
scripts/). - Niveau 2 - La Conteneurisation : L'environnement d'exécution et les dépendances sont packagés dans des conteneurs isolés et orchestrés (
services/). Introduction du monitoring avec Prometheus et Grafana.
.
├── notebooks/ # Étape 1 : Le Notebook contenant la modélisation exploratoire.
│ └── 01_model_training.ipynb
├── scripts/ # Étape 2 : Le code modulaire pour l'entraînement.
│ ├── collect.py # Téléchargement des données
│ ├── process.py # Prétraitement des données
│ ├── train.py # Entraînement du modèle scikit-learn
│ ├── eval.py # Évaluation des performances
│ ├── predict.py # Script pour requêter manuellement le modèle
│ ├── run_pipeline.sh # Script d'exécution de toutes les étapes séquentiellement
│ └── requirements.txt
└── services/ # Étape 3 : L'architecture microservices Docker
├── data-pipeline/ # Conteneur dédié à l'exécution du pipeline de traitement et entraînement
├── api/ # Conteneur déployant une API (FastAPI) pour servir les prédictions
├── prometheus/ # Conteneur de collecte de métriques
├── grafana/ # Conteneur de data visualisation (Dashboard)
└── docker-compose.yml # Fichier d'orchestration globalNaviguez dans le dossier notebooks/ et ouvrez le fichier avec Jupyter Notebook ou VSCode.
Vous y verrez un entraînement classique complet de A à Z (collecte -> pré-traitement -> modélisation -> évaluation) sur le jeu de données Iris.
Dans le répertoire scripts/, nous avons isolé les responsabilités du modèle.
cd scripts
python -m venv .venv
source .venv/bin/activate # Sur Linux/MacOS
pip install -r requirements.txt
./run_pipeline.sh # Pour exécuter le pipeline d'entraînementDans le répertoire services/, nous conteneurisons le tout et ajoutons des outils d'observabilité.
cd services
docker compose up --build- L'API de prédiction sera disponible sur
http://localhost:8080 - La documentation de l'API (Swagger) sera sur
http://localhost:8080/docs - Prometheus sera disponible sur
http://localhost:9090 - Le Dashboard Grafana sera sur
http://localhost:3001(identifiant: admin / admin)
Le modèle utilisé est un simple RandomForestClassifier entraîné sur le jeu de données Iris, le "Hello World" du Machine Learning.
Le but ici n'est pas la performance du modèle, mais bien la mise en place de l'infrastructure logicielle et MLOps qui l'entoure.