Pourquoi Kubernetes pour le ML ?
La majorité des projets ML restent coincés au stade du notebook Jupyter. Passer à la production nécessite une infrastructure qui gère l'autoscaling, le versionnage des modèles, le rollback automatique et le monitoring en temps réel. Kubernetes excelle dans tous ces domaines.
Sur une mission récente pour une Fintech parisienne, nous avons migré une infrastructure ML héritée vers Kubernetes sur AWS EKS. Résultats : coûts cloud réduits de 70%, déploiements 12x plus rapides, 99.9% d'uptime.
La stack MLOps complète : MLflow (tracking & registry) → KubeFlow Pipelines (orchestration) → Seldon Core (serving) → Prometheus/Grafana (monitoring) → ArgoCD (GitOps).
Architecture cible
Notre architecture s'articule autour de 4 composants clés :
- MLflow : tracking des expériences, versionnage des modèles et model registry centralisé
- KubeFlow Pipelines : orchestration des pipelines d'entraînement et d'évaluation
- Seldon Core : serving des modèles avec A/B testing et canary deployments
- Prometheus + Grafana : monitoring des modèles (data drift, performance, latence)
Configuration Kubernetes pour ML
apiVersion: apps/v1
kind: Deployment
metadata:
name: fraud-model-v2
labels:
app: fraud-detection
version: "2.0"
spec:
replicas: 3
selector:
matchLabels:
app: fraud-detection
template:
metadata:
labels:
app: fraud-detection
version: "2.0"
spec:
containers:
- name: model-server
image: your-registry/fraud-model:v2.0
resources:
requests:
memory: "2Gi"
cpu: "500m"
limits:
memory: "4Gi"
cpu: "2"
env:
- name: MLFLOW_TRACKING_URI
valueFrom:
secretKeyRef:
name: mlflow-secret
key: tracking-uri
MLflow : versionnage et transition entre modèles
import mlflow
import mlflow.sklearn
# Entraînement avec tracking MLflow
with mlflow.start_run(run_name="fraud_detector_v2") as run:
mlflow.log_params({"n_estimators": 200, "max_depth": 8})
model.fit(X_train, y_train)
mlflow.log_metric("accuracy", accuracy)
mlflow.log_metric("f1_score", f1)
# Enregistrement dans le registry
mlflow.sklearn.log_model(
model, "fraud_model",
registered_model_name="FraudDetector"
)
# Promotion en production
client = mlflow.tracking.MlflowClient()
client.transition_model_version_stage(
name="FraudDetector", version=2, stage="Production"
)
Monitoring de la data drift avec Evidently
La data drift — quand la distribution des données de production s'éloigne des données d'entraînement — est la principale cause de dégradation des modèles en production. Evidently AI permet de détecter ce phénomène automatiquement.
from evidently.report import Report
from evidently.metric_preset import DataDriftPreset
# Rapport de drift quotidien
report = Report(metrics=[DataDriftPreset()])
report.run(
reference_data=training_data,
current_data=production_data_today
)
# Alerte si drift détecté
summary = report.as_dict()
if summary["metrics"][0]["result"]["dataset_drift"]:
send_alert("Data drift détectée — réentraînement requis")
Résultats de la migration
Après 3 mois de migration pour notre client Fintech :
- -70% sur les coûts cloud (autoscaling + spot instances)
- 99.9% d'uptime grâce aux health checks et restart policies
- ×12 de vitesse de déploiement (de 4h à 20 minutes)
- Réentraînement automatique déclenché lors de data drift détectée