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
-
Código Abierto
- Comunidad activa
- Extensible
- Bien documentado
-
Agnóstico al Framework
- Compatible con cualquier biblioteca de ML
- Flexible y adaptable
- No impone restricciones de tecnología
-
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
-
Organización de Experimentos
- Usar nombres descriptivos
- Estructurar jerárquicamente
- Documentar propósito
-
Tracking Efectivo
- Registrar todos los parámetros relevantes
- Incluir métricas significativas
- Guardar artefactos importantes
-
Versionamiento
- Usar control de versiones para código
- Versionar datasets
- Mantener registro de dependencias
-
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
-
Seguridad
- Proteger el servidor de tracking
- Gestionar accesos y permisos
- Encriptar datos sensibles
-
Escalabilidad
- Planificar almacenamiento
- Considerar recursos computacionales
- Gestionar concurrencia
-
Mantenimiento
- Limpiar experimentos antiguos
- Actualizar dependencias
- Monitorear recursos
-
Gobernanza
- Establecer políticas de versionamiento
- Definir flujos de aprobación
- Documentar procesos