Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Servire Modelli con FastAPI | Sezione
Fondamenti di MLOps

bookServire 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.

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

question mark

Quali affermazioni sul deployment di modelli di machine learning con FastAPI sono corrette?

Select all correct answers

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 1. Capitolo 7

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

bookServire 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.

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

question mark

Quali affermazioni sul deployment di modelli di machine learning con FastAPI sono corrette?

Select all correct answers

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 1. Capitolo 7
some-alt