Tillhandahålla Modeller med FastAPI
När du behöver göra din maskininlärningsmodell tillgänglig för andra applikationer eller användare är det vanligt och praktiskt att exponera den som en webbtjänst. FastAPI är ett modernt Python-webbramverk som låter dig snabbt bygga REST API:er, vilket gör det till ett utmärkt val för att tillhandahålla maskininlärningsmodeller. Med FastAPI kan du exponera en tränad modell via HTTP-endpoints, så att förfrågningar om prediktioner kan göras varifrån som helst, med vilket språk eller verktyg som helst som kan göra webbförfrågningar.
Det typiska arbetsflödet för att tillhandahålla en ML-modell med FastAPI omfattar flera steg:
- Träna och serialisera din modell med ett bibliotek som scikit-learn;
- Skapa en FastAPI-app som laddar den sparade modellen vid uppstart;
- Definiera en endpoint (till exempel
/predict) som tar emot indata, kör inferens och returnerar prediktionen; - Kör FastAPI-appen som en webbserver så att den kan svara på HTTP-förfrågningar.
Detta tillvägagångssätt ger många fördelar:
- Du kan separera din modell från träningsmiljön och göra den tillgänglig för andra system;
- FastAPI genererar automatiskt interaktiv dokumentation för ditt API, vilket gör det enkelt att testa och dela;
- Ramverket är asynkront och mycket prestandaeffektivt, vilket är viktigt för realtids- eller produktionsanvändning.
Innan vi ser hur detta implementeras, låt oss förtydliga vad FastAPI är.
FastAPI är ett modernt, snabbt webbramverk för att bygga API:er med Python.
För att se hur detta fungerar i praktiken följer här en enkel FastAPI-applikation som laddar en scikit-learn-modell och exponerar en /predict-endpoint. Detta exempel förutsätter att du redan har tränat och sparat en modell med scikit-learns joblib eller pickle-modul. API:et accepterar JSON-indata för prediktion och returnerar 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]}
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Fantastiskt!
Completion betyg förbättrat till 6.67
Tillhandahålla Modeller med FastAPI
Svep för att visa menyn
När du behöver göra din maskininlärningsmodell tillgänglig för andra applikationer eller användare är det vanligt och praktiskt att exponera den som en webbtjänst. FastAPI är ett modernt Python-webbramverk som låter dig snabbt bygga REST API:er, vilket gör det till ett utmärkt val för att tillhandahålla maskininlärningsmodeller. Med FastAPI kan du exponera en tränad modell via HTTP-endpoints, så att förfrågningar om prediktioner kan göras varifrån som helst, med vilket språk eller verktyg som helst som kan göra webbförfrågningar.
Det typiska arbetsflödet för att tillhandahålla en ML-modell med FastAPI omfattar flera steg:
- Träna och serialisera din modell med ett bibliotek som scikit-learn;
- Skapa en FastAPI-app som laddar den sparade modellen vid uppstart;
- Definiera en endpoint (till exempel
/predict) som tar emot indata, kör inferens och returnerar prediktionen; - Kör FastAPI-appen som en webbserver så att den kan svara på HTTP-förfrågningar.
Detta tillvägagångssätt ger många fördelar:
- Du kan separera din modell från träningsmiljön och göra den tillgänglig för andra system;
- FastAPI genererar automatiskt interaktiv dokumentation för ditt API, vilket gör det enkelt att testa och dela;
- Ramverket är asynkront och mycket prestandaeffektivt, vilket är viktigt för realtids- eller produktionsanvändning.
Innan vi ser hur detta implementeras, låt oss förtydliga vad FastAPI är.
FastAPI är ett modernt, snabbt webbramverk för att bygga API:er med Python.
För att se hur detta fungerar i praktiken följer här en enkel FastAPI-applikation som laddar en scikit-learn-modell och exponerar en /predict-endpoint. Detta exempel förutsätter att du redan har tränat och sparat en modell med scikit-learns joblib eller pickle-modul. API:et accepterar JSON-indata för prediktion och returnerar 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]}
Tack för dina kommentarer!