Servire Modelli con FastAPI
Quando è necessario rendere disponibile il proprio modello di machine learning per l'utilizzo da parte di altre applicazioni o utenti, esporlo come servizio web rappresenta una soluzione comune e pratica. FastAPI è un moderno framework web Python che consente di costruire rapidamente API REST, risultando una scelta eccellente per il deployment di modelli di machine learning. Utilizzando FastAPI, è possibile esporre un modello addestrato tramite endpoint HTTP, così da poter richiedere predizioni da qualsiasi luogo, utilizzando qualsiasi linguaggio o strumento in grado di effettuare richieste web.
Il flusso di lavoro tipico per servire un modello ML con FastAPI comprende diversi passaggi:
- Addestrare e serializzare il modello utilizzando una libreria come scikit-learn;
- Creare un'app FastAPI che carica il modello salvato all'avvio;
- Definire un endpoint (ad esempio
/predict) che accetta dati in input, esegue l'inferenza e restituisce la predizione; - Eseguire l'app FastAPI come server web, così da poter rispondere alle richieste HTTP.
Questo approccio offre numerosi vantaggi:
- Permette di disaccoppiare il modello dall'ambiente di training e renderlo accessibile ad altri sistemi;
- FastAPI genera automaticamente una documentazione interattiva per la propria API, facilitando test e condivisione;
- Il framework è asincrono e altamente performante, caratteristica importante per l'utilizzo in tempo reale o in produzione.
Prima di vedere come implementare tutto ciò, chiariamo cos'è FastAPI.
FastAPI è un framework web moderno e veloce per la creazione di API con Python.
Per vedere come funziona nella pratica, ecco una semplice applicazione FastAPI che carica un modello scikit-learn ed espone un endpoint /predict. Questo esempio presuppone che sia già stato addestrato e salvato un modello utilizzando il modulo joblib o pickle di scikit-learn. L'API accetterà input in formato JSON per la predizione e restituirà l'output del modello.
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]}
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Fantastico!
Completion tasso migliorato a 6.67
Servire Modelli con FastAPI
Scorri per mostrare il menu
Quando è necessario rendere disponibile il proprio modello di machine learning per l'utilizzo da parte di altre applicazioni o utenti, esporlo come servizio web rappresenta una soluzione comune e pratica. FastAPI è un moderno framework web Python che consente di costruire rapidamente API REST, risultando una scelta eccellente per il deployment di modelli di machine learning. Utilizzando FastAPI, è possibile esporre un modello addestrato tramite endpoint HTTP, così da poter richiedere predizioni da qualsiasi luogo, utilizzando qualsiasi linguaggio o strumento in grado di effettuare richieste web.
Il flusso di lavoro tipico per servire un modello ML con FastAPI comprende diversi passaggi:
- Addestrare e serializzare il modello utilizzando una libreria come scikit-learn;
- Creare un'app FastAPI che carica il modello salvato all'avvio;
- Definire un endpoint (ad esempio
/predict) che accetta dati in input, esegue l'inferenza e restituisce la predizione; - Eseguire l'app FastAPI come server web, così da poter rispondere alle richieste HTTP.
Questo approccio offre numerosi vantaggi:
- Permette di disaccoppiare il modello dall'ambiente di training e renderlo accessibile ad altri sistemi;
- FastAPI genera automaticamente una documentazione interattiva per la propria API, facilitando test e condivisione;
- Il framework è asincrono e altamente performante, caratteristica importante per l'utilizzo in tempo reale o in produzione.
Prima di vedere come implementare tutto ciò, chiariamo cos'è FastAPI.
FastAPI è un framework web moderno e veloce per la creazione di API con Python.
Per vedere come funziona nella pratica, ecco una semplice applicazione FastAPI che carica un modello scikit-learn ed espone un endpoint /predict. Questo esempio presuppone che sia già stato addestrato e salvato un modello utilizzando il modulo joblib o pickle di scikit-learn. L'API accetterà input in formato JSON per la predizione e restituirà l'output del modello.
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]}
Grazie per i tuoi commenti!