Ultralytics YOLO27:
Get Started

Integración de MLflow para Ultralytics YOLO#

MLflow experiment tracking with 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 mlflow

Asegú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.

Actualizar la configuración de MLflow de Ultralytics

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#

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

    export MLFLOW_EXPERIMENT_NAME=YOUR_EXPERIMENT_NAME

    También puedes usar el argumento project=<project> al entrenar un modelo YOLO; por ejemplo, yolo train project=my_project.

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

    También puedes usar el argumento name=<name> al entrenar un modelo YOLO; por ejemplo, yolo train project=my_project name=my_name.

  3. Iniciar un servidor local de MLflow: Para empezar a hacer un seguimiento, usa:

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

    De forma predeterminada, se iniciará un servidor local en http://127.0.0.1:5000 y se guardarán todos los registros de mlflow en el directorio 'runs/mlflow'. Para dirigir las ejecuciones de entrenamiento a otro servidor de seguimiento, exporta MLFLOW_TRACKING_URI antes de entrenar:

    export MLFLOW_TRACKING_URI=http://127.0.0.1:5000
  4. 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_ACTIVE en True antes de entrenar:

    export MLFLOW_KEEP_RUN_ACTIVE=True

    Los valores 1, true, yes, on, y y t activan 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 con mlflow.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#

  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 consultar tus registros, ve a tu servidor MLflow (normalmente http://127.0.0.1:5000) y selecciona tu experimento y la 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 para ver sus detalles, incluidos los artefactos subidos y los pesos del modelo. MLflow run details with YOLO artifacts

Desactivar MLflow#

Para desactivar el registro de MLflow:

yolo settings mlflow=False

Conclusió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 mlflow

    A 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 Ultralytics
    from 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/mlflow
  • Ultralytics 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=False

    Para 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/mlflow

    Este comando inicia un servidor local en http://127.0.0.1:5000 de forma predeterminada. Pulsa Ctrl+C en 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_ACTIVE en True:

    export MLFLOW_KEEP_RUN_ACTIVE=True

    De forma predeterminada, el valor es False, por lo que Ultralytics llama a mlflow.end_run() cuando termina 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ú con mlflow.end_run() cuando hayas terminado. Los valores 1, true, yes, on, y y t activan 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.

Comentarios