Déploiement MLOps d'un modèle de scoring en production
Python, Machine Learning, MLOps, MLflow, LightGBM, XGBoost, Scikit-learn, Credit Scoring, Optuna, Feature Engineering
Déploiement et Monitoring d'un Modèle de Scoring (MLOps)
Présentation
Ce projet met en œuvre l'ensemble du cycle de mise en production d'un modèle de Machine Learning, depuis son exposition via une API jusqu'à son monitoring en production. L'objectif est de transformer un modèle de scoring développé précédemment en un service robuste, testable, conteneurisé et déployable automatiquement.
Le projet applique les bonnes pratiques du MLOps afin de garantir la qualité, la reproductibilité et la maintenabilité d'un système de Machine Learning en production.
Objectifs
- Déployer un modèle de scoring sous forme d'API.
- Conteneuriser l'application avec Docker.
- Automatiser les tests et le déploiement via une pipeline CI/CD.
- Mettre en place un système de monitoring et de détection de Data Drift.
- Optimiser les performances d'inférence.
- Documenter l'ensemble de la solution.
Compétences démontrées
Développement d'API ML
- Création d'une API REST avec FastAPI (ou Gradio).
- Chargement unique du modèle au démarrage.
- Validation des données d'entrée.
- Gestion des erreurs.
- Documentation automatique via Swagger/OpenAPI.
Tests automatisés
- Tests unitaires avec Pytest.
- Validation des cas d'erreur :
- valeurs manquantes
- types incorrects
- valeurs hors limites
- Vérification de la stabilité de l'API.
Conteneurisation
- Création d'une image Docker.
- Environnement reproductible.
- Déploiement simplifié sur différents environnements.
CI/CD
Automatisation complète avec GitHub Actions :
- installation des dépendances
- exécution des tests
- build Docker
- déploiement automatique
- gestion des secrets
Monitoring ML
Collecte des métriques de production :
- temps de réponse
- temps d'inférence
- distribution des scores
- taux d'erreur
- logs structurés
- inputs / outputs du modèle
Détection de Data Drift
Analyse automatique des données de production afin de détecter :
- dérive des variables d'entrée
- évolution des prédictions
- anomalies statistiques
- dégradation potentielle du modèle
Outils utilisés :
- Evidently AI
- dashboards Streamlit
Optimisation des performances
Analyse des performances grâce au profiling :
- identification des goulots d'étranglement
- optimisation du temps d'inférence
- amélioration de la latence
- validation de l'impact sur les performances
Architecture
GitHub
│
▼
GitHub Actions
│
┌───────────┴───────────┐
│ │
▼ ▼
Pytest Build Docker
│ │
└───────────┬───────────┘
▼
Déploiement
│
▼
FastAPI API
│
Chargement du modèle
│
┌─────────┴─────────┐
▼ ▼
Prédictions Logging JSON
│
▼
Stockage des logs
│
▼
Monitoring & Data Drift
Stack technique
Machine Learning
- Scikit-Learn
- MLflow
API
- FastAPI
- Swagger / OpenAPI
Tests
- Pytest
Conteneurisation
- Docker
CI/CD
- GitHub Actions
Monitoring
- Evidently AI
- Streamlit
Versioning
- Git
- GitHub
Bonnes pratiques MLOps appliquées
- Versionnement du code
- Historique Git propre
- Tests automatisés
- Déploiement continu
- Conteneurisation
- Documentation
- Validation des entrées
- Monitoring de production
- Détection de Data Drift
- Optimisation des performances
- Reproductibilité des environnements
Résultats
À l'issue de ce projet, le modèle est capable de :
- fournir des prédictions via une API REST ;
- être déployé automatiquement grâce à une pipeline CI/CD ;
- être exécuté dans un conteneur Docker ;
- être supervisé grâce à des métriques de monitoring ;
- détecter automatiquement une dérive des données ;
- être optimisé et profilé afin de réduire les temps d'inférence.
Compétences MLOps acquises
- Déploiement de modèles de Machine Learning
- Développement d'API de prédiction
- Docker
- GitHub Actions
- Tests automatisés
- Monitoring de modèles ML
- Logging structuré
- Détection de Data Drift
- Optimisation des performances
- Industrialisation d'un projet Machine Learning