Seguimiento de Experimentos
El seguimiento de experimentos registra parámetros, métricas y artefactos para cada ejecución de entrenamiento. MLflow y Weights & Biases son las herramientas estándar para comparar ejecuciones y reproducir resultados.
Receta
import mlflow
with mlflow.start_run(run_name="rf_baseline"):
mlflow.log_params({"n_estimators": 100, "max_depth": 10})
mlflow.log_metric("f1", 0.87)
mlflow.sklearn.log_model(model, "model")Ejemplo de Trabajo
"""experiment_tracking.py - Seguimiento de MLflow con sklearn."""
from __future__ import annotations
import mlflow
import mlflow.sklearn
from sklearn.datasets import load_breast_cancer
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score, train_test_split
mlflow.set_experiment("breast-cancer-classification")
X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
for n_est in [50, 100, 200]:
with mlflow.start_run(run_name=f"rf_{n_est}"):
clf = RandomForestClassifier(n_estimators=n_est, random_state=42)
cv_scores = cross_val_score(clf, X_train, y_train, cv=5, scoring="f1")
clf.fit(X_train, y_train)
test_f1 = cross_val_score(clf, X_test, y_test, cv="prefit", scoring="f1")[0]
mlflow.log_param("n_estimators", n_est)
mlflow.log_metric("cv_f1_mean", cv_scores.mean())
mlflow.log_metric("test_f1", test_f1)
mlflow.sklearn.log_model(clf, artifact_path="model",
registered_model_name="breast-cancer-rf")
print(f"n={n_est} cv_f1={cv_scores.mean():.3f} test_f1={test_f1:.3f}")Errores Comunes
- No se registra la versión de los datos - no se pueden reproducir las ejecuciones. Solución: registrar el hash de los datos o la revisión de DVC.
- Registro en notebooks sin contexto de ejecución - métricas huérfanas. Solución:
with mlflow.start_run()en scripts. - Demasiadas ejecuciones sin nombre - imposible de comparar. Solución:
run_namey etiquetas.
Alternativas
| Alternativa | Usar Cuando | No Usar Cuando |
|---|---|---|
| MLflow | ML general, autoalojado | Necesitas UI de colaboración integrada |
| W&B | Paneles de equipo, aprendizaje profundo | Configuración local mínima |
| TensorBoard | Curvas de entrenamiento de PyTorch | Experimentos no de aprendizaje profundo |
| Registro CSV | Experimentos personales rápidos | Colaboración en equipo |
Preguntas Frecuentes
¿MLflow local vs servidor?
`mlflow ui` para local; servidor de seguimiento para compartir en equipo.¿Cómo comparo ejecuciones?
Pestaña Experimentos de la UI de MLflow; ordenar por métrica.¿Qué registrar?
Parámetros, métricas, artefacto del modelo, hash de datos, commit de git, versiones de bibliotecas.¿Configuración de W&B?
`wandb.init(project="...")` luego `wandb.log({"f1": 0.9})`.¿Registrar artefactos?
`mlflow.log_artifact("confusion_matrix.png")`.¿Ejecuciones anidadas?
Búsqueda de hiperparámetros con ejecuciones padre/hijo en MLflow.¿Registro automático?
`mlflow.sklearn.autolog()` registra parámetros/métricas automáticamente.¿Cuánto tiempo mantener las ejecuciones?
Definir política de retención; archivar experimentos antiguos.¿Seguimiento del uso de GPU?
Registrar como parámetro; W&B rastrea métricas del sistema automáticamente.¿Integración CI?
Registrar métricas de evaluación de ejecuciones de entrenamiento de CI para detección de regresiones.¿Múltiples experimentos?
`mlflow.set_experiment("nombre")` separa las ejecuciones del proyecto.¿Reproducir una ejecución?
Cargar parámetros registrados, versión de datos y semilla de los metadatos de la ejecución.Relacionado
- Registros y Versionado de Modelos
- Ajuste de Hiperparámetros
- Mejores Prácticas de MLOps
- Versionado de Datos y Modelos (DVC)
- Monitorización y Deriva
Versiones de la pila: Esta página fue escrita para Python 3.14.0 (estable 3.14, mantenimiento 3.13), FastAPI 0.115+, Django 5.2, Flask 3.1, Pydantic 2, PyTorch 2.6+, pandas 2.2+, Polars 1.x, ruff 0.9+, y uv 0.6+.