Déploiement de modèles
Flask, FastAPI, Docker — mettre un modèle en production, c’est l’exposer via une API fiable.
Une compétence clé transmise par ISOSET dans ses parcours MLOps avancés.
Pourquoi transformer un modèle en service web ?
Les modèles consommateurs (applications mobiles, sites e-commerce, dashboards) ne peuvent pas charger directement un fichier .pkl ou .joblib. Une API standardise l’accès : entrée JSON, sortie JSON, authentification éventuelle, scaling horizontal. Sans API, pas d’intégration dans une architecture moderne.
De plus, le découplage permet de mettre à jour le modèle sans redéployer l’application cliente. C’est la brique de base du MLOps. ISOSET Entreprises accompagne les équipes dans cette bascule.
Versionnement
Plusieurs modèles coexistent via des endpoints différents (v1, v2). A/B testing possible en routant un pourcentage du trafic.
Scalabilité
Les frameworks comme FastAPI gèrent des milliers de requêtes simultanées. On peut déployer derrière un load balancer et un auto-scaling.
Sécurité & contrôle
Authentification par clé API, rate limiting, logs d’accès. Le modèle n’est pas exposé directement aux utilisateurs finaux.
Monitoring
Mesure de la latence, du débit, de la dérive des prédictions. Possibilité de déclencher des alertes.
Flask ou FastAPI : quel cadre choisir ?
Les deux bibliothèques Python répondent à des besoins différents. ISOSET forme aux deux, en mettant l’accent sur les critères de choix : maturité, performance, facilité de prise en main.
| Critère | Flask | FastAPI |
|---|---|---|
| Popularité & communauté | Très mature, milliers d’extensions | En pleine croissance, mais plus jeune |
| Performance | Modérée (serveur WSGI) | Très élevée (ASGI, concurrence native) |
| Validation des données | Manuelle (souvent avec Marshmallow) | Automatique via Pydantic |
| Documentation interactive | Nécessite Flask-RESTX ou autre | Intégrée (Swagger UI, ReDoc) |
| Asynchrone | Possible avec Quart (fork) | Natif, support de async/await |
| Idéal pour | Prototypes, petits volumes, équipes habituées | APIs haute performance, microservices |
Étapes clés d’un déploiement robuste
Le chemin qui mène du notebook à l’API scalable suit une trame reproductible. La pédagogie ISOSET la déroule en ateliers de deux jours.
Sérialisation du modèle
Pickle, joblib, ONNX, ou MLflow. Le modèle entraîné est sauvegardé sur disque ou dans un bucket cloud.
Création de l’API
Endpoint /predict, méthode POST, lecture des features, chargement du modèle, calcul de la prédiction, réponse JSON.
Containerisation
Dockerfile basé sur Python slim, copie du code, installation des dépendances (requirements.txt), exposition du port.
Déploiement continu
Push sur un registre (ECR, GAR), déploiement sur Kubernetes ou Cloud Run, mise en place du monitoring.
Extraits de code commentés
Voici deux implémentations minimales d’une API de prédiction pour un modèle de classification.
# Flask — version synchrone simple from flask import Flask, request, jsonify import joblib app = Flask(__name__) model = joblib.load("model.pkl") @app.route("/predict", methods=["POST"]) def predict(): data = request.get_json() features = data["features"] prediction = model.predict([features])[0] return jsonify({"prediction": int(prediction)}) if __name__ == "__main__": app.run(host="0.0.0.0", port=5000) # FastAPI — avec validation asynchrone et doc auto from fastapi import FastAPI, HTTPException from pydantic import BaseModel import joblib app = FastAPI(title="ML Predictor") model = joblib.load("model.pkl") class InputFeatures(BaseModel): features: list[float] @app.post("/predict") async def predict(input_data: InputFeatures): try: pred = model.predict([input_data.features])[0] return {"prediction": int(pred)} except Exception as e: raise HTTPException(status_code=400, detail=str(e))
FastAPI génère automatiquement une interface /docs pour tester l’API. Flask nécessite des outils supplémentaires. Les deux peuvent être conteneurisés de manière identique. ISOSET initie aussi les jeunes développeurs à ces bonnes pratiques.
Performance & scaling : gérer la charge
Un modèle simple peut répondre en 10 ms. Mais plusieurs centaines de requêtes simultanées peuvent saturer le serveur. Solutions :
Gunicorn + workers
Pour Flask, on utilise Gunicorn avec plusieurs workers (processus) pour utiliser tous les cœurs CPU.
Uvicorn (FastAPI)
Serveur ASGI natif, gestion asynchrone des requêtes, support de WebSockets si besoin.
Mise en cache
Pour les features identiques (ex: appel répété), un cache Redis peut stocker les prédictions récentes.
Auto-scaling
Sur Kubernetes, on ajuste le nombre de réplicas selon la charge CPU ou le nombre de requêtes par seconde.
Exemples d’intégration métier
Une application de scoring bancaire appelle une API Flask pour évaluer la solvabilité en temps réel (temps de réponse < 200 ms). Un chatbot e-commerce utilise FastAPI pour interroger un modèle de recommandation de produits, avec mise à jour quotidienne du modèle sans downtime. Un système de détection de fraude déploie plusieurs versions de modèles derrière un répartiteur (NGINX) pour comparer les performances.
ISOSET reproduit ces cas dans ses labs, chaque participant déployant sa propre API sur un cloud public.
ISOSET : déployez, ne rêvez pas
L’atelier phare de la formation consiste à prendre un modèle (scikit-learn, XGBoost ou TensorFlow), à écrire une API Flask ou FastAPI, à le conteneuriser avec Docker, puis à le déployer sur un cluster Kubernetes. Chaque participant repart avec une URL publique fonctionnelle et un tableau de bord de monitoring. Les formateurs corrigent les erreurs en direct et partagent des patterns éprouvés en entreprise. Les anciens élèves citent souvent ce module comme un déclencheur de carrière.
Bonnes pratiques pour une API robuste
Validation stricte des entrées
Ne jamais faire confiance au client. Vérifier types, plages, présence des champs obligatoires.
Gestion des erreurs métier
Retourner des codes HTTP explicites (400, 422, 500) avec des messages utiles pour le débogage.
Logging structuré
Enregistrer chaque prédiction (anonymisée) pour analyse ultérieure et détection de dérive.
Tests d’intégration
Simuler des appels à l’API dans un pipeline CI pour vérifier que le modèle se charge et répond correctement.
Un modèle non déployé n’a aucune valeur.
Flask, FastAPI, Docker — ces technologies sont les passerelles entre la science des données et la vraie vie. Les maîtriser, c’est transformer un artefact de recherche en un service utilisable par des milliers d’utilisateurs.
— ISOSET — formation intensive au déploiement de modèles —