Meet YOLO26: next-gen vision AI.

Link to this sectionIntegración de MLflow para Ultralytics YOLO#

MLflow experiment tracking with Ultralytics YOLO

Link to this sectionIntroducción#

El registro de experimentos es un aspecto crucial de los flujos de trabajo de aprendizaje automático que permite realizar el seguimiento de diversas métricas, parámetros y artefactos. Ayuda a mejorar la reproducibilidad del modelo, 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 para tu proyecto de Ultralytics YOLO.

Link to this section¿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 rastrear 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.

Link to this sectionCaracterí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.

Link to this sectionConfiguración y requisitos previos#

Asegúrate de que MLflow esté instalado. Si no es así, instálalo usando pip:

pip install mlflow

Asegúrate de que el registro de MLflow esté habilitado en los ajustes de Ultralytics. Por lo general, esto se controla mediante la clave mlflow de los ajustes. Consulta la página de ajustes para obtener más información.

Actualiza los ajustes de MLflow de Ultralytics

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()

Link to this sectionCómo utilizarlo#

Link to this sectionComandos#

  1. Establece un nombre de proyecto: Puedes establecer el nombre del proyecto mediante una variable de entorno:

    export MLFLOW_EXPERIMENT_NAME=YOUR_EXPERIMENT_NAME

    O utiliza el argumento project=<project> al entrenar un modelo YOLO, por ejemplo: yolo train project=my_project.

  2. 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_NAME

    O utiliza el argumento name=<name> al entrenar un modelo YOLO, por ejemplo: yolo train project=my_project name=my_name.

  3. Inicia el servidor local de MLflow: Para comenzar el seguimiento, utiliza:

    mlflow server --backend-store-uri runs/mlflow

    Esto iniciará un servidor local en http://127.0.0.1:5000 por defecto y guardará todos los registros de mlflow en el directorio 'runs/mlflow'. Para dirigir tus ejecuciones de entrenamiento a un servidor de seguimiento diferente, exporta MLFLOW_TRACKING_URI antes del entrenamiento:

    export MLFLOW_TRACKING_URI=http://127.0.0.1:5000
  4. Mantén activa la ejecución de MLflow después del entrenamiento: Por defecto, Ultralytics finaliza la ejecución de MLflow automáticamente cuando el entrenamiento termina. Para mantener la ejecución abierta (por ejemplo, para registrar métricas o artefactos adicionales desde el mismo cuaderno), establece MLFLOW_KEEP_RUN_ACTIVE en True antes del entrenamiento:

    export MLFLOW_KEEP_RUN_ACTIVE=True

    El valor se analiza sin distinguir entre mayúsculas y minúsculas; solo la cadena true habilita este comportamiento, y cualquier otro valor (incluido el no establecido) mantiene el valor predeterminado de cerrar la ejecución. Recuerda cerrarla manualmente después con mlflow.end_run().

  5. 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

Link to this sectionRegistro (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.

Link to this sectionEjemplos#

  1. Registro de métricas personalizadas: Puedes añadir métricas personalizadas para que se registren modificando el diccionario trainer.metrics antes de que se llame a on_fit_epoch_end.

  2. Ver experimento: Para ver tus registros, navega a tu servidor de MLflow (normalmente http://127.0.0.1:5000) y selecciona tu experimento y ejecución. MLflow experiment tracking interface for YOLO

  3. 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. MLflow run details with YOLO artifacts

Link to this sectionDeshabilitar MLflow#

Para desactivar el registro de MLflow:

yolo settings mlflow=False

Link to this sectionConclusió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 forma eficaz, ayudando así al desarrollo y despliegue robusto de modelos. Para obtener más detalles, por favor visita la documentación oficial de MLflow.

Link to this sectionFAQ#

Link to this section¿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 mlflow

A continuación, habilita el registro de MLflow en los ajustes de Ultralytics. Esto se puede controlar mediante la clave mlflow. Para más información, consulta la guía de ajustes.

Actualiza los ajustes de MLflow de Ultralytics
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

Link to this section¿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: Rastrea 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.

Link to this section¿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=False

Para una mayor personalización y restablecimiento de los ajustes, consulta la guía de ajustes.

Link to this section¿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/mlflow

Este comando inicia un servidor local en http://127.0.0.1:5000 por defecto. Si necesitas detener las instancias del servidor de MLflow en ejecución, utiliza el siguiente comando bash:

ps aux | grep 'mlflow' | grep -v 'grep' | awk '{print $2}' | xargs kill -9

Consulta la sección de comandos para obtener más opciones de comandos.

Link to this section¿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 del entrenamiento:

export MLFLOW_KEEP_RUN_ACTIVE=True

Por defecto, esto es False, por lo que Ultralytics llama a mlflow.end_run() una vez completado 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() cuando hayas terminado. El valor se analiza sin distinguir entre mayúsculas y minúsculas; solo true habilita este comportamiento.

Link to this section¿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 una visión detallada sobre la configuración y el aprovechamiento de MLflow con Ultralytics YOLO, explora la documentación Integración de MLflow para Ultralytics YOLO.

Comentarios