Déployer un modèle ML en production : guide MLOps

Passer un modèle ML du notebook Jupyter à la production est l'étape la plus délicate de tout projet d'IA. Selon une étude de Gartner, 87% des projets ML ne dépassent jamais le stade du POC. Ce guide MLOps vous donne les clés pour faire partie des 13% qui réussissent.

💡 En bref

Le MLOps (Machine Learning Operations) est l'ensemble des pratiques qui permettent de déployer, monitorer et maintenir des modèles ML en production. Il combine DevOps, Data Engineering et gestion du cycle de vie des modèles. Les piliers : automatisation, monitoring et reproductibilité.

1. La pipeline ML : de la data à la production

Une architecture MLOps moderne comprend plusieurs étapes interconnectées :

  1. Data Ingestion : collecte et validation des données brutes
  2. Feature Engineering : transformation et stockage des features
  3. Training : entraînement et validation du modèle
  4. Evaluation : tests de performance et validation métier
  5. Deployment : mise en production du modèle
  6. Monitoring : surveillance des performances et du drift
  7. Retraining : réentraînement automatique si nécessaire

Cette pipeline doit être entièrement automatisée et reproductible. Un changement dans les données doit pouvoir déclencher un nouveau déploiement sans intervention manuelle.

2. Architecture de déploiement

API REST (synchrone)

Le pattern le plus courant. Le client envoie une requête HTTP et reçoit une prédiction en temps réel.

# Exemple avec FastAPI from fastapi import FastAPI import joblib app = FastAPI() model = joblib.load("model.pkl") @app.post("/predict") async def predict(data: InputData): prediction = model.predict([data.features]) return {"prediction": prediction.tolist()}

Avantages : simple, universel, latence faible
Inconvénients : nécessite que le modèle soit chargé en mémoire, limite de taille de requête

Traitement Batch (asynchrone)

Idéal pour les gros volumes de données où la latence n'est pas critique (prédictions quotidiennes, scoring de base de données).

Stack typique : Airflow/Prefect pour l'orchestration, stockage des résultats en base de données ou data warehouse.

Streaming (temps réel)

Pour les cas où les données arrivent en continu et nécessitent une prédiction immédiate (fraud detection, recommandations live).

Stack typique : Kafka + Flink/Spark Streaming + modèle servi via API.

Architecture Latence Volume Cas d'usage
API REST < 100ms Milliers/min Prédictions interactives
Batch Minutes/heures Millions Rapports, scoring
Streaming < 1s Millions/heure Fraud detection, IoT

3. Containerisation : Docker et Kubernetes

La containerisation est devenue indispensable pour le déploiement ML. Elle garantit la reproductibilité entre environnements.

Docker pour les modèles ML

# Dockerfile pour un modèle ML FROM python:3.11-slim WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY model.pkl . COPY app.py . EXPOSE 8000 CMD ["uvicorn", "app:app", "--host", "0.0.0.0"]

Kubernetes pour le scaling

Quand le trafic augmente, Kubernetes permet de :

  • Scaler horizontalement (ajouter des replicas)
  • Gérer le rolling deployment (mise à jour sans interruption)
  • Auto-healing (redémarrage automatique en cas de problème)
  • Load balancing répartition du trafic)

Autoscaler recommandé : KEDA (Kubernetes Event-driven Autoscaling) pour scaler selon la file de messages ou la charge.

4. Monitoring : drift, performance et logs

Un modèle en production sans monitoring est une bombe à retardement. Trois niveaux de surveillance :

Monitoring système

  • CPU, mémoire, GPU utilization
  • Latence des requêtes (p50, p95, p99)
  • Taux d'erreur et disponibilité
  • Throughput (prédictions/seconde)

Data Drift

Le drift survient quand les données en production diffèrent des données d'entraînement. Types de drift :

  • Feature drift : changement de la distribution des features d'entrée
  • Concept drift : changement de la relation entre features et target
  • Label drift : changement de la distribution des labels

Métriques de détection : PSI (Population Stability Index), KS test, KL divergence, Wasserstein distance.

Performance drift

La dégradation des métriques métier (précision, recall, F1, RMSE) quand vous avez des labels retardés.

🚨 Alertes critiques à configurer

  • Latence p95 > seuil défini (ex: 200ms)
  • Taux d'erreur > 1%
  • Drift PSI > 0.25
  • Drop de prédiction de plus de 20%

5. CI/CD pour le ML

Le ML nécessite un CI/CD spécifique car il y a trois composants à versionner : code, données et modèle.

Pipeline CI/CD ML typique

  1. Test du code : linting, unit tests
  2. Validation des données : tests de qualité (Great Expectations)
  3. Entraînement : training avec versionning des datasets (DVC)
  4. Evaluation : comparaison avec le modèle en production
  5. Decision gate : promotion si meilleures performances
  6. Deployment : mise à jour du modèle en production

Outils CI/CD : GitHub Actions, GitLab CI, ou solutions dédiées comme Weights & Biases.

6. Outils MLOps recommandés

MLflow

La plateforme open source la plus populaire pour le ML. Elle gère :

  • Tracking des expériences (métriques, paramètres)
  • Model Registry (versionning des modèles)
  • Model Serving (déploiement simplifié)
  • Artifacts (stockage des datasets, modèles)

BentoML

Framework de serving optimisé pour le ML. Avantages : batching automatique, multi-framework (PyTorch, TensorFlow, sklearn), packaging standardisé.

AWS SageMaker / Google Vertex AI / Azure ML

Les solutions cloud managed offrent :

  • Notebooks managés
  • Training distribué sur GPU/TPU
  • AutoML et hyperparameter tuning
  • Serving avec scaling automatique
  • Monitoring intégré
Outil Meilleur pour Complexité
MLflow Tracking et registry Moyenne
BentoML Serving haute perf Faible
SageMaker Stack complet AWS Moyenne
Kubeflow Enterprise/K8s natif Élevée

Besoin d'accompagnement MLOps ?

Je vous aide à industrialiser vos projets ML : architecture, déploiement, monitoring et mise en place du CI/CD. De la preuve de concept à la production.

Me contacter

FAQ : Déploiement ML en production

Quelle architecture choisir pour déployer un modèle ML ?

Le choix dépend de votre cas d'usage : API REST synchrone pour les prédictions en temps réel (latence < 100ms), traitement batch pour les gros volumes de données, et streaming (Kafka) pour les cas temps réel continus. La majorité des projets commencent par une API REST simple.

Comment monitorer un modèle ML en production ?

Surveillez trois niveaux : les métriques système (CPU, mémoire, latence), la qualité des données d'entrée (drift), et la performance du modèle (précision, recall si vous avez des labels). Des outils comme MLflow, Evidently ou WhyLabs automatisent ce monitoring.

Qu'est-ce que le drift et comment le détecter ?

Le drift est la dégradation des performances d'un modèle causée par un changement dans les données (distribution des features ou relation feature/target). Détectez-le avec des tests statistiques (KS test, PSI) ou des métriques de distance entre distributions. Un retrain est nécessaire quand le drift dépasse un seuil.

Faut-il Kubernetes pour déployer un modèle ML ?

Pas obligatoirement. Pour un POC ou un faible trafic, Docker + un PaaS comme Heroku, Railway ou ECS suffisent. Kubernetes devient nécessaire quand vous avez besoin de scaling automatique, de haute disponibilité, ou de gérer des dizaines de modèles.