Leer AI met Python · Les

ML-modellen laden en serveren

Een joblib/keras-model laden bij het opstarten, thread-safe inferentie, endpoints voor batchvoorspellingen.

Les 3 van 413 stappen

ML-modellen laden en serveren is een gratis Leer AI met Python-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Leer AI met Python. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Leer AI met Python bevat in totaal 4 lessen.

Het laadprobleem

Een model van schijf laden is traag. Als je het bij elk verzoek opnieuw laadt, schiet de latentie omhoog. De oplossing: laad het model eenmalig bij het opstarten en gebruik het opnieuw voor alle verzoeken.

De opstartgebeurtenis

De hook @app.on_event("startup") wordt eenmaal uitgevoerd wanneer de server opstart. Dat is de ideale plek om het model te laden voordat er een verzoek binnenkomt.

from fastapi import FastAPI
import joblib

app = FastAPI()

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

app.state voor threadveilige opslag

app.state is de aanbevolen plek om gedeelde objecten, zoals het model, op te slaan. Het model wordt eenmaal opgeslagen bij het opstarten en tijdens verzoeken alleen gelezen. Zo vermijd je de problemen van veranderlijke globale variabelen op moduleniveau.

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]}

Waarom geen globale variabele?

Een eenvoudige globale variabele op moduleniveau werkt, maar koppelt het laden aan het importmoment en is moeilijker te testen of te vervangen. app.state koppelt de levenscyclus van het object aan de app. Dat is overzichtelijker en de door FastAPI aanbevolen aanpak.

De moderne lifespan-aanpak

Nieuwere versies van FastAPI vervangen on_event door een contextmanager voor lifespan, die het opstarten en afsluiten op één plek afhandelt.

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)

Modelopwarming

De eerste voorspelling is vaak traag, omdat frameworks zich pas bij de eerste aanroep lui initialiseren. Warm het model bij het opstarten op met een dummyvoorspelling, zodat het eerste echte gebruikersverzoek al snel wordt afgehandeld.

@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

Waarom opwarming belangrijk is

Zonder opwarming kan het eerste verzoek na een implementatie vele malen trager zijn. Dat verslechtert de staartlatentie en kan er zelfs voor zorgen dat statuscontroles mislukken. Met één dummy-inferentie bij het opstarten plaats je deze kosten buiten het kritieke pad.

Een eindpunt voor batchvoorspellingen

Veel rijen in één aanroep voorspellen is veel efficiënter dan veel afzonderlijke aanroepen, omdat modellen over een batch vectoriseren. Accepteer een lijst met kenmerkvectoren en retourneer een lijst met voorspellingen.

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()}

Enkelvoudig versus batch

  • Enkelvoudig: één invoer, de laagste latentie per aanroep, eenvoudige clients.
  • Batch: veel invoeren tegelijk, een veel hogere verwerkingscapaciteit, ideaal voor offlinebeoordeling.

Door beide aan te bieden, ondersteun je realtime- en bulkscenario's.

Status uitlezen in eindpunten

Elk eindpunt leest het gedeelde model via request.app.state.model en laadt het nooit opnieuw. Zo delen alle verzoeken één instantie in het geheugen.

Alles samenbrengen

Een productierijpe opstelling: laad het model en warm het op in lifespan/startup, sla het op in app.state en bied zowel afzonderlijke als batch-voorspellingseindpunten aan die de status uitlezen. Zo beperk je de latentie en maximaliseer je de verwerkingscapaciteit.

Korte toets

Toets je kennis van het aanbieden van modellen.

Samenvatting

Je hebt het model eenmaal geladen via startup/lifespan, het opgeslagen in app.state voor threadveilig hergebruik, een dummyvoorspelling voor opwarming toegevoegd en een batch-eindpunt aangeboden voor een hogere verwerkingscapaciteit. Volgende onderwerp: de API in Docker verpakken.

Gratis beginnen

Leer Python met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
53
Lessen
225

Veelgestelde vragen

Is de les “ML-modellen laden en serveren” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Leer AI met Python, waaronder “ML-modellen laden en serveren”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Leer AI met Python bevat in totaal 4 lessen.

Wat leer ik in “ML-modellen laden en serveren”?

Een joblib/keras-model laden bij het opstarten, thread-safe inferentie, endpoints voor batchvoorspellingen. Je oefent met Leer AI met Python door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Leer AI met Python te beginnen?

Ervaring vooraf is niet nodig. Leer AI met Python op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “ML-modellen laden en serveren”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Leer AI met Python?

Ja. Elke les over Leer AI met Python bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. FastAPI-basis voor ML-engineers
  2. Pydantic-schema's voor requests en responses
  3. ML-modellen laden en serveren
  4. De model-API containeriseren met Docker
← Terug naar Leer AI met Python