Este proyecto implementa un pipeline de Machine Learning de principio a fin para predecir la demanda de bicicletas compartidas en Seúl, utilizando un enfoque robusto de MLOps. El objetivo es demostrar las mejores prácticas para la reproducibilidad, el versionado, el seguimiento de experimentos y la automatización del ciclo de vida de ML.
- Pipeline Reproducible con DVC: Todo el flujo de trabajo, desde la limpieza de datos hasta la generación de predicciones, está orquestado con DVC. Esto garantiza que cada paso sea reproducible con un solo comando.
- Versionado de Datos y Modelos: Git se utiliza para el código, mientras que DVC gestiona los datasets y los artefactos de los modelos, manteniendo el repositorio ligero y sincronizado.
- Seguimiento de Experimentos con MLflow: Cada experimento de entrenamiento se registra en MLflow. Se guardan parámetros, métricas y los propios modelos para facilitar la comparación y el análisis.
- Promoción Automática del Mejor Modelo: Un script automatizado consulta los resultados en MLflow, identifica el modelo con el mejor rendimiento (basado en RMSE) y lo "promueve" para su uso en etapas posteriores.
- Experimentación Basada en Configuración: El archivo
experiments.yamlpermite definir y lanzar múltiples experimentos (diferentes modelos o hiperparámetros) de forma declarativa y organizada. - Código Modular y Estructurado: El proyecto está organizado en módulos claros para el procesamiento de datos, la ingeniería de características, el entrenamiento y la predicción.
- Lenguaje: Python 3.12+
- Gestión de Dependencias: Poetry
- Pipeline y Versionado de Datos: DVC (Data Version Control)
- Seguimiento de Experimentos: MLflow
- Frameworks de ML: Scikit-learn, XGBoost
- Librerías de Datos: Pandas, NumPy
- CLI y Automatización: Typer, PyYAML
/models/hist_gradient_boosting_regressor/36
├── data/ # Directorio de datos (rastreado por DVC, no en Git)
│ ├── raw/ # Datos crudos
│ ├── interim/ # Datos intermedios
│ └── processed/ # Datasets listos para el modelado
├── models/ # Modelos entrenados (rastreado por DVC)
│ └── best_model.pkl # El mejor modelo promocionado
├── mlops/ # Código fuente del proyecto
│ ├── dataset.py # Limpieza y preprocesamiento inicial
│ ├── features.py # Ingeniería de características
│ ├── modeling/
│ │ ├── train.py # Script de entrenamiento y tuning
│ │ └── predict.py # Script para generar predicciones
│ └── config.py # Configuración centralizada
├── reports/ # Gráficos y reportes generados
├── .dvc/ # Metadatos de DVC
├── dvc.yaml # Definición del pipeline de DVC
├── experiments.yaml # Definición de los experimentos a ejecutar
├── run_experiments.py # Script para orquestar los experimentos de MLflow
├── run_promote_model.py # Script para seleccionar y guardar el mejor modelo
├── requirements.txt # Lista de dependencias
├── pyproject.toml # Archivo de configuración de Poetry
└── README.md # Este archivo
- Python 3.12+
- Git
- DVC (
pip install dvc) - Poetry (
pip install poetry)
-
Clonar el repositorio:
git clone <URL_DEL_REPOSITORIO> cd <NOMBRE_DEL_REPOSITORIO>
-
Instalar dependencias: Utiliza Poetry para crear un entorno virtual e instalar todas las dependencias.
poetry install
-
Configurar el almacenamiento remoto de DVC: Este proyecto está configurado para usar un remote de DVC (como DagsHub, S3, Google Drive, etc.). Asegúrate de tener las credenciales configuradas para acceder a él.
-
Descargar los datos y modelos: Este comando descargará los datasets y el modelo
best_model.pklrastreados por DVC.dvc pull
Para reproducir todo el pipeline, desde el procesamiento de datos hasta la generación de predicciones y gráficos, ejecuta:
dvc reproDVC se encargará de ejecutar cada etapa (dataset, features, train, promote_model, predict, plots) en el orden correcto, saltándose las que no hayan cambiado.
El pipeline está integrado con MLflow para un seguimiento robusto de los experimentos.
-
Definir experimentos: Abre
experiments.yamlpara añadir o modificar experimentos. Puedes definir diferentes modelos o grillas de hiperparámetros. -
Ejecutar el entrenamiento: La etapa
traindel pipeline se encarga de ejecutar todos los experimentos definidos.dvc repro train
-
Visualizar los resultados: Inicia la interfaz de usuario de MLflow para comparar las métricas, parámetros y artefactos de cada ejecución.
mlflow ui
Abre tu navegador en
http://127.0.0.1:5000.