Integración con ClearML#
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.
- 🔨 Rastrea cada ejecución de entrenamiento de YOLOv5 en el gestor de experimentos.
- 🔧 Controla las versiones 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.

🦾 Configuración inicial#
ClearML necesita comunicarse con un servidor para rastrear tus experimentos y datos. Tienes dos opciones:
- Regístrate en el servicio alojado de ClearML gratuito, o
- Despliega tu propio servidor ClearML; es de código abierto, por lo que sigue siendo una opción viable incluso para datos sensibles.
A continuación, instala el paquete de Python clearml y conecta el SDK a tu servidor:
pip install clearmlGenera las credenciales en Settings → Workspace → Create new credentials (en la esquina superior derecha de la interfaz de usuario de ClearML) y ejecuta:
clearml-initSigue las instrucciones en pantalla. Eso es todo: la configuración está completa.
🚀 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 clearmlEsto habilitará la integración con el script de entrenamiento de YOLOv5. Cada ejecución de entrenamiento a partir de ahora 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 de proyectos personalizados.
python train.py --img 640 --batch 16 --epochs 3 --data coco8.yaml --weights yolov5s.pt --cacheO con nombres personalizados:
python train.py --project my_project --name my_training --img 640 --batch 16 --epochs 3 --data coco8.yaml --weights yolov5s.pt --cacheCada ejecución captura:
- Código fuente y cambios sin confirmar
- Paquetes instalados
- Hiperparámetros
- Puntos de control del modelo (usa
--save-period npara guardar cadané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 en un solo lugar. Añade columnas personalizadas (por ejemplo, mAP_0.5) para ordenar por el modelo con mejor rendimiento, o selecciona varios experimentos para compararlos lado a lado.
Sigue leyendo para obtener información sobre la optimización de hiperparámetros y la ejecución remota.
🔗 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.

Prepara tu dataset#
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 tiene el siguiente aspecto:
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ LICENSE
|_ README.txtCualquier dataset funciona, siempre que conserves esta estructura.
A continuación, copia el archivo YAML del conjunto de datos en la carpeta raíz del conjunto de datos; ClearML lee este archivo para utilizar el conjunto de datos correctamente. Puedes escribir tu propio YAML siguiendo el diseño de ejemplo, asegurándote de que define path, train, test, val, nc y names.
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ coco128.yaml # <---- HERE
|_ LICENSE
|_ README.txtSube 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 de forma explícita:
# 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 closeEntrena 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👀 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.
Completa el ID de la tarea de plantilla en utils/loggers/clearml/hpo.py y, a continuación, ejecuta:
# Install Optuna or change the optimizer to RandomSearch.
pip install optuna
python utils/loggers/clearml/hpo.pyCambia task.execute_locally() por task.execute() para enviar el trabajo a una cola de ClearML para que un agente remoto lo recoja.

🤯 Ejecución remota (avanzado)#
Ejecutar la HPO localmente es cómodo, pero a menudo querrás realizar experimentos en hardware más potente: una máquina con 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]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 ponla en la cola de destino.

Ejecución de una tarea de forma remota#
También puedes marcar un script en ejecución para su ejecución remota de forma programática añadiendo task.execute_remotely() después de que se haya 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.
Trabajadores de escalado automático#
ClearML incluye escaladores automáticos que activan 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 ha terminado, para que solo pagues por la potencia de cálculo que se está utilizando realmente.
Mira el vídeo de introducción a continuación:
Más información#
Para obtener más información sobre cómo integrar ClearML con modelos de Ultralytics, consulta nuestra guía de integración de ClearML y descubre cómo puedes mejorar tu flujo de trabajo de MLOps con otras herramientas de seguimiento de experimentos.