Experiment Tracking
El seguimiento de experimentos registra los parámetros, las versiones del código y los datos, las métricas y los artefactos de cada ejecución de entrenamiento de ML para poder comparar y reproducir las ejecuciones.
El seguimiento de experimentos consiste en registrar en un único almacén con función de búsqueda todos los datos de cada ejecución de entrenamiento de aprendizaje automático, incluidos la versión del código y de los datos, los ajustes, el entorno, las métricas a lo largo del tiempo y los archivos de salida, como los pesos y los gráficos. Un proyecto que prueba decenas de tasas de aprendizaje, ajustes de aumento de datos y tamaños de modelo genera ejecuciones que parecen iguales en el disco. El seguimiento conserva la configuración de cada resultado, para poder comparar y reproducir la mejor ejecución, y rastrearla meses después. TensorBoard, publicado junto con TensorFlow en 2015, convirtió las curvas de entrenamiento en directo en una práctica habitual, y Databricks publicó MLflow como código abierto en 2018 con el seguimiento como uno de sus tres componentes originales. Weights & Biases, Comet, ClearML y DVC son otros sistemas de seguimiento muy utilizados.
Qué registra un sistema de seguimiento#
Cada ejecución recibe un ID único y pertenece a un experimento, es decir, a un grupo con nombre de ejecuciones relacionadas. Un registro de ejecución habitual incluye:
- Hiperparámetros: La tasa de aprendizaje, el tamaño del lote, el optimizador, la arquitectura del modelo, la semilla aleatoria y cualquier otro ajuste que influya en el entrenamiento.
- Métricas: Pérdidas y puntuaciones de entrenamiento y validación registradas por paso o época, además de métricas del sistema como la memoria y la utilización de la GPU.
- Artefactos: Puntos de control, matrices de confusión, predicciones de muestra y archivos de configuración.
- Linaje: La confirmación de Git, la versión del conjunto de datos, las versiones de los paquetes, el hardware y el autor que generaron la ejecución.
El registro se realiza mediante una llamada del cliente por valor o de forma automática a través de integraciones de registro automático que capturan los parámetros y las métricas de un marco de trabajo sin necesidad de código adicional. Un servidor de seguimiento compartido recopila las ejecuciones de todos los portátiles, equipos en la nube y tareas de CI de un equipo. Su panel superpone las curvas de pérdida de las ejecuciones seleccionadas y permite filtrarlas por cualquier parámetro o métrica, lo que hace que problemas como el sobreajuste se vean de un vistazo.
El entrenamiento de Ultralytics YOLO escribe los argumentos de cada ejecución en args.yaml y sus pérdidas y métricas por época en results.csv. Las integraciones integradas envían los mismos valores a MLflow, Comet, ClearML o DVC en cuanto se instala su paquete. TensorBoard y Weights & Biases se activan mediante yolo settings. Los argumentos de entrenamiento project y name se convierten en los nombres del experimento y de la ejecución en MLflow, por lo que una serie de pruebas de YOLO26 llega al sistema de seguimiento ya organizada.
Comparación y reproducción de ejecuciones#
Los paneles representan una métrica frente a un parámetro en varias ejecuciones o dibujan gráficos de coordenadas paralelas que conectan los ajustes de cada ejecución con su puntuación, lo que permite ver qué ajustes importan en una búsqueda. En Ultralytics Platform, un proyecto compara sus modelos con curvas de métricas y pérdidas superpuestas y una tabla comparativa; la lección Compara ejecuciones y elige la mejor convierte esa comparación en una condición de promoción mediante un script. Para reproducir una ejecución hacen falta más datos que sus hiperparámetros: el registro también debe contener el commit del código, la instantánea exacta de los datos, las versiones de los paquetes y la semilla aleatoria, porque los kernels de GPU y el orden de carga de datos pueden cambiar ligeramente los resultados incluso entre ejecuciones idénticas en lo demás.
Este script de MLflow entrena un árbol de decisión con cuatro profundidades en los dígitos manuscritos de scikit-learn, registra cada profundidad como parámetro y la precisión de validación como métrica y, después, consulta el experimento como si fuera una tabla:
import mlflow
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
# Store runs in a local SQLite file and group them under one experiment
mlflow.set_tracking_uri("sqlite:///mlflow.db")
mlflow.set_experiment("digits-tree-depth")
X_train, X_val, y_train, y_val = train_test_split(*load_digits(return_X_y=True), random_state=0)
# One tracked run per setting: the parameter goes in, the metric comes out
for depth in [2, 4, 8, 16]:
with mlflow.start_run(run_name=f"depth-{depth}"):
model = DecisionTreeClassifier(max_depth=depth, random_state=0).fit(X_train, y_train)
mlflow.log_param("max_depth", depth)
mlflow.log_metric("val_accuracy", model.score(X_val, y_val))
# Query the experiment like a table, best run first
runs = mlflow.search_runs(order_by=["metrics.val_accuracy DESC"])
print(runs[["params.max_depth", "metrics.val_accuracy"]])En una base de datos nueva, la tabla muestra primero la profundidad 16, con una precisión de validación de 0,838; después, la profundidad 8, con 0,818; la profundidad 4, con 0,533; y la profundidad 2, con 0,318. Si ejecutas mlflow ui en la misma carpeta con --backend-store-uri sqlite:///mlflow.db, se abrirán las mismas ejecuciones en el navegador.
Seguimiento de experimentos frente a prácticas relacionadas#
El seguimiento de experimentos es una etapa de las operaciones de aprendizaje automático (MLOps), junto a otras tres prácticas que a menudo se confunden con él:
- Registro de modelos: Conserva los pocos modelos entrenados que merece la pena implementar y vincula cada versión a la ejecución registrada que la generó.
- Supervisión de modelos: Observa las entradas, las salidas y la precisión de un modelo implementado en producción, después de que el seguimiento haya cumplido su función durante el desarrollo.
- Ajuste de hiperparámetros: Herramientas de búsqueda como Optuna y Ray Tune lanzan muchas ejecuciones automáticamente, y el sistema de seguimiento las almacena y clasifica todas.










