Distribuere Modeller med FastAPI
Når du ønsker å gjøre maskinlæringsmodellen din tilgjengelig for bruk av andre applikasjoner eller brukere, er det vanlig og praktisk å tilby den som en webtjeneste. FastAPI er et moderne Python-rammeverk for web som lar deg raskt bygge REST API-er, og er derfor et utmerket valg for å tilby maskinlæringsmodeller. Med FastAPI kan du eksponere en trent modell gjennom HTTP-endepunkter, slik at prediksjoner kan etterspørres fra hvor som helst, med hvilket som helst språk eller verktøy som kan sende webforespørsler.
Den typiske arbeidsflyten for å tilby en ML-modell med FastAPI inkluderer flere steg:
- Tren og serialiser modellen din ved hjelp av et bibliotek som scikit-learn;
- Opprett en FastAPI-applikasjon som laster den lagrede modellen ved oppstart;
- Definer et endepunkt (for eksempel
/predict) som aksepterer inndata, kjører inferens og returnerer prediksjonen; - Kjør FastAPI-applikasjonen som en webserver, slik at den kan svare på HTTP-forespørsler.
Denne tilnærmingen gir flere fordeler:
- Du kan skille modellen fra treningsmiljøet og gjøre den tilgjengelig for andre systemer;
- FastAPI genererer automatisk interaktiv dokumentasjon for API-et ditt, noe som gjør det enkelt å teste og dele;
- Rammeverket er asynkront og svært ytelseseffektivt, noe som er viktig for sanntids- eller produksjonsbruk.
Før vi ser hvordan dette implementeres, la oss klargjøre hva FastAPI er.
FastAPI er et moderne, raskt web-rammeverk for å bygge API-er med Python.
For å se hvordan dette fungerer i praksis, følger her et enkelt FastAPI-program som laster en scikit-learn-modell og eksponerer et /predict-endepunkt. Dette eksempelet forutsetter at du allerede har trent og lagret en modell ved hjelp av scikit-learn sitt joblib- eller pickle-modul. API-et vil akseptere JSON-inndata for prediksjon og returnere modellens utdata.
from fastapi import FastAPI
from pydantic import BaseModel
import joblib
import numpy as np
# Define the request body schema
class InputData(BaseModel):
feature1: float
feature2: float
# Load the trained model (assumes model.pkl exists)
model = joblib.load("model.pkl")
app = FastAPI()
@app.post("/predict")
def predict(input_data: InputData):
# Prepare input for the model
data = np.array([[input_data.feature1, input_data.feature2]])
# Make prediction
prediction = model.predict(data)
# Return the result as JSON
return {"prediction": prediction[0]}
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Fantastisk!
Completion rate forbedret til 6.67
Distribuere Modeller med FastAPI
Sveip for å vise menyen
Når du ønsker å gjøre maskinlæringsmodellen din tilgjengelig for bruk av andre applikasjoner eller brukere, er det vanlig og praktisk å tilby den som en webtjeneste. FastAPI er et moderne Python-rammeverk for web som lar deg raskt bygge REST API-er, og er derfor et utmerket valg for å tilby maskinlæringsmodeller. Med FastAPI kan du eksponere en trent modell gjennom HTTP-endepunkter, slik at prediksjoner kan etterspørres fra hvor som helst, med hvilket som helst språk eller verktøy som kan sende webforespørsler.
Den typiske arbeidsflyten for å tilby en ML-modell med FastAPI inkluderer flere steg:
- Tren og serialiser modellen din ved hjelp av et bibliotek som scikit-learn;
- Opprett en FastAPI-applikasjon som laster den lagrede modellen ved oppstart;
- Definer et endepunkt (for eksempel
/predict) som aksepterer inndata, kjører inferens og returnerer prediksjonen; - Kjør FastAPI-applikasjonen som en webserver, slik at den kan svare på HTTP-forespørsler.
Denne tilnærmingen gir flere fordeler:
- Du kan skille modellen fra treningsmiljøet og gjøre den tilgjengelig for andre systemer;
- FastAPI genererer automatisk interaktiv dokumentasjon for API-et ditt, noe som gjør det enkelt å teste og dele;
- Rammeverket er asynkront og svært ytelseseffektivt, noe som er viktig for sanntids- eller produksjonsbruk.
Før vi ser hvordan dette implementeres, la oss klargjøre hva FastAPI er.
FastAPI er et moderne, raskt web-rammeverk for å bygge API-er med Python.
For å se hvordan dette fungerer i praksis, følger her et enkelt FastAPI-program som laster en scikit-learn-modell og eksponerer et /predict-endepunkt. Dette eksempelet forutsetter at du allerede har trent og lagret en modell ved hjelp av scikit-learn sitt joblib- eller pickle-modul. API-et vil akseptere JSON-inndata for prediksjon og returnere modellens utdata.
from fastapi import FastAPI
from pydantic import BaseModel
import joblib
import numpy as np
# Define the request body schema
class InputData(BaseModel):
feature1: float
feature2: float
# Load the trained model (assumes model.pkl exists)
model = joblib.load("model.pkl")
app = FastAPI()
@app.post("/predict")
def predict(input_data: InputData):
# Prepare input for the model
data = np.array([[input_data.feature1, input_data.feature2]])
# Make prediction
prediction = model.predict(data)
# Return the result as JSON
return {"prediction": prediction[0]}
Takk for tilbakemeldingene dine!