YOLO Vision 2026:

Integración con ClearML#

ClearML MLOps experiment tracking platform

Acerca de ClearML#

ClearML es una plataforma de MLOps de código abierto diseñada para optimizar los flujos de trabajo de aprendizaje automático y ahorrar tiempo de ingeniería.

  • 🔨 Registra cada ejecución de entrenamiento de YOLOv5 en el gestor de experimentos.
  • 🔧 Crea versiones y accede a tus datos de entrenamiento personalizados con la herramienta de versionado de datos integrada de ClearML.
  • 🔦 Entrena y monitoriza de forma remota las ejecuciones de YOLOv5 con ClearML Agent.
  • 🔬 Encuentra el mejor mAP con la optimización de hiperparámetros de ClearML.
  • 🔭 Convierte tu modelo YOLOv5 en una API con unos pocos comandos mediante ClearML Serving.

Usa tantas o tan pocas de estas herramientas como necesites: empieza solo con el gestor de experimentos o conéctalas todas para crear un pipeline completo.

🦾 Configuración#

ClearML necesita comunicarse con un servidor para registrar tus experimentos y datos. Tienes dos opciones:

Después, instala el paquete clearml de Python y conecta el SDK a tu servidor:

pip install clearml

Genera las credenciales en Settings → Workspace → Create new credentials (arriba a la derecha de la interfaz de usuario de ClearML) y ejecuta:

clearml-init

Sigue las indicaciones. Eso es todo: la configuración ha terminado.

🚀 Entrenamiento de YOLOv5 con ClearML#

Para activar el seguimiento de experimentos, instala el paquete pip de ClearML si aún no lo has hecho:

pip install clearml

Esto activará la integración con el script de entrenamiento de YOLOv5. A partir de ahora, el gestor de experimentos de ClearML capturará y almacenará cada ejecución de entrenamiento.

Para personalizar los nombres del proyecto y de la tarea, pasa --project y --name a train.py. Los valores predeterminados son YOLOv5 y Training. ClearML usa / como delimitador de subproyectos, así que evita / en los nombres de proyectos personalizados.

python train.py --img 640 --batch 16 --epochs 3 --data coco8.yaml --weights yolov5s.pt --cache

O con nombres personalizados:

python train.py --project my_project --name my_training --img 640 --batch 16 --epochs 3 --data coco8.yaml --weights yolov5s.pt --cache

Cada ejecución captura:

  • Código fuente y cambios sin confirmar
  • Paquetes instalados
  • Hiperparámetros
  • Puntos de control del modelo (usa --save-period n para guardar cada n épocas)
  • Salida de la consola
  • Escalares (mAP_0.5, mAP_0.5:0.95, precisión, exhaustividad, pérdidas, tasas de aprendizaje)
  • Detalles de la máquina, tiempo de ejecución y fecha de creación
  • Gráficos generados, como el correlograma de etiquetas y la matriz de confusión
  • Imágenes con cuadros delimitadores por época
  • Visualizaciones de mosaicos por época
  • Imágenes de validación por época

Todo aparece en la interfaz de usuario de ClearML, para que puedas monitorizar el entrenamiento desde un único lugar. Añade columnas personalizadas (por ejemplo, mAP_0.5) para ordenar por el modelo con mejor rendimiento, o selecciona varios experimentos para compararlos uno al lado del otro.

Sigue leyendo para descubrir la optimización de hiperparámetros y la ejecución remota.

🔗 Gestión de versiones de conjuntos de datos#

Versionar los datos por separado del código facilita obtener la versión más reciente y garantiza una reproducibilidad completa. Este repositorio acepta un ID de versión del conjunto de datos, obtiene los datos automáticamente si faltan y registra el ID como parámetro de la tarea, para que siempre sepas qué datos se usaron en cada experimento.

Prepara tu conjunto de datos#

El repositorio de YOLOv5 admite muchos conjuntos de datos mediante archivos de configuración YAML. De forma predeterminada, los conjuntos de datos se descargan en la carpeta ../datasets, relativa a la raíz del repositorio. Después de descargar coco128, la estructura de carpetas es la siguiente:

..
|_ yolov5
|_ datasets
    |_ coco128
        |_ images
        |_ labels
        |_ LICENSE
        |_ README.txt

Cualquier conjunto de datos funciona, siempre que conserves esta estructura.

Después, copia el archivo YAML del conjunto de datos en la carpeta raíz del conjunto de datos; ClearML lee este archivo para usar correctamente el conjunto de datos. Puedes escribir tu propio YAML siguiendo el diseño del ejemplo y asegurándote de que defina path, train, test, val, nc y names.

..
|_ yolov5
|_ datasets
    |_ coco128
        |_ images
        |_ labels
        |_ coco128.yaml  # <---- HERE
        |_ LICENSE
        |_ README.txt

Sube tu conjunto de datos#

Para registrar el conjunto de datos como un conjunto de datos versionado de ClearML, cambia a su carpeta raíz y ejecuta:

cd ../datasets/coco128
clearml-data sync --project YOLOv5 --name coco128 --folder .

clearml-data sync es una forma abreviada de la siguiente secuencia, que también puedes ejecutar explícitamente:

# Add --parent <parent_dataset_id> to base this version on a previous one.
# Duplicate files are not re-uploaded.
clearml-data create --name coco128 --project YOLOv5
clearml-data add --files .
clearml-data close

Entrena con un conjunto de datos de ClearML#

Una vez registrado el conjunto de datos, indica su ID al entrenamiento:

python train.py --img 640 --batch 16 --epochs 3 --data clearml://YOUR_DATASET_ID --weights yolov5s.pt --cache

👀 Optimización de hiperparámetros#

Una vez versionados los experimentos y los datos, puedes basarte en ellos. Como cada experimento registrado captura todo el entorno —código, paquetes instalados y configuración—, las ejecuciones son totalmente reproducibles. ClearML te permite clonar un experimento, cambiar sus parámetros y volver a ejecutarlo automáticamente, lo que constituye la base de la optimización de hiperparámetros (HPO).

Para ejecutar HPO localmente, usa el script incluido. Primero, asegúrate de que exista una tarea de entrenamiento en el gestor de experimentos; el script la clona y modifica sus hiperparámetros.

Rellena el ID de la tarea de plantilla en utils/loggers/clearml/hpo.py y ejecuta:

# Install Optuna or change the optimizer to RandomSearch.
pip install optuna
python utils/loggers/clearml/hpo.py

Cambia task.execute_locally() por task.execute() para enviar el trabajo a una cola de ClearML, donde un agente remoto lo recogerá.

Panel de HPO de ClearML con métricas de YOLOv5

🤯 Ejecución remota (avanzado)#

Ejecutar HPO localmente es práctico, pero a menudo querrás ejecutar experimentos en hardware más potente, como una máquina GPU local o una instancia en la nube. Esa es la función de ClearML Agent:

Cada experimento registrado contiene todo lo necesario para reproducirlo en otra máquina (paquetes instalados, cambios sin confirmar y configuración). Un agente de ClearML escucha una cola, recoge las tareas entrantes, recrea el entorno, ejecuta el trabajo y transmite los escalares y gráficos al gestor de experimentos.

Convierte cualquier máquina —una VM en la nube, un equipo local con GPU o un portátil— en un agente de ClearML con:

clearml-agent daemon --queue QUEUES_TO_LISTEN_TO [--docker]

Clonación, edición y puesta en cola#

Con un agente en ejecución, puedes asignarle trabajo directamente desde la interfaz de usuario:

  • 🪄 Haz clic derecho en un experimento y clónalo.
  • 🎯 Edita sus hiperparámetros.
  • ⏳ Haz clic derecho en la tarea clonada y añádela a una cola de destino.

Ejecución remota de una tarea#

También puedes marcar un script en ejecución para ejecutarlo de forma remota mediante programación, añadiendo task.execute_remotely() después de instanciar el registrador de ClearML. Añade la línea resaltada a train.py:

# ...
# Loggers
data_dict = None
if RANK in {-1, 0}:
    loggers = Loggers(save_dir, weights, opt, hyp, LOGGER)  # loggers instance
    if loggers.clearml:
        loggers.clearml.task.execute_remotely(queue="my_queue")  # <------ ADD THIS LINE
        # data_dict is None unless the user selected a ClearML dataset, in which case ClearML fills it in.
        data_dict = loggers.clearml.data_dict
# ...

Después de este cambio, al ejecutar el script de entrenamiento se ejecutará hasta esa línea, se empaquetará el código y se enviará a la cola.

Workers con escalado automático#

ClearML incluye escaladores automáticos que ponen en marcha máquinas remotas en AWS, GCP o Azure cuando una cola tiene experimentos pendientes, las convierten en agentes de ClearML y las apagan cuando termina el trabajo; así solo pagas por la capacidad de cómputo que está realmente en ejecución.

Mira el vídeo de introducción a continuación:

Ver el vídeo

Más información#

Para obtener más información sobre la integración de ClearML con los modelos de Ultralytics, consulta nuestra guía de integración de ClearML y descubre cómo mejorar tu flujo de trabajo de MLOps con otras herramientas de seguimiento de experimentos.

Comentarios