Meet YOLO26: next-gen vision AI.

Link to this sectionIntegración con ClearML#

ClearML MLOps experiment tracking platform

Link to this sectionAcerca de ClearML#

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

  • 🔨 Rastrea cada ejecución de entrenamiento de YOLOv5 en el gestor de experimentos.
  • 🔧 Versiona y accede a tus datos de entrenamiento personalizados con la herramienta de control de versiones de datos integrada de ClearML.
  • 🔦 Entrena y supervisa de forma remota las ejecuciones de YOLOv5 utilizando el Agente de ClearML.
  • 🔬 Encuentra el mejor mAP con la optimización de hiperparámetros de ClearML.
  • 🔭 Convierte tu modelo YOLOv5 entrenado en una API con unos pocos comandos usando ClearML Serving.

Usa tantas o tan pocas de estas herramientas como necesites; empieza solo con el gestor de experimentos o encadena todo en un flujo de trabajo completo.

Panel de escalares de ClearML mostrando las métricas de entrenamiento de YOLOv5

Link to this section🦾 Configuración inicial#

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

Luego, instala el paquete clearml de Python y conecta el SDK a tu servidor:

pip install clearml

Genera tus credenciales en Ajustes → Espacio de trabajo → Crear nuevas credenciales (arriba a la derecha en la interfaz de usuario de ClearML), y luego ejecuta:

clearml-init

Sigue las instrucciones en pantalla. Eso es todo: la configuración está completa.

Link to this section🚀 Entrenamiento de YOLOv5 con ClearML#

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

pip install clearml

Esto habilitará la integración con el script de entrenamiento de YOLOv5. A partir de ahora, cada ejecución de entrenamiento será capturada y almacenada por el gestor de experimentos de ClearML.

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 utiliza / como delimitador de subproyectos, así que evita usar / en los nombres personalizados de los proyectos.

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
  • Checkpoints del modelo (usa --save-period n para guardar cada n épocas)
  • Salida de consola
  • Escalares (mAP_0.5, mAP_0.5:0.95, precisión, recall, 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 mosaico por época
  • Imágenes de validación por época

Todo aparece en la interfaz de usuario de ClearML para que puedas supervisar el entrenamiento desde un solo lugar. Añade columnas personalizadas (por ejemplo, mAP_0.5) para ordenar por el modelo de mejor rendimiento, o selecciona varios experimentos para compararlos lado a lado.

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

Link to this section🔗 Gestión de versiones de datasets#

Versionar los datos por separado del código facilita la obtención de la última versión y garantiza una reproducibilidad total. Este repositorio acepta un ID de versión del dataset, descarga los datos automáticamente si faltan y registra el ID como un parámetro de la tarea, para que siempre sepas qué datos se utilizaron en cada experimento.

Interfaz de gestión de versiones de datasets de ClearML

Link to this sectionPrepara tu dataset#

El repositorio de YOLOv5 admite muchos datasets a través de archivos de configuración YAML. Por defecto, los datasets se descargan en la carpeta ../datasets relativa a la raíz del repositorio. Tras descargar coco128, la estructura de la carpeta tiene este aspecto:

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

Cualquier dataset funciona, siempre que conserves esta estructura.

A continuación, copia el archivo YAML del dataset en la carpeta raíz del mismo: ClearML lee este archivo para utilizar el dataset correctamente. Puedes escribir tu propio YAML siguiendo el diseño del ejemplo, asegurándote de definir path, train, test, val, nc y names.

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

Link to this sectionSube tu dataset#

Para registrar el dataset como un dataset versionado de ClearML, dirígete a su carpeta raíz y ejecuta:

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

clearml-data sync es una abreviatura 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

Link to this sectionEntrena en un dataset de ClearML#

Una vez registrado el dataset, apunta el entrenamiento hacia él mediante su ID:

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

Link to this section👀 Optimización de hiperparámetros#

Con los experimentos y los datos versionados, puedes trabajar sobre ellos. Como cada experimento rastreado captura todo el entorno (código, paquetes instalados y configuración), las ejecuciones son completamente reproducibles. ClearML te permite clonar un experimento, cambiar sus parámetros y volver a ejecutarlo automáticamente, lo cual es la base de la optimización de hiperparámetros (HPO).

Para ejecutar HPO localmente, usa el script incluido. Primero asegúrate de que existe una tarea de entrenamiento en el gestor de experimentos: el script la clona y varía sus hiperparámetros.

Introduce el ID de la tarea de plantilla en utils/loggers/clearml/hpo.py y luego 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 y que un agente remoto lo recoja.

Panel de control de HPO de ClearML con métricas de YOLOv5

Link to this section🤯 Ejecución remota (avanzado)#

Ejecutar HPO localmente es cómodo, pero a menudo querrás realizar experimentos en hardware más potente, como una máquina GPU local o una instancia en la nube. Ese es el papel del Agente de ClearML:

Cada experimento rastreado 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 escalares y gráficos de vuelta al gestor de experimentos.

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

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

Link to this sectionClonació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 ponla en la cola de destino.

Poner una tarea en cola desde la interfaz

Link to this sectionEjecución de una tarea de forma remota#

También puedes marcar un script en ejecución para su ejecución remota mediante programación añadiendo task.execute_remotely() después de haber instanciado 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
# ...

Tras este cambio, la ejecución del script de entrenamiento llega hasta esa línea, empaqueta el código y lo envía a la cola.

Link to this sectionTrabajadores de escalado automático#

ClearML incluye escaladores automáticos que inician máquinas remotas en AWS, GCP o Azure cuando una cola tiene experimentos pendientes, los convierten en agentes de ClearML y los apagan cuando el trabajo termina; así solo pagas por la potencia de cálculo que realmente utilizas.

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

Ver el vídeo

Link to this sectionMá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 explora cómo puedes mejorar tu flujo de trabajo de MLOps con otras herramientas de seguimiento de experimentos.

Colaboradores

Comentarios