MLflow - aladelca/metodologia_para_data_science_20251 GitHub Wiki

MLflow: Plataforma de Gestión del Ciclo de Vida de Machine Learning

MLflow es una plataforma de código abierto para gestionar el ciclo de vida completo de Machine Learning, desde la experimentación hasta el despliegue en producción.

🎯 Componentes Principales

1. MLflow Tracking

Sistema para registrar y consultar experimentos, incluyendo:

  • 📊 Parámetros
  • 📈 Métricas
  • 📁 Artefactos
  • 🏷️ Código fuente
  • 📝 Resultados
import mlflow

# Iniciar un experimento
mlflow.set_experiment("mi_experimento")

# Registrar métricas y parámetros
with mlflow.start_run():
    mlflow.log_param("alpha", 0.5)
    mlflow.log_metric("accuracy", 0.85)

2. MLflow Projects

Sistema para empaquetar código de ML de manera reproducible:

  • 📦 Gestión de dependencias
  • 🔄 Reproducibilidad
  • 🚀 Ejecución consistente
# MLproject file
name: mi_proyecto

conda_env: conda.yaml

entry_points:
  main:
    parameters:
      alpha: {type: float, default: 0.5}
    command: "python train.py --alpha {alpha}"

3. MLflow Models

Formato estándar para empaquetado de modelos:

  • 📦 Múltiples frameworks (sklearn, tensorflow, pytorch)
  • 🔄 APIs consistentes
  • 🚀 Despliegue simplificado
# Guardar un modelo
mlflow.sklearn.log_model(model, "modelo")

# Cargar un modelo
loaded_model = mlflow.sklearn.load_model("runs:/run_id/modelo")

4. MLflow Registry

Sistema centralizado para gestionar el ciclo de vida de los modelos:

  • 📝 Versionamiento
  • 🏷️ Etiquetado (staging, production)
  • 👥 Colaboración

💡 Características Principales

  1. Código Abierto

    • Comunidad activa
    • Extensible
    • Bien documentado
  2. Agnóstico al Framework

    • Compatible con cualquier biblioteca de ML
    • Flexible y adaptable
    • No impone restricciones de tecnología
  3. Escalable

    • Desde experimentos locales
    • Hasta despliegues empresariales
    • Soporte para computación distribuida

🛠️ Instalación y Configuración

# Instalación básica
pip install mlflow

# Iniciar el servidor de tracking
mlflow ui

# Configurar almacenamiento remoto
export MLFLOW_TRACKING_URI=http://localhost:5000

📊 Casos de Uso Comunes

1. Experimentación y Desarrollo

import mlflow.sklearn
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

with mlflow.start_run():
    # Entrenar modelo
    model.fit(X_train, y_train)
    
    # Evaluar
    predictions = model.predict(X_test)
    accuracy = accuracy_score(y_test, predictions)
    
    # Registrar métricas
    mlflow.log_metric("accuracy", accuracy)
    
    # Guardar modelo
    mlflow.sklearn.log_model(model, "model")

2. Gestión de Modelos

from mlflow.tracking import MlflowClient

client = MlflowClient()

# Registrar modelo
model_version = client.create_model_version(
    name="mi_modelo",
    source="mlflow-artifacts:/1/model",
    run_id="run_id"
)

# Transición a producción
client.transition_model_version_stage(
    name="mi_modelo",
    version=1,
    stage="Production"
)

3. Despliegue

# Cargar modelo en producción
model_name = "mi_modelo"
stage = "Production"

model = mlflow.pyfunc.load_model(
    model_uri=f"models:/{model_name}/{stage}"
)

# Realizar predicciones
predictions = model.predict(data)

🔧 Mejores Prácticas

  1. Organización de Experimentos

    • Usar nombres descriptivos
    • Estructurar jerárquicamente
    • Documentar propósito
  2. Tracking Efectivo

    • Registrar todos los parámetros relevantes
    • Incluir métricas significativas
    • Guardar artefactos importantes
  3. Versionamiento

    • Usar control de versiones para código
    • Versionar datasets
    • Mantener registro de dependencias
  4. Despliegue

    • Probar en staging
    • Validar antes de producción
    • Monitorear rendimiento

📚 Recursos Adicionales

🔗 Integración con Otras Herramientas

Frameworks de ML

  • scikit-learn
  • TensorFlow
  • PyTorch
  • XGBoost
  • LightGBM

Plataformas Cloud

  • AWS SageMaker
  • Azure ML
  • Google Cloud AI Platform
  • Databricks

Herramientas de Orquestación

  • Apache Airflow
  • Kubeflow
  • Prefect
  • Dagster

⚠️ Consideraciones Importantes

  1. Seguridad

    • Proteger el servidor de tracking
    • Gestionar accesos y permisos
    • Encriptar datos sensibles
  2. Escalabilidad

    • Planificar almacenamiento
    • Considerar recursos computacionales
    • Gestionar concurrencia
  3. Mantenimiento

    • Limpiar experimentos antiguos
    • Actualizar dependencias
    • Monitorear recursos
  4. Gobernanza

    • Establecer políticas de versionamiento
    • Definir flujos de aprobación
    • Documentar procesos