Cette plateforme permet de préparer, entraîner, déployer et monitorer des modèles de scoring crédit. Elle inclut l’ingestion de données en streaming, l’entraînement multi-modèles, le suivi MLflow, l’industrialisation via API FastAPI/Docker et la surveillance de dérive via Evidently AI.
- Préparation des données : nettoyage, imputation, encodage, scaling via PySpark / Pandas.
- Entraînement multi-modèles : Logistic Regression, XGBoost, Neural Network.
- Tracking et versioning : MLflow pour enregistrer paramètres, métriques et modèles.
- Export industriel : modèles exportés en ONNX/PMML pour déploiement.
- API REST FastAPI : prédictions en temps réel.
- Containerisation Docker : déploiement reproductible.
- CI/CD : build, test et déploiement automatisés (GitHub Actions / Jenkins).
- Monitoring & recalibrage : Evidently AI pour dérive de données et déclenchement automatique de réentraînement.
graph LR
A[DATA: brutes] --> B[DATA: transformées]
B --> C[DATA: référentielles]
C --> D[DATA: nouvelles pour recalibrage]
B --> E[NOTEBOOKS: exploration]
B --> F[NOTEBOOKS: comparaison modèles]
D --> G[NOTEBOOKS: monitoring dérive]
B --> H[SRC: preprocessing.py]
B --> I[SRC: feature_selection.py]
B --> J[SRC: split_data.py]
H --> K[SRC: train_lr.py]
H --> L[SRC: train_xgb.py]
H --> M[SRC: train_nn.py]
K --> N[SRC: evaluate_models.py]
L --> N
M --> N
N --> O[SRC: export_model.py]
O --> P[SRC: register_mlflow.py]
P --> Q[SRC: main.py / API FastAPI]
Q --> R[DASH: dashboards / monitoring]
SRC --> S[CICD: GitHub Actions / Docker Compose / Jenkins]
graph TD
A[Kafka / S3 Data] --> B[PySpark Preprocessing]
B --> C["Model Training: LR / XGBoost / NN"]
C --> D["Tracking with MLflow"]
D --> E["Export Model: ONNX / PMML"]
E --> F["FastAPI + Docker Deployment"]
F --> G["CI/CD Pipeline (GitHub Actions)"]
F --> H["Monitoring & Drift Detection (Evidently AI)"]
H --> I["Retrain Trigger (Automatic Recalibration)"]
credit_scoring_mlops/
│
├── data/
│ ├── raw/ # Données brutes (ingérées depuis Kafka / S3)
│ ├── processed/ # Données nettoyées et prêtes pour entraînement
│ ├── reference/ # Jeu de référence pour détection de dérive
│ └── new_data/ # Données récentes pour recalibrage périodique
│
├── notebooks/
│ ├── exploration.ipynb # Analyse exploratoire initiale
│ ├── model_comparison.ipynb # Tests de différents modèles (LR, XGBoost, NN)
│ └── monitoring_drift.ipynb # Détection et visualisation des dérives Evidently
│
├── src/
│ ├── __init__.py
│ │
│ ├── data_preprocessing/
│ │ ├── preprocessing.py # Nettoyage, encodage, imputation, scaling
│ │ ├── feature_selection.py # Sélection des variables pertinentes
│ │ └── split_data.py # Split train/validation/test
│ │
│ ├── training/
│ │ ├── train_lr.py # Entraînement du modèle Logistic Regression
│ │ ├── train_xgb.py # Entraînement XGBoost
│ │ ├── train_nn.py # Entraînement du modèle neuronal
│ │ └── evaluate_models.py # Comparaison AUC/F1 et sélection du meilleur modèle
│ │
│ ├── export/
│ │ ├── export_model.py # Conversion modèle en ONNX / PMML
│ │ └── register_mlflow.py # Enregistrement modèle final dans MLflow
│ │
│ ├── deployment/
│ │ ├── app/
│ │ │ ├── main.py # API FastAPI : endpoint `/predict`
│ │ │ ├── schemas.py # Schémas Pydantic pour les entrées utilisateur
│ │ │ └── utils.py # Fonctions auxiliaires (chargement modèle, logs)
│ │ │
│ │ ├── Dockerfile # Dockerfile pour containeriser l’API
│ │ ├── requirements.txt # Dépendances API (FastAPI, ONNXRuntime…)
│ │ ├── entrypoint.sh # Script de démarrage Docker (optionnel)
│ │ └── test_api.py # Tests unitaires de l’API avec pytest
│ │
│ ├── monitoring/
│ │ ├── drift_detection.py # Vérification automatique des dérives (Evidently)
│ │ ├── retrain_trigger.py # Script de recalibrage périodique
│ │ └── generate_report.py # Génération du dashboard HTML Evidently
│ │
│ └── utils/
│ ├── spark_session.py # Initialisation Spark pour preprocessing
│ ├── config.yaml # Paramètres globaux (chemins, hyperparams, seuils)
│ └── logger.py # Configuration centralisée des logs
│
├── ci_cd/
│ ├── github_actions.yml # Workflow GitHub Actions (build, test, deploy)
│ ├── docker-compose.yml # Lancement multi-services (API + MLflow + monitoring)
│ └── Jenkinsfile # (Optionnel) Pipeline Jenkins équivalent
│
├── models/
│ ├── xgb_credit_model.pkl # Modèle XGBoost sauvegardé (Pickle)
│ ├── xgb_credit_model.onnx # Modèle exporté en ONNX
│ ├── model_metadata.json # Métadonnées du modèle (version, date, métriques)
│ └── mlruns/ # Dossier de tracking MLflow (expériences)
│
├── tests/
│ ├── test_preprocessing.py # Tests unitaires sur le preprocessing
│ ├── test_training.py # Tests unitaires sur l'entraînement
│ ├── test_export.py # Vérifie l’intégrité du modèle exporté
│ ├── test_api.py # Tests sur les endpoints FastAPI
│ └── test_monitoring.py # Tests de détection de dérive
│
├── dashboards/
│ ├── credit_model_monitoring.html # Dashboard Evidently généré
│ └── drift_report.html # Rapport de dérive complet
│
├── docker-compose.yml # Orchestration (API + MLflow + PostgreSQL)
├── README.md # Documentation du projet complet
├── requirements.txt # Dépendances Python globales
└── Makefile # Commandes automatiques (build, test, deploy)Description rapide :
- data/ : jeux de données bruts et transformés.
- notebooks/ : analyses exploratoires et tests de modèles.
- src/ : code source (préprocessing, entraînement, export, déploiement, monitoring).
- ci_cd/ : pipelines CI/CD pour build et déploiement.
- models/ : modèles sauvegardés (Pickle, ONNX) + historiques MLflow.
- tests/ : tests unitaires pour chaque étape du pipeline.
- dashboards/ : dashboards de suivi de performance et dérive.
flowchart LR
%% DATA
subgraph DATA["📁 DATA"]
RAW[raw/ - données brutes]
PROCESSED[processed/ - données transformées]
REFERENCE[reference/ - données référentielles]
NEW[new_data/ - nouvelles données pour recalibrage]
end
%% NOTEBOOKS
subgraph NOTEBOOKS["📁 NOTEBOOKS"]
EXPLO[exploration.ipynb - analyse exploratoire]
COMP[model_comparison.ipynb - comparaison modèles]
DRIFT[monitoring_drift.ipynb - suivi dérive]
end
%% SRC
subgraph SRC["📁 SRC"]
PREP[preprocessing - nettoyage, encodage, scaling]
TRAIN[training - entraînement modèles]
EXPORT[export - export ONNX/PMML]
DEPLOY[deployment - API FastAPI + Docker]
MON[monitoring - détection dérive & recalibrage]
UTILS[utils - config, logger, SparkSession]
end
%% MODELS
subgraph MODELS["📁 MODELS"]
PICKLE[xgb_credit_model.pkl]
ONNX[xgb_credit_model.onnx]
METADATA[model_metadata.json]
MLRUNS[mlruns/ - tracking MLflow]
end
%% DASHBOARDS
subgraph DASH["📁 DASH"]
MONITOR[credit_model_monitoring.html]
DRIFT_REPORT[drift_report.html]
end
%% CICD
subgraph CICD["📁 CICD"]
GHA[github_actions.yml]
DOCKER_COMPOSE[docker-compose.yml]
JENKINS[Jenkinsfile]
end
%% Flux de données et interactions
RAW --> PROCESSED --> REFERENCE
NEW --> MON
PROCESSED --> PREP --> TRAIN --> EXPORT --> DEPLOY
TRAIN --> MLRUNS
DEPLOY --> CICD
MON --> DASH
NOTEBOOKS --> PREP
NOTEBOOKS --> TRAIN
NOTEBOOKS --> MON
# Cloner le projet
git clone https://github.com/votre_repo/credit_scoring_mlops.git
cd credit_scoring_mlops
# Installer les dépendances Python
pip install -r requirements.txt
# Construire l'image Docker
docker build -t credit_scoring_api:latest ./src/deployment/
# Lancer l'API
docker run -p 8000:8000 credit_scoring_api:latest- Le dashboard Evidently AI est généré à chaque batch ou via triggers de recalibrage automatique :
dashboards/credit_model_monitoring.html - Permet de suivre la dérive de données et la performance du modèle.
- GitHub Actions ou Jenkins déclenchent :
- Build Docker
- Tests unitaires
- Déploiement de l’API sur serveur ou cluster
- Basé sur seuils de dérive ou métriques (AUC / F1) via Evidently / MLflow.
- Permet un réentraînement automatique pour maintenir la performance en production.
- Compatible avec Spark, MLflow, FastAPI, ONNX, Docker, Evidently AI.
- Prêt pour un déploiement local ou cloud (AWS, GCP, Azure).