0Pricing
Learn AI with Python · Leçon

Charger et servir des modèles d’apprentissage automatique

Chargement au démarrage d’un modèle joblib/keras, inférence sûre dans les threads, points de terminaison de prédiction par lots.

Charger et servir des modèles d’apprentissage automatique est une leçon Learn AI with Python gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Learn AI with Python, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Learn AI with Python comprend 4 leçons au total.

Le problème du chargement

Charger un modèle depuis le disque est lent. Si vous le rechargez à chaque requête, la latence augmente considérablement. La solution : charger le modèle une seule fois au démarrage, puis le réutiliser pour toutes les requêtes.

L’événement de démarrage

Le point d’extension @app.on_event("startup") s’exécute une fois au démarrage du serveur ; c’est l’endroit idéal pour charger le modèle avant l’arrivée de toute requête.

from fastapi import FastAPI
import joblib

app = FastAPI()

@app.on_event("startup")
def load_model():
    app.state.model = joblib.load("model.joblib")

app.state pour un stockage compatible avec les threads

app.state est l’emplacement recommandé pour stocker des objets partagés comme le modèle. Stocké une fois au démarrage et seulement lu pendant les requêtes, il évite les problèmes liés aux variables globales de module modifiables.

from fastapi import Request

@app.post("/predict")
def predict(req: PredictRequest, request: Request):
    model = request.app.state.model
    return {"prediction": model.predict([req.features])[0]}

Pourquoi pas une variable globale ?

Une variable globale de module simple fonctionne, mais elle lie le chargement au moment de l’importation et est plus difficile à tester ou à remplacer. app.state lie le cycle de vie de l’objet à l’application, ce qui est plus propre et correspond au modèle recommandé par FastAPI.

L’approche lifespan moderne

Les versions récentes de FastAPI remplacent on_event par un gestionnaire de contexte lifespan, qui gère le démarrage et l’arrêt au même endroit.

from contextlib import asynccontextmanager

@asynccontextmanager
async def lifespan(app):
    app.state.model = joblib.load("model.joblib")  # startup
    yield
    app.state.model = None                          # shutdown

app = FastAPI(lifespan=lifespan)

Mise en chauffe du modèle

La première prédiction est souvent lente, car les frameworks s’initialisent de manière différée lors du premier appel. Faites chauffer le modèle au démarrage avec une prédiction fictive afin que la première vraie requête utilisateur soit déjà rapide.

@app.on_event("startup")
def load_and_warm():
    app.state.model = joblib.load("model.joblib")
    app.state.model.predict([[0.0, 0.0, 0.0, 0.0]])  # warm-up

Pourquoi la mise en chauffe est importante

Sans mise en chauffe, la première requête après un déploiement peut être plusieurs fois plus lente, ce qui dégrade la latence de queue et peut entraîner l’échec des vérifications de l’état. Une seule inférence fictive au démarrage permet de supporter ce coût en dehors du chemin critique.

Un point de terminaison de prédiction par lots

Prédire de nombreuses lignes en un seul appel est bien plus efficace que d’effectuer de nombreux appels individuels, car les modèles vectorisent les opérations sur un lot. Acceptez une liste de vecteurs de caractéristiques et renvoyez une liste de prédictions.

class BatchRequest(BaseModel):
    items: list[list[float]]

@app.post("/predict/batch")
def predict_batch(req: BatchRequest, request: Request):
    model = request.app.state.model
    preds = model.predict(req.items)
    return {"predictions": preds.tolist()}

Individuel ou par lots

  • Individuel : une entrée, latence minimale par appel, clients simples.
  • Par lots : nombreuses entrées simultanément, débit bien supérieur, idéal pour la notation hors ligne.

Proposer les deux options couvre les cas d’utilisation en temps réel et en masse.

Lire l’état dans les points de terminaison

Chaque point de terminaison lit le modèle partagé via request.app.state.model, sans jamais le recharger ; toutes les requêtes partagent ainsi une seule instance en mémoire.

Assembler le tout

Une configuration prête pour la production : charger et faire chauffer le modèle dans lifespan/startup, le stocker dans app.state et exposer des points de terminaison de prédiction individuels et par lots qui lisent l’état. Cela réduit la latence et maximise le débit.

Vérification rapide

Testez vos connaissances sur le service de modèles.

Récapitulatif

Vous avez chargé le modèle une seule fois via startup/lifespan, l’avez stocké dans app.state pour le réutiliser de manière compatible avec les threads, ajouté une prédiction fictive de mise en chauffe et exposé un point de terminaison par lots pour augmenter le débit. Ensuite : mettre l’API dans un conteneur Docker.

Questions Fréquemment Posées

La leçon « Charger et servir des modèles d’apprentissage automatique » est-elle gratuite ?

Oui — le texte complet de « Charger et servir des modèles d’apprentissage automatique » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Learn AI with Python, passe à CoddyKit PRO. Le cours Learn AI with Python comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Charger et servir des modèles d’apprentissage automatique » ?

Chargement au démarrage d’un modèle joblib/keras, inférence sûre dans les threads, points de terminaison de prédiction par lots. Tu pratiques Learn AI with Python avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Learn AI with Python ?

Aucune expérience préalable n'est requise. Learn AI with Python sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « Charger et servir des modèles d’apprentissage automatique » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Learn AI with Python ?

Oui. Chaque leçon Learn AI with Python inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Notions fondamentales de FastAPI pour les ingénieurs en apprentissage automatique
  2. Schémas Pydantic pour les requêtes et les réponses
  3. Charger et servir des modèles d’apprentissage automatique
  4. Conteneuriser l’API du modèle
← Retour à Learn AI with Python