Integración de MLflow para Ultralytics YOLO#
Introducción#
El registro de experimentos es un aspecto crucial de los flujos de trabajo de aprendizaje automático, ya que permite realizar un seguimiento de diversas métricas, parámetros y artefactos. Ayuda a mejorar la reproducibilidad de los modelos, depurar problemas y mejorar su rendimiento. Ultralytics YOLO, conocido por sus capacidades de detección de objetos en tiempo real, ahora ofrece integración con MLflow, una plataforma de código abierto para la gestión completa del ciclo de vida del aprendizaje automático.
Esta página de documentación es una guía completa para configurar y utilizar las capacidades de registro de MLflow en tu proyecto Ultralytics YOLO.
¿Qué es MLflow?#
MLflow es una plataforma de código abierto desarrollada por Databricks para gestionar el ciclo de vida completo del aprendizaje automático. Incluye herramientas para hacer un seguimiento de experimentos, empaquetar código en ejecuciones reproducibles y compartir y desplegar modelos. MLflow está diseñado para funcionar con cualquier biblioteca de aprendizaje automático y lenguaje de programación.
Funciones#
- Registro de métricas: Registra las tasas de aprendizaje, las pérdidas de entrenamiento y las métricas de validación al final de cada época.
- Registro de parámetros: Registra todos los parámetros utilizados durante el entrenamiento.
- Registro de artefactos: Registra los artefactos del modelo, incluidos los pesos y los archivos de configuración, al final del entrenamiento.
Configuración y requisitos previos#
Asegúrate de que MLflow esté instalado. Si no lo está, instálalo con pip:
pip install mlflowAsegúrate de que el registro de MLflow esté habilitado en la configuración de Ultralytics. Normalmente, se controla mediante la clave de configuración mlflow. Consulta la página de configuración para obtener más información.
En el entorno Python, llama al método update del objeto settings para cambiar la configuración:
from ultralytics import settings
# Actualizar un ajuste
settings.update({"mlflow": True})
# Restablecer los ajustes a sus valores predeterminados
settings.reset()Cómo usarlo#
Comandos#
-
Establecer el nombre de un proyecto: Puedes establecer el nombre del proyecto mediante una variable de entorno:
export MLFLOW_EXPERIMENT_NAME=YOUR_EXPERIMENT_NAMETambién puedes usar el argumento
project=<project>al entrenar un modelo YOLO; por ejemplo,yolo train project=my_project. -
Establecer el nombre de una ejecución: Al igual que con el nombre del proyecto, puedes establecer el nombre de la ejecución mediante una variable de entorno:
export MLFLOW_RUN=YOUR_RUN_NAMETambién puedes usar el argumento
name=<name>al entrenar un modelo YOLO; por ejemplo,yolo train project=my_project name=my_name. -
Iniciar un servidor local de MLflow: Para empezar a hacer un seguimiento, usa:
mlflow server --backend-store-uri runs/mlflowDe forma predeterminada, se iniciará un servidor local en
http://127.0.0.1:5000y se guardarán todos los registros de mlflow en el directorio 'runs/mlflow'. Para dirigir las ejecuciones de entrenamiento a otro servidor de seguimiento, exportaMLFLOW_TRACKING_URIantes de entrenar:export MLFLOW_TRACKING_URI=http://127.0.0.1:5000 -
Mantener activa la ejecución de MLflow después del entrenamiento: De forma predeterminada, Ultralytics finaliza automáticamente la ejecución de MLflow cuando termina el entrenamiento. Para mantenerla abierta (por ejemplo, para registrar métricas o artefactos adicionales desde el mismo cuaderno), establece
MLFLOW_KEEP_RUN_ACTIVEenTrueantes de entrenar:export MLFLOW_KEEP_RUN_ACTIVE=TrueLos valores
1,true,yes,on,yytactivan este comportamiento (sin distinguir entre mayúsculas y minúsculas). Cualquier otro valor, incluida una variable sin definir, mantiene el comportamiento predeterminado de cerrar la ejecución. Recuerda cerrarla manualmente después conmlflow.end_run().
Registro#
Las funciones de registro las gestionan las funciones de devolución de llamada on_pretrain_routine_end, on_train_epoch_end, on_fit_epoch_end y on_train_end funciones de devolución de llamada. Estas funciones se llaman automáticamente durante las fases correspondientes del proceso de entrenamiento y se encargan de registrar los parámetros, las métricas y los artefactos.
Ejemplos#
-
Registro de métricas personalizadas: Puedes añadir métricas personalizadas para que se registren modificando el diccionario
trainer.metricsantes de que se llame aon_fit_epoch_end. -
Ver experimento: Para consultar tus registros, ve a tu servidor MLflow (normalmente
http://127.0.0.1:5000) y selecciona tu experimento y la ejecución.
-
Ver ejecución: Las ejecuciones son modelos individuales dentro de un experimento. Haz clic en una ejecución para ver sus detalles, incluidos los artefactos subidos y los pesos del modelo.

Desactivar MLflow#
Para desactivar el registro de MLflow:
yolo settings mlflow=FalseConclusión#
La integración del registro de MLflow con Ultralytics YOLO ofrece una forma sencilla de hacer un seguimiento de tus experimentos de aprendizaje automático. Te permite supervisar las métricas de rendimiento y gestionar los artefactos de forma eficaz, lo que contribuye al desarrollo y la implementación robustos de modelos. Para obtener más información, visita la documentación oficial de MLflow.
Preguntas frecuentes#
Para configurar el registro de MLflow con Ultralytics YOLO, primero debes asegurarte de que MLflow esté instalado. Puedes instalarlo con pip:
pip install mlflowA continuación, activa el registro de MLflow en la configuración de Ultralytics. Puedes controlarlo mediante la clave
mlflow. Para obtener más información, consulta la guía de configuración.Actualizar la configuración de MLflow de Ultralyticsfrom ultralytics import settings # Actualizar un ajuste settings.update({"mlflow": True}) # Restablecer los ajustes a sus valores predeterminados settings.reset()Por último, inicia un servidor MLflow local para el seguimiento:
mlflow server --backend-store-uri runs/mlflowUltralytics YOLO con MLflow permite registrar distintas métricas, parámetros y artefactos durante todo el proceso de entrenamiento:
- Registro de métricas: Registra las métricas al final de cada época y al finalizar el entrenamiento.
- Registro de parámetros: Registra todos los parámetros utilizados en el proceso de entrenamiento.
- Registro de artefactos: Guarda artefactos del modelo, como los pesos y los archivos de configuración, después del entrenamiento.
Para obtener información más detallada, visita la documentación de seguimiento de Ultralytics YOLO.
Sí, puedes desactivar el registro de MLflow para Ultralytics YOLO actualizando la configuración. Así puedes hacerlo con la CLI:
yolo settings mlflow=FalsePara personalizar más la configuración y restablecerla, consulta la guía de configuración.
Para iniciar un servidor MLflow y hacer un seguimiento de tus experimentos con Ultralytics YOLO, usa el siguiente comando:
mlflow server --backend-store-uri runs/mlflowEste comando inicia un servidor local en
http://127.0.0.1:5000de forma predeterminada. PulsaCtrl+Cen ese terminal para detenerlo.Consulta la sección de comandos para ver más opciones.
Antes del entrenamiento, establece la variable de entorno
MLFLOW_KEEP_RUN_ACTIVEenTrue:export MLFLOW_KEEP_RUN_ACTIVE=TrueDe forma predeterminada, el valor es
False, por lo que Ultralytics llama amlflow.end_run()cuando termina el entrenamiento. ConMLFLOW_KEEP_RUN_ACTIVE=True, la ejecución permanece abierta para que puedas registrar métricas, parámetros o artefactos adicionales desde la misma sesión de Python; ciérrala tú conmlflow.end_run()cuando hayas terminado. Los valores1,true,yes,on,yytactivan este comportamiento (sin distinguir entre mayúsculas y minúsculas).Integrar MLflow con Ultralytics YOLO ofrece varias ventajas para gestionar tus experimentos de aprendizaje automático:
- Mejor seguimiento de experimentos: Haz un seguimiento y compara fácilmente distintas ejecuciones y sus resultados.
- Mayor reproducibilidad de los modelos: Asegúrate de que tus experimentos sean reproducibles registrando todos los parámetros y artefactos.
- Supervisión del rendimiento: Visualiza las métricas de rendimiento a lo largo del tiempo para tomar decisiones sobre cómo mejorar los modelos basadas en datos.
- Flujo de trabajo optimizado: Automatiza el proceso de registro para dedicar más tiempo al desarrollo de modelos y menos al seguimiento manual.
- Desarrollo colaborativo: Comparte los resultados de los experimentos con tu equipo para colaborar mejor e intercambiar conocimientos.
Para profundizar en la configuración y el uso de MLflow con Ultralytics YOLO, consulta la documentación de Integración de MLflow con Ultralytics YOLO.