Servir Modelos con FastAPI
Cuando se necesita poner un modelo de aprendizaje automático a disposición de otras aplicaciones o usuarios, exponerlo como un servicio web es una solución común y práctica. FastAPI es un framework web moderno de Python que permite construir APIs REST de manera rápida, lo que lo convierte en una excelente opción para servir modelos de aprendizaje automático. Utilizando FastAPI, es posible exponer un modelo entrenado a través de endpoints HTTP, de modo que se puedan solicitar predicciones desde cualquier lugar, utilizando cualquier lenguaje o herramienta capaz de realizar solicitudes web.
El flujo de trabajo típico para servir un modelo de ML con FastAPI incluye varios pasos:
- Entrenar y serializar el modelo utilizando una biblioteca como scikit-learn;
- Crear una aplicación FastAPI que cargue el modelo guardado al iniciar;
- Definir un endpoint (como
/predict) que acepte datos de entrada, ejecute la inferencia y devuelva la predicción; - Ejecutar la aplicación FastAPI como un servidor web para que pueda responder a solicitudes HTTP.
Este enfoque ofrece muchos beneficios:
- Permite desacoplar el modelo del entorno de entrenamiento y hacerlo accesible para otros sistemas;
- FastAPI genera automáticamente documentación interactiva para la API, facilitando su prueba y difusión;
- El framework es asíncrono y altamente eficiente, lo cual es importante para casos de uso en tiempo real o en producción.
Antes de ver cómo implementar esto, aclaremos qué es FastAPI.
FastAPI es un framework web moderno y rápido para construir APIs con Python.
Para ver cómo funciona esto en la práctica, aquí tienes una aplicación sencilla de FastAPI que carga un modelo de scikit-learn y expone un endpoint /predict. Este ejemplo asume que ya se ha entrenado y guardado un modelo utilizando el módulo joblib o pickle de scikit-learn. La API aceptará una entrada en formato JSON para la predicción y devolverá la salida del modelo.
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]}
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Genial!
Completion tasa mejorada a 6.67
Servir Modelos con FastAPI
Desliza para mostrar el menú
Cuando se necesita poner un modelo de aprendizaje automático a disposición de otras aplicaciones o usuarios, exponerlo como un servicio web es una solución común y práctica. FastAPI es un framework web moderno de Python que permite construir APIs REST de manera rápida, lo que lo convierte en una excelente opción para servir modelos de aprendizaje automático. Utilizando FastAPI, es posible exponer un modelo entrenado a través de endpoints HTTP, de modo que se puedan solicitar predicciones desde cualquier lugar, utilizando cualquier lenguaje o herramienta capaz de realizar solicitudes web.
El flujo de trabajo típico para servir un modelo de ML con FastAPI incluye varios pasos:
- Entrenar y serializar el modelo utilizando una biblioteca como scikit-learn;
- Crear una aplicación FastAPI que cargue el modelo guardado al iniciar;
- Definir un endpoint (como
/predict) que acepte datos de entrada, ejecute la inferencia y devuelva la predicción; - Ejecutar la aplicación FastAPI como un servidor web para que pueda responder a solicitudes HTTP.
Este enfoque ofrece muchos beneficios:
- Permite desacoplar el modelo del entorno de entrenamiento y hacerlo accesible para otros sistemas;
- FastAPI genera automáticamente documentación interactiva para la API, facilitando su prueba y difusión;
- El framework es asíncrono y altamente eficiente, lo cual es importante para casos de uso en tiempo real o en producción.
Antes de ver cómo implementar esto, aclaremos qué es FastAPI.
FastAPI es un framework web moderno y rápido para construir APIs con Python.
Para ver cómo funciona esto en la práctica, aquí tienes una aplicación sencilla de FastAPI que carga un modelo de scikit-learn y expone un endpoint /predict. Este ejemplo asume que ya se ha entrenado y guardado un modelo utilizando el módulo joblib o pickle de scikit-learn. La API aceptará una entrada en formato JSON para la predicción y devolverá la salida del modelo.
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]}
¡Gracias por tus comentarios!