Integración de MLflow con Ultralytics YOLO#
Introducción#
El registro de experimentos es un aspecto fundamental 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 el rendimiento de los modelos. 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 de Ultralytics YOLO.
¿Qué es MLflow?#
MLflow es una plataforma de código abierto desarrollada por Databricks para gestionar el ciclo de vida integral del aprendizaje automático. Incluye herramientas para realizar un seguimiento de experimentos, empaquetar código en ejecuciones reproducibles y compartir e implementar modelos. MLflow está diseñado para funcionar con cualquier biblioteca y lenguaje de programación de aprendizaje automático.
Características#
- 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 durante el entrenamiento.
- Registro de artefactos: Registra los artefactos del modelo, incluidos los pesos y los archivos de configuración, al finalizar el 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á activado en la configuración de Ultralytics. Normalmente, esto se controla mediante la clave mlflow de la configuración. Consulta la página de configuración para obtener más información.
En el entorno de Python, llama al método update en el objeto settings para cambiar la configuración:
from ultralytics import settings
# Update a setting
settings.update({"mlflow": True})
# Reset settings to default values
settings.reset()Cómo utilizarlo#
Comandos#
-
Establecer un nombre de proyecto: Puedes establecer el nombre del proyecto mediante una variable de entorno:
export MLFLOW_EXPERIMENT_NAME=YOUR_EXPERIMENT_NAMETambién puedes utilizar el argumento
project=<project>al entrenar un modelo YOLO, por ejemplo,yolo train project=my_project. -
Establecer un nombre de 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 utilizar el argumento
name=<name>al entrenar un modelo YOLO, por ejemplo,yolo train project=my_project name=my_name. -
Iniciar el servidor local de MLflow: Para comenzar el seguimiento, utiliza:
mlflow server --backend-store-uri runs/mlflowEsto iniciará de forma predeterminada un servidor local en
http://127.0.0.1:5000y guardará todos los registros de mlflow en el directorio «runs/mlflow». Para dirigir tus ejecuciones de entrenamiento a otro servidor de seguimiento, exportaMLFLOW_TRACKING_URIantes del entrenamiento: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 mantener abierta la ejecución (por ejemplo, para registrar métricas o artefactos adicionales desde el mismo cuaderno), establece
MLFLOW_KEEP_RUN_ACTIVEenTrueantes del entrenamiento: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 no definida, mantiene el comportamiento predeterminado de cerrar la ejecución. Recuerda cerrarla manualmente después conmlflow.end_run().
Registro#
El registro se gestiona mediante las on_pretrain_routine_end, on_fit_epoch_end y on_train_end funciones de devolución de llamada. Estas funciones se llaman automáticamente durante las respectivas fases del proceso de entrenamiento y gestionan el registro de parámetros, métricas y artefactos.
Ejemplos#
-
Registrar métricas personalizadas: Puedes añadir métricas personalizadas para registrarlas modificando el diccionario
trainer.metricsantes de llamar aon_fit_epoch_end. -
Ver experimento: Para ver tus registros, ve a tu servidor de MLflow (normalmente
http://127.0.0.1:5000) y selecciona tu experimento y 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 cargados 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 realizar 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 facilita el desarrollo y la implementación de modelos sólidos. 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 # Update a setting settings.update({"mlflow": True}) # Reset settings to default values settings.reset()Por último, inicia un servidor local de MLflow para realizar el seguimiento:
mlflow server --backend-store-uri runs/mlflowUltralytics YOLO con MLflow permite registrar diversas métricas, parámetros y artefactos durante todo el proceso de entrenamiento:
- Registro de métricas: Realiza un seguimiento de las métricas al final de cada época y al completar el entrenamiento.
- Registro de parámetros: Registra todos los parámetros utilizados en el proceso de entrenamiento.
- Registro de artefactos: Guarda los 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 mediante 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 de MLflow y realizar el seguimiento de tus experimentos en Ultralytics YOLO, utiliza el siguiente comando:
mlflow server --backend-store-uri runs/mlflowEste comando inicia de forma predeterminada un servidor local en
http://127.0.0.1:5000. PulsaCtrl+Cen ese terminal para detenerlo.Consulta la sección de comandos para conocer más opciones de comandos.
Establece la variable de entorno
MLFLOW_KEEP_RUN_ACTIVEenTrueantes del entrenamiento:export MLFLOW_KEEP_RUN_ACTIVE=TrueDe forma predeterminada, este 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 manualmente conmlflow.end_run()cuando termines. 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:
- Seguimiento mejorado de experimentos: Realiza 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 basadas en datos que mejoren los modelos.
- Flujo de trabajo simplificado: Automatiza el proceso de registro para centrarte más en el desarrollo de modelos que en el seguimiento manual.
- Desarrollo colaborativo: Comparte los resultados de los experimentos con los miembros del equipo para mejorar la colaboración y el intercambio de conocimientos.
Para consultar en profundidad cómo configurar y aprovechar MLflow con Ultralytics YOLO, explora la documentación de Integración de MLflow con Ultralytics YOLO.