Integración de MLflow para Ultralytics YOLO
Introducción
El registro de experimentos es un aspecto crucial de los flujos de trabajo de machine learning que permite realizar un seguimiento de diversas métricas, parámetros y artefactos. Ayuda a mejorar la reproducibilidad del modelo, depurar problemas y optimizar el rendimiento del mismo. Ultralytics YOLO, conocido por sus capacidades de object detection 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 machine learning.
Esta página de documentación es una guía exhaustiva 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 completo del machine learning. Incluye herramientas para realizar el seguimiento de experimentos, empaquetar código en ejecuciones reproducibles y compartir e implementar modelos. MLflow está diseñado para funcionar con cualquier biblioteca de machine learning y lenguaje de programación.
Características
- Registro de métricas: Registra 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 usando pip:
pip install mlflowComprueba que el registro de MLflow esté habilitado en los ajustes de Ultralytics. Por lo general, esto se controla mediante la clave mlflow en los ajustes. Consulta la página de settings para obtener más información.
Dentro del entorno de Python, llama al método update en el objeto settings para cambiar tus ajustes:
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_NAMEO utiliza 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 al establecer un nombre de proyecto, puedes definir 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, por ejemplo:yolo train project=my_project name=my_name. -
Iniciar 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 del entrenamiento:export MLFLOW_TRACKING_URI=http://127.0.0.1:5000 -
Terminar instancias del servidor 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)
The logging is taken care of by the on_pretrain_routine_end, on_fit_epoch_end, and on_train_end callback functions. These functions are automatically called during the respective stages of the training process, and they handle the logging of parameters, metrics, and artifacts.
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 ver tus registros, navega hasta 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 los detalles de la misma, 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 machine learning experiments. Te permite supervisar las métricas de rendimiento y gestionar los artefactos de manera eficaz, ayudando así al desarrollo y despliegue sólido de modelos. Para obtener más detalles, visita la documentación oficial de MLflow.
Preguntas frecuentes
¿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 los ajustes de Ultralytics. Esto se puede controlar usando la clave mlflow. Para más información, consulta la guía de ajustes.
from 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 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 admite el registro de diversas métricas, parámetros y artefactos a lo largo del proceso de entrenamiento:
- Registro de métricas: Realiza el seguimiento de métricas al final de cada epoch y al completar 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í tienes cómo hacerlo mediante la CLI:
yolo settings mlflow=FalsePara una mayor personalización y restablecimiento de los ajustes, consulta la guía de ajustes.
¿Cómo puedo iniciar y detener un servidor MLflow para el seguimiento de Ultralytics YOLO?
Para iniciar un servidor MLflow para 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 por defecto. 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.
¿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 machine learning:
- Seguimiento de experimentos mejorado: Realiza un seguimiento y compara fácilmente diferentes ejecuciones y sus resultados.
- Reproducibilidad del modelo mejorada: Asegúrate de que tus experimentos sean reproducibles registrando todos los parámetros y artefactos.
- Monitoreo 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 una visión detallada sobre cómo configurar y aprovechar MLflow con Ultralytics YOLO, explora la documentación de Integración de MLflow para Ultralytics YOLO.