0Pricing
Learn AI with Python · Lektion

ML-Modelle laden und bereitstellen

joblib-/keras-Modell beim Start laden, threadsichere Inferenz, Endpunkte für Batch-Prognosen.

ML-Modelle laden und bereitstellen ist eine kostenlose Learn AI with Python-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Learn AI with Python-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.

Das Problem beim Laden

Das Laden eines Modells von der Festplatte dauert lange. Wenn Sie es bei jeder Anfrage neu laden, steigt die Latenz drastisch. Die Lösung: Laden Sie das Modell beim Start einmal und verwenden Sie es für alle Anfragen wieder.

Das startup-Ereignis

Der Hook @app.on_event("startup") wird einmal gestartet, wenn der Server hochfährt. Das ist der ideale Ort, um das Modell zu laden, bevor eine Anfrage eintrifft.

from fastapi import FastAPI
import joblib

app = FastAPI()

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

app.state für thread-sichere Speicherung

app.state ist der empfohlene Ort, um gemeinsam verwendete Objekte wie das Modell abzulegen. Da es einmal beim Start gespeichert und während der Requests nur gelesen wird, vermeidet es die Probleme veränderlicher globaler Variablen auf Modulebene.

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

Warum keine globale Variable?

Eine einfache globale Variable auf Modulebene funktioniert, verknüpft das Laden jedoch mit dem Importzeitpunkt und lässt sich schwieriger testen oder austauschen. app.state bindet den Lebenszyklus des Objekts an die App. Das ist sauberer und das von FastAPI empfohlene Muster.

Der moderne lifespan-Ansatz

Neuere FastAPI-Versionen ersetzen on_event durch einen lifespan-Context-Manager, der Start und Herunterfahren an einer Stelle verwaltet.

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)

Modell-Warm-up

Die erste Vorhersage ist oft langsam, weil Frameworks beim ersten Aufruf verzögert initialisiert werden. Führen Sie beim Start ein Warm-up des Modells mit einer Dummy-Vorhersage durch, damit die erste echte Benutzeranfrage bereits schnell verarbeitet wird.

@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

Warum Warm-up wichtig ist

Ohne Warm-up kann die erste Anfrage nach einem Deployment um ein Vielfaches langsamer sein. Das verschlechtert die Tail-Latenz und kann dazu führen, dass Health Checks fehlschlagen. Eine einzige Dummy-Inferenz beim Start verlagert diese Kosten aus dem kritischen Pfad.

Ein Endpunkt für Batch-Vorhersagen

Viele Zeilen in einem Aufruf vorherzusagen ist deutlich effizienter als viele einzelne Aufrufe, da Modelle über einen Batch vektorisieren. Akzeptieren Sie eine Liste von Feature-Vektoren und geben Sie eine Liste von Vorhersagen zurück.

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

Einzeln vs. Batch

  • Einzeln: eine Eingabe, geringste Latenz pro Aufruf, einfache Clients.
  • Batch: viele Eingaben gleichzeitig, deutlich höherer Durchsatz, ideal für Offline-Scoring.

Wenn Sie beides anbieten, decken Sie Echtzeit- und Massenverarbeitung ab.

State in Endpunkten auslesen

Jeder Endpunkt liest das gemeinsam verwendete Modell über request.app.state.model, ohne es erneut zu laden. So verwenden alle Anfragen dieselbe Instanz im Arbeitsspeicher.

Alles zusammenführen

Eine produktionsreife Einrichtung lädt das Modell in lifespan/startup, führt ein Warm-up durch, speichert es in app.state und stellt sowohl einzelne als auch Batch-Vorhersage-Endpunkte bereit, die den State auslesen. Das minimiert die Latenz und maximiert den Durchsatz.

Kurzer Test

Testen Sie Ihr Wissen über das Bereitstellen von Modellen.

Zusammenfassung

Sie haben das Modell einmalig über startup/lifespan geladen, es zur thread-sicheren Wiederverwendung in app.state gespeichert, eine Dummy-Vorhersage zum Warm-up hinzugefügt und für höheren Durchsatz einen Batch-Endpunkt bereitgestellt. Als Nächstes machen Sie die API mit Docker bereit.

Häufig gestellte Fragen

Ist die Lektion „ML-Modelle laden und bereitstellen“ kostenlos?

Ja — der vollständige Text von „ML-Modelle laden und bereitstellen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Learn AI with Python-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „ML-Modelle laden und bereitstellen“?

joblib-/keras-Modell beim Start laden, threadsichere Inferenz, Endpunkte für Batch-Prognosen. Du übst Learn AI with Python mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Learn AI with Python zu starten?

Keine Vorkenntnisse erforderlich. Learn AI with Python auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „ML-Modelle laden und bereitstellen“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Learn AI with Python-Lektion Code schreiben und ausführen?

Ja. Jede Learn AI with Python-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. FastAPI-Grundlagen für ML Engineers
  2. Pydantic-Schemas für Requests und Responses
  3. ML-Modelle laden und bereitstellen
  4. Die Model-API mit Docker containerisieren
← Zurück zu Learn AI with Python