Getting Started
Flujo completo: desde cero hasta API y dashboard en ~30 minutos
Esta guía recorre el ciclo completo de ingeniería de software estadístico con un ejemplo práctico y ejecutable.
¿Qué valor tiene este ejemplo?
Este ejemplo mínimo sienta las bases para proyectos reales: desde la validación de datos hasta el despliegue. Una vez interiorizado, podrás escalarlo a modelos más complejos (bayesianos, deep learning) y añadir monitoreo, reentrenamiento automático o feature stores.
Producto Final
Un sistema completo de ingeniería de software estadístico que resuelve un problema real: predecir una variable continua (y) a partir de dos características (x1, x2) usando un modelo de regresión lineal. Aunque el problema es simple, el valor real está en la infraestructura que lo rodea:
-
Reproducibilidad: todo el entorno, dependencias y datos se versionan (Poetry, DVC opcional).
-
Validación de datos: se verifica calidad y esquema antes de entrenar (sin datos “sucios”).
-
Experiment tracking: cada ejecución queda registrada en MLflow (parámetros, métricas, modelo).
-
Model registry: se promueve automáticamente la mejor versión con el alias
champion. -
API productiva: se expone el modelo como servicio REST con FastAPI, listo para integrarse a cualquier aplicación.
-
Dashboard interactivo: un frontend en Next.js consume la API y permite visualizar predicciones y la curva del modelo.
-
Despliegue listo para producción: con Docker Compose se empaquetan todos los servicios (API, frontend, MLflow).
Utilidad para tu aprendizaje
Al completar esta guía, habrás adquirido competencias directamente transferibles a entornos profesionales:
-
Estructurar un proyecto estadístico siguiendo una arquitectura en capas (core, servicios, interfaces).
-
Automatizar la validación de datos con scripts simples (pandas) evitando bibliotecas pesadas al inicio.
-
Gestionar experimentos y modelos con MLflow (tracking, registry, aliases).
-
Crear una API documentada y robusta con FastAPI, cargando el modelo champion desde MLflow.
-
Construir un dashboard interactivo en Next.js/TypeScript que consuma la API y muestre predicciones en tiempo real.
-
Orquestar múltiples servicios con Docker para un despliegue consistente en cualquier entorno.
Utilidad específica de cada paso
Paso 0 – Estructura del proyecto
Utilidad: Aprender a organizar el código por capas, separando la lógica de negocio (services), la presentación (interfaces/api) y los contratos (contracts). Esta estructura facilita el mantenimiento y el testing.
Paso 1 – Dataset y validación
Utilidad: Comprender la necesidad de datos deterministas (semilla fija) y la validación temprana. El script train_contract.py evita que datos corruptos lleguen al entrenamiento, un hábito esencial en MLOps.
Paso 2 – Versionado con DVC (opcional)
Utilidad: Ver cómo se vincula el código con los datos. Si más adelante cambias el dataset, DVC permite volver a cualquier versión anterior y reproducir el modelo exacto.
Paso 3 – Entrenamiento y MLflow
Utilidad: Registrar cada ejecución (parámetros, métricas, artefactos) y asignar un alias (champion) para saber qué modelo está en producción. En un equipo, esto elimina la confusión de “¿cuál es el último modelo bueno?”.
Paso 4 – API FastAPI
Utilidad: Pasar del modelo local a un servicio accesible por HTTP. Se aprende a cargar el modelo champion desde el registry y exponer endpoints con documentación automática (Swagger).
Paso 5 – Dashboard con Next.js
Utilidad: Conectar una interfaz de usuario real al modelo. Además, el botón “Generar curva desde API” demuestra cómo se puede explorar el comportamiento del modelo de forma interactiva, consultando la API en tiempo real.
Paso 6 – Docker Compose
Utilidad: Preparar el sistema para producción. Levantar todos los servicios (API, frontend, MLflow) con un solo comando garantiza que el entorno de desarrollo refleje el de producción.
Prerrequisitos
- Python 3.11 o superior
- Poetry (gestor de dependencias)
- Git (opcional, pero recomendado)
- Docker y Docker Compose (opcional, para el despliegue completo)
- Node.js 18+ y npm (para el dashboard)
Paso 0: Estructura del proyecto
Crea el directorio del proyecto y la estructura de carpetas:
Añade las dependencias principales y de desarrollo:
La estructura resultante será:
Paso 1: Dataset sintético y contrato de datos
1.1 Generar datos sintéticos
Crea el archivo data/generate_data.py:
Ejecuta:
1.2 Validación de datos con pandas
Crea contracts/train_contract.py con validaciones simples pero efectivas:
Ejecuta:
Paso 2: Versionado de datos con DVC (opcional)
Si deseas versionar los datos junto con el código, instala DVC y configúralo:
Paso 3: Entrenamiento y registro en MLflow
3.1 Iniciar el servidor de MLflow
Abre una terminal (o una pestaña nueva) y ejecuta:
3.2 Script de entrenamiento
Crea services/train_model.py:
Ejecuta el entrenamiento (en la terminal original, sin cerrar el servidor de MLflow):
Paso 4: API REST con FastAPI
Crea el archivo interfaces/api/main.py:
Levanta la API:
Prueba el endpoint desde otra terminal:
Ejemplo de respuesta:
Paso 5: Dashboard con Next.js y Recharts
5.1 Crear el proyecto Next.js
Abre una nueva terminal (sin cerrar las anteriores) y ejecuta:
5.2 Código del dashboard
Reemplaza el contenido de dashboard/app/page.tsx con:
5.3 Ejecutar el dashboard
Abre http://localhost:3000 en tu navegador. Deberías ver:
- Un formulario para ingresar
x1yx2y obtener la predicción real desde la API. - La curva de sensibilidad generada automáticamente al cargar la página consultando el endpoint
/predictpara un rango de valores. - Un botón "Regenerar curva desde API" para actualizar el gráfico manualmente.
Paso 6: Despliegue con Docker Compose (opcional)
Para ejecutar todo el sistema con un solo comando, añade los siguientes archivos.
6.1 Dockerfile para la API
Crea Dockerfile en la raíz del proyecto:
6.2 Dockerfile para el dashboard
Crea dashboard/Dockerfile:
6.3 Archivo docker-compose.yml
En la raíz del proyecto (junto al Dockerfile de la API), crea docker-compose.yml:
Levanta todos los servicios:
Accede a:
-
Dashboard: http://localhost:3000
-
MLflow UI: http://localhost:5000
Resumen de Comandos (sin Docker)
Próximos Pasos
- Manual Completo: fundamentos, principios y arquitectura.
- MLflow y Gestión de Modelos: tracking avanzado, registro y promociones.
- Monitoreo de Modelos: data drift, métricas operacionales, alertas.
- Guía de Implementación: despliegue avanzado, Celery, rollback.
Notas Finales
Si encuentras errores de conexión entre el dashboard y la API, verifica que el puerto 8000 esté accesible (en Docker, usa http://api:8000). En desarrollo local, http://127.0.0.1:8000 funciona.
El dataset sintético garantiza resultados deterministas con la semilla fija.
Para reproducir el mismo entrenamiento desde cero, el alias champion siempre apunta a la última versión registrada.
¡Has completado el ciclo completo!