Aller au contenu principal

FastAPI pour le ML

Un modèle qui atteint 0,82 d'AUC dans un carnet Jupyter n'est pas encore un produit. Pour qu'il rende service, il faut qu'un tableau de bord, une application mobile ou un travail de nuit puissent lui envoyer un exemple et recevoir un score en quelques millisecondes, de façon fiable, tracée et sécurisée. C'est ce que fait une interface de programmation — souvent abrégée en API — construite avec FastAPI.

Durée du cours : 5 h

Ce que vous allez apprendre

  • Écrire une application FastAPI minimale, la documenter automatiquement et la lancer avec Uvicorn
  • Valider les entrées et les sorties avec Pydantic et distinguer 400, 422 et 500
  • Charger le modèle une seule fois au démarrage, avec sa version exposée
  • Servir des prédictions unitaires et par lots sans que le prétraitement diverge de l'entraînement
  • Choisir entre def et async def selon que le calcul est bloquant ou non
  • Sécuriser l'accès par un jeton, suivre l'activité par des journaux structurés et exposer des sondes de santé
  • Emballer le service dans une image Docker légère et déployer plusieurs travailleurs
  • Mesurer la charge acceptable avec Locust, lire les percentiles et dimensionner l'infrastructure

Prérequis

  • Python courant (cours 02) et un modèle entraîné (cours 04 ou suivants)
  • Notions de conteneurs : docker build, docker run, images en couches
  • Notions de HTTP : verbes, codes de retour, en-têtes, corps JSON

Modules du cours

  1. FastAPI : routes, types et documentation automatique
  2. Validation des entrées avec Pydantic
  3. Chargement du modèle au démarrage
  4. Prédiction unitaire et par lots
  5. Gestion des erreurs et codes de retour
  6. Requêtes asynchrones et tâches de fond
  7. Authentification par jeton
  8. Journalisation et sondes de santé
  9. Conteneurisation et déploiement
  10. Tests de charge et dimensionnement

Fil rouge du cours

Le cours 20 (MLOps) a livré un modèle de résiliation d'abonnés télécom enregistré dans MLflow sous l'alias @champion. Le cours 38 (Streamlit) a construit un tableau de bord qui affiche les 100 abonnés les plus à risque. Entre les deux, il manque exactement ce que ce cours construit : une API FastAPI qui expose deux routes, /predict pour un abonné et /predict/batch pour un fichier de plusieurs milliers de lignes.

Au module 1, le service ne fait rien ; il a dix lignes. Chaque module ajoute une brique — validation, chargement, prédiction, erreurs, tâches de fond, jeton, journaux, image Docker, dimensionnement — sur le même dépôt. À la fin, le service tient 300 requêtes par seconde derrière trois travailleurs Uvicorn, journalise chaque prédiction avec un identifiant unique, refuse les appels sans jeton valide et se déploie en une commande.

Évaluation et attestation

Le parcours se termine par un examen de 40 questions qui couvre les dix modules. En cas de réussite, une attestation d'achèvement est délivrée immédiatement ; son numéro est vérifiable sur la plateforme par tout tiers.

Les cours gratuits, eux, se concluent par un quiz de 5 questions avec un aperçu de l'attestation, sans certification.