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 que permite realizar un seguimiento de diversas métricas, parámetros y artefactos. Ayuda a mejorar la reproducibilidad del modelo, depurar problemas y optimizar su rendimiento. Ultralytics YOLO, conocido por sus capacidades de detección de objetos en tiempo real, ofrece ahora 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 para 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 de extremo a extremo del aprendizaje automático. Incluye herramientas para el seguimiento de experimentos, empaquetado de código en ejecuciones reproducibles, y el intercambio y despliegue de modelos. MLflow está diseñado para funcionar con cualquier biblioteca de aprendizaje automático y lenguaje de programación.
Características#
- Registro de métricas: Registra métricas al final de cada época y al final del entrenamiento.
- Registro de parámetros: Registra todos los parámetros utilizados en el entrenamiento.
- Registro de artefactos: Registra artefactos del modelo, incluidos pesos y archivos de configuración, al final del entrenamiento.
Configuración y requisitos previos#
Asegúrate de que MLflow esté instalado. Si no es así, instálalo usando pip:
pip install mlflowAsegúrate de que el registro de MLflow esté habilitado en la configuración de Ultralytics. Por lo general, esto se controla mediante la clave de configuración mlflow. Consulta la página de configuración para obtener más información.
Dentro del entorno de Python, llama al método update en el objeto settings para cambiar tu configuración:
from ultralytics import settings
# Update a setting
settings.update({"mlflow": True})
# Reset settings to default values
settings.reset()Cómo utilizarlo#
Comandos#
-
Establece un nombre de proyecto: Puedes establecer el nombre del proyecto mediante una variable de entorno:
export MLFLOW_EXPERIMENT_NAME=YOUR_EXPERIMENT_NAMEO utiliza el argumento
project=<project>al entrenar un modelo YOLO, es decir,yolo train project=my_project. -
Establece un nombre de ejecución: De forma similar a establecer un nombre de proyecto, puedes establecer el nombre de la ejecución mediante una variable de entorno:
export MLFLOW_RUN=YOUR_RUN_NAMEO utiliza el argumento
name=<name>al entrenar un modelo YOLO, es decir,yolo train project=my_project name=my_name. -
Inicia el servidor local de MLflow: Para comenzar el seguimiento, utiliza:
mlflow server --backend-store-uri runs/mlflowEsto iniciará un servidor local en
http://127.0.0.1:5000de forma predeterminada y guardará todos los registros de mlflow en el directorio 'runs/mlflow'. Para apuntar tus ejecuciones de entrenamiento a un servidor de seguimiento diferente, exportaMLFLOW_TRACKING_URIantes de entrenar:export MLFLOW_TRACKING_URI=http://127.0.0.1:5000 -
Mantener la ejecución de MLflow activa después del entrenamiento: De forma predeterminada, Ultralytics finaliza la ejecución de MLflow automáticamente cuando termina el entrenamiento. Para mantener la ejecución 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=TrueEl valor se analiza sin distinguir entre mayúsculas y minúsculas; solo la cadena
truehabilita este comportamiento, y cualquier otro valor (incluyendo el no establecido) mantiene el valor predeterminado de cerrar la ejecución. Recuerda cerrarla manualmente después conmlflow.end_run(). -
Termina las instancias del servidor de MLflow: Para detener todas las instancias de MLflow en ejecución, ejecuta:
ps aux | grep 'mlflow' | grep -v 'grep' | awk '{print $2}' | xargs kill -9
Registro (Logging)#
El registro se gestiona mediante las funciones de devolución de llamada on_pretrain_routine_end, on_fit_epoch_end y on_train_end. Estas funciones se llaman automáticamente durante las fases respectivas del proceso de entrenamiento y se encargan del registro de parámetros, métricas y artefactos.
Ejemplos#
-
Registro de métricas personalizadas: Puedes añadir métricas personalizadas para que se registren modificando el diccionario
trainer.metricsantes de llamar aon_fit_epoch_end. -
Ver experimento: Para ver tus registros, navega a tu servidor 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 y consulta sus detalles, incluidos los artefactos cargados y los pesos del modelo.

Deshabilitar 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 optimizada de realizar un seguimiento de tus experimentos de aprendizaje automático. Te permite supervisar las métricas de rendimiento y gestionar los artefactos de manera eficaz, ayudando así al desarrollo y despliegue robustos de modelos. Para más detalles, visita la documentación oficial de MLflow.
FAQ#
¿Cómo configuro el registro de MLflow con Ultralytics YOLO?#
Para configurar el registro de MLflow con Ultralytics YOLO, primero debes asegurarte de que MLflow esté instalado. Puedes instalarlo usando pip:
pip install mlflowA continuación, habilita el registro de MLflow en la configuración de Ultralytics. Esto se puede controlar mediante la clave mlflow. Para más información, consulta la guía de configuración.
from ultralytics import settings
# Update a setting
settings.update({"mlflow": True})
# Reset settings to default values
settings.reset()Finalmente, inicia un servidor local de MLflow para el seguimiento:
mlflow server --backend-store-uri runs/mlflow¿Qué métricas y parámetros puedo registrar usando MLflow con Ultralytics YOLO?#
Ultralytics YOLO con MLflow permite registrar varias métricas, parámetros y artefactos a lo largo del proceso de entrenamiento:
- Registro de métricas: Realiza un seguimiento de 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 pesos y archivos de configuración después del entrenamiento.
Para obtener información más detallada, visita la documentación de seguimiento de Ultralytics YOLO.
¿Puedo deshabilitar el registro de MLflow una vez habilitado?#
Sí, puedes deshabilitar el registro de MLflow para Ultralytics YOLO actualizando los ajustes. Aquí te explicamos cómo hacerlo usando la CLI:
yolo settings mlflow=FalsePara una mayor personalización y restablecimiento de la configuración, consulta la guía de configuración.
¿Cómo puedo iniciar y detener un servidor de MLflow para el seguimiento de Ultralytics YOLO?#
Para iniciar un servidor de MLflow para realizar el seguimiento de tus experimentos en Ultralytics YOLO, utiliza el siguiente comando:
mlflow server --backend-store-uri runs/mlflowEste comando inicia un servidor local en http://127.0.0.1:5000 de forma predeterminada. Si necesitas detener las instancias del servidor MLflow en ejecución, utiliza el siguiente comando de bash:
ps aux | grep 'mlflow' | grep -v 'grep' | awk '{print $2}' | xargs kill -9Consulta la sección de comandos para ver más opciones de comandos.
¿Cómo mantengo activa la ejecución de MLflow después de que finalice el entrenamiento?#
Establece la variable de entorno MLFLOW_KEEP_RUN_ACTIVE en True antes de entrenar:
export MLFLOW_KEEP_RUN_ACTIVE=TruePor defecto, esto es False, por lo que Ultralytics llama a mlflow.end_run() una vez que se completa el entrenamiento. Con MLFLOW_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ú mismo con mlflow.end_run() al terminar. El valor se analiza sin distinguir entre mayúsculas y minúsculas; solo true habilita este comportamiento.
¿Cuáles son los beneficios de integrar MLflow con Ultralytics YOLO para el seguimiento de experimentos?#
Integrar MLflow con Ultralytics YOLO ofrece varios beneficios para gestionar tus experimentos de aprendizaje automático:
- Seguimiento de experimentos mejorado: Rastrea y compara fácilmente diferentes ejecuciones y sus resultados.
- Reproducibilidad mejorada del modelo: 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 para las mejoras del modelo.
- Flujo de trabajo optimizado: Automatiza el proceso de registro para centrarte más en el desarrollo del modelo 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 echar un vistazo en profundidad a la configuración y el aprovechamiento de MLflow con Ultralytics YOLO, explora la documentación de MLflow Integration for Ultralytics YOLO.