Entrena y monitoriza remotamente YOLOv5 de Ultralytics usando ClearML
Explora nuestra asociación con ClearML para una experiencia mejorada con YOLOv5 de Ultralytics, con integración ML fluida, seguimiento de experimentos y más.

En Ultralytics nos asociamos comercialmente con otras startups para ayudarnos a financiar la investigación y el desarrollo de nuestras increíbles herramientas de código abierto, como YOLOv5, para mantenerlas gratuitas para todos. Este artículo puede contener enlaces de afiliados a esos socios.
ClearML es nuestro socio más nuevo: un conjunto de herramientas de código abierto diseñado para ahorrarte tiempo.
Con la misión de acelerar la adopción de ML, ClearML hace que integrar ML en cualquier producto de Software o Hardware sea sencillo.
Esta integración hace que sea aún más sencillo entrenar un modelo YOLOv5 y utilizar el gestor de experimentos ClearML para realizar un seguimiento automático. Puedes especificar fácilmente un ID de versión de conjunto de datos de ClearML como entrada de datos, y se utilizará automáticamente para entrenar tu modelo.
Lleva el seguimiento de tus experimentos al siguiente nivel#
- Realiza un seguimiento de cada ejecución de entrenamiento de YOLOv5 en el gestor de experimentos.
- Versiona y accede fácilmente a tus datos de entrenamiento personalizados con la herramienta integrada de versionado de datos de ClearML.
- Obtén el mejor mAP posible utilizando la optimización de hiperparámetros de ClearML.
- Convierte tu modelo YOLOv5 recién entrenado en una API con solo unos pocos comandos usando ClearML Serving.
Depende de ti cuántas de estas herramientas quieras usar; puedes limitarte al gestor de experimentos o encadenarlas todas en un pipeline impresionante.
Configuración inicial#
Para realizar un seguimiento de tus experimentos y datos, ClearML necesita comunicarse con un servidor. Tienes dos opciones para esto: registrarte gratis en el servicio alojado de ClearML o configurar tu propio servidor; consulta la documentación de implementación del servidor de ClearML.
Incluso el servidor es de código abierto, así que si trabajas con datos sensibles, ¡no hay problema!
- Instala el paquete de Python de clearml:
pip install clearml - Conecta el ClearML SDK al servidor creando credenciales (ve arriba a la derecha a Configuración → Espacio de trabajo → Crear nuevas credenciales), luego ejecuta el comando de abajo y sigue las instrucciones:
clearml-init
¡Y voilà! Estás listo para comenzar...
Entrenar YOLOv5 con ClearML#
Para habilitar el seguimiento de experimentos de ClearML, simplemente instala el paquete pip de ClearML.
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 ClearML. Si quieres cambiar project_name o task_name, dirígete a nuestro registrador personalizado, donde puedes cambiarlo: utils/loggers/clearml/clearml_utils.py
python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt --cacheEsto capturará:
- Código fuente + cambios no confirmados
- Paquetes instalados
- (Hiper)parámetros
- Archivos del modelo (usa --save-period n para guardar un punto de control cada n épocas)
- Salida de consola
- Escalares (mAP_0.5, mAP_0.5:0.95, precisión, recall, pérdidas, tasas de aprendizaje, ...)
- Información general como detalles de la máquina, tiempo de ejecución, fecha de creación, etc.
- Todas las gráficas producidas, como el correlograma de etiquetas y la matriz de confusión
- Imágenes con BBox por época
- Mosaico por época
- Imágenes de validación por época
¡Nada mal! Ahora podemos visualizar toda esta información en la interfaz de usuario de ClearML para obtener una visión general de nuestro progreso de entrenamiento. Añade columnas personalizadas a la vista de tabla (como, por ejemplo, mAP_0.5) para que puedas ordenar fácilmente el modelo con mejor rendimiento. ¡O selecciona varios experimentos y compáralos directamente!
Hay aún más cosas que podemos hacer con toda esta información, como optimización de hiperparámetros y ejecución remota, ¡así que sigue leyendo para aprender cómo!
Gestión de versiones de datasets#
Versionar tus datos por separado de tu código es, por lo general, una buena idea y facilita también la obtención de la última versión. Este repositorio admite proporcionar un ID de versión de dataset, y se asegurará de obtener los datos si aún no están allí. Además, este flujo de trabajo también guarda el ID del dataset utilizado como parte de los parámetros de la tarea, ¡por lo que siempre sabrás con certeza qué datos se usaron en qué experimento!
Prepara tu dataset#
El repositorio de YOLOv5 admite una serie de datasets diferentes mediante el uso de archivos YAML que contienen su información. Por defecto, los datasets se descargan a la carpeta ../datasets en relación con la carpeta raíz del repositorio. Así que si descargaste el dataset coco128 usando el enlace en el YAML o con los scripts proporcionados por yolov5, obtienes esta estructura de carpetas:
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ LICENSE
|_ README.txtPero este puede ser cualquier dataset que desees. Siéntete libre de usar el tuyo propio, siempre y cuando mantengas esta estructura de carpetas.
A continuación, ⚠️copia el archivo YAML correspondiente a la raíz de la carpeta del dataset⚠️. Estos archivos YAML contienen la información que ClearML necesitará para utilizar correctamente el dataset. Puedes crearlo tú mismo también, por supuesto; simplemente sigue la estructura de los YAML de ejemplo.
Básicamente, necesitamos las siguientes claves: path, train, test, val, nc, names.
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ coco128.yaml # ← HERE!
|_ LICENSE
|_ README.txtSube tu dataset#
Para introducir este dataset en ClearML como un dataset versionado, ve a la carpeta raíz del dataset y ejecuta el siguiente comando:
cd coco128
clearml-data sync --project YOLOv5 --name coco128 --folder .El comando clearml-data sync es en realidad un comando abreviado. También podrías ejecutar estos comandos uno tras otro:
# Optionally add --parent if you want to base
# this version on another dataset version, so no duplicate files are uploaded!
clearml-data create --name coco128 --project YOLOv5
clearml-data add --files .
clearml-data closeEjecuta el entrenamiento usando un dataset de ClearML#
Ahora que tienes un dataset de ClearML, puedes usarlo de forma muy sencilla para entrenar modelos YOLOv5 personalizados.
python train.py --img 640 --batch 16 --epochs 3 --data clearml:// --weights yolov5s.pt --cacheOptimización de hiperparámetros#
Ahora que tenemos nuestros experimentos y la versión de los datos, ¡es hora de echar un vistazo a lo que podemos construir encima!
Usando la información del código, los paquetes instalados y los detalles del entorno, el experimento en sí es ahora completamente reproducible. De hecho, ClearML te permite clonar un experimento e incluso cambiar sus parámetros. Luego, podemos volver a ejecutarlo automáticamente con estos nuevos parámetros; ¡esto es básicamente lo que hace HPO!
Para ejecutar la optimización de hiperparámetros localmente, hemos incluido un script preconfigurado para ti. Solo asegúrate de que una tarea de entrenamiento se haya ejecutado al menos una vez, de modo que esté en el gestor de experimentos de ClearML; esencialmente, la clonaremos y cambiaremos sus hiperparámetros.
Tendrás que rellenar el ID de esta tarea de plantilla en el script que se encuentra en utils/loggers/clearml/hpo.py y luego simplemente ejecutarlo. Puedes cambiar task.execute_locally() por task.execute() para ponerlo en una cola de ClearML y hacer que un agente remoto trabaje en él en su lugar.
# To use optuna, install it first, otherwise you can change the optimizer to just be RandomSearch
pip install optuna
python utils/loggers/clearml/hpo.pyEjecución remota (Avanzado)#
Ejecutar HPO localmente es muy útil, pero ¿qué pasa si queremos ejecutar nuestros experimentos en una máquina remota? Tal vez tengas acceso a una máquina GPU muy potente en tus instalaciones, o tengas algo de presupuesto para usar GPUs en la nube. Aquí es donde entra en juego el agente de ClearML.
Mira lo que puede hacer el agente aquí:
En resumen: cada experimento rastreado por el gestor de experimentos contiene suficiente información para reproducirlo en una máquina diferente (paquetes instalados, cambios no confirmados, etc.). Así que un agente de ClearML hace exactamente eso: escucha una cola en busca de tareas entrantes y, cuando encuentra una, recrea el entorno y la ejecuta mientras sigue informando escalares, gráficos, etc., al gestor de experimentos.
Puedes convertir cualquier máquina (una máquina virtual en la nube, una máquina con GPU local, tu propio portátil) en un agente de ClearML simplemente ejecutando:
clearml-agent daemon --queue [--docker]Clonar, editar y poner en cola#
Con nuestro agente en funcionamiento, podemos darle algo de trabajo. ¿Recuerdas en la sección de HPO que podemos clonar una tarea y editar los hiperparámetros? ¡Podemos hacer eso desde la interfaz también!
🪄 Clona el experimento haciendo clic derecho sobre él
🎯 Edita los hiperparámetros a lo que desees
⏳ Pon la tarea en cola en cualquiera de las colas haciendo clic derecho sobre ella
Ejecutar una tarea de forma remota#
Ahora puedes clonar una tarea como explicamos anteriormente, o simplemente marcar tu script actual añadiendo task.execute_remotely() y, al ejecutarlo, se colocará en una cola para que el agente comience a trabajar en él.
Para ejecutar el script de entrenamiento de YOLOv5 de forma remota, todo lo que tienes que hacer es añadir esta línea al script train.py después de que se haya instanciado el registrador de ClearML:
# ...
# 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¿Tienes alguna pregunta? ¡Únete a nuestra comunidad y deja tu pregunta hoy mismo!






