Cargue el modelo una sola vez al iniciar
Use eventos de lifespan para que la carga ocurra una sola vez.
Cargue el modelo una sola vez al iniciar es una lección gratuita de MLOps Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de MLOps Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de MLOps Academy incluye 4 lecciones en total.
La trampa del endpoint lento
Si llama a joblib.load dentro de /predict, el modelo se vuelve a cargar en cada solicitud. Eso es lento y desperdicia recursos con modelos grandes. 🐢
Cárguelo una sola vez
La solución es cargar el model una sola vez cuando se inicia el servicio, mantenerlo en memoria y reutilizarlo para cada predicción.
El hook de lifespan
FastAPI le ofrece una función lifespan para ejecutar la configuración antes de atender solicitudes y la limpieza después. Es el lugar adecuado para cargar el modelo.
Escriba un gestor de contexto asíncrono
Decore una función asíncrona con asynccontextmanager. El código anterior a yield se ejecuta al iniciar; el posterior, al apagar.
from contextlib import asynccontextmanagerGuarde el modelo en state
Cargue el modelo al iniciar y guárdelo en app.state, un lugar compartido al que cualquier controlador de solicitudes puede acceder después.
@asynccontextmanager
async def lifespan(app):
app.state.model = joblib.load("model.joblib")
yieldConéctelo a la aplicación
Pase su función lifespan al crear la aplicación. Ahora FastAPI ejecutará su código de carga una vez al iniciar el servidor.
app = FastAPI(lifespan=lifespan)Léalo en la ruta
Dentro de /predict, obtenga el modelo ya cargado desde app.state. No hay lectura del disco: solo una búsqueda rápida en memoria.
@app.post("/predict")
def predict(req: Request):
model = req.app.state.modelLimpie al apagar
Todo lo que esté después de yield se ejecuta cuando la aplicación se detiene, lo que resulta perfecto para cerrar archivos o liberar la memoria de la GPU que retenía el modelo.
yield
app.state.model = NonePrimera solicitud más rápida
Como la carga terminó durante el startup, incluso el primer usuario obtiene una respuesta rápida, sin la penalización de una carga en frío. ⚡
Vigile la cantidad de workers
Cada worker de uvicorn es un proceso independiente con su propia copia del modelo. Más workers implican más memoria, así que elija la cantidad deliberadamente.
Por qué es importante
Cargar una sola vez es una optimización fundamental al servir modelos: reduce la latencia, disminuye la E/S de disco y mantiene predecible el uso de memoria bajo traffic real. 📈
Comprobación rápida
Quiere que el modelo se cargue exactamente una vez cuando se inicie el servicio. ¿Dónde debería hacerlo?
Resumen
Trasladó la carga a un hook de lifespan, guardó el modelo en app.state y lo leyó en cada solicitud. Una carga, respuestas rápidas y un apagado limpio. 🙌
Aprende Python con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 30
- Lecciones
- 120
Preguntas frecuentes
¿La lección «Cargue el modelo una sola vez al iniciar» es gratis?
Sí — el texto completo de «Cargue el modelo una sola vez al iniciar» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de MLOps Academy, actualiza a CoddyKit PRO. El curso de MLOps Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Cargue el modelo una sola vez al iniciar»?
Use eventos de lifespan para que la carga ocurra una sola vez. Practicas MLOps Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar MLOps Academy?
No se requiere experiencia previa. MLOps Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Cargue el modelo una sola vez al iniciar»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de MLOps Academy?
Sí. Cada lección de MLOps Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Su primer endpoint /predict
- Valide las solicitudes con Pydantic
- Cargue el modelo una sola vez al iniciar
- Añada una comprobación de disponibilidad /health