¡Sintonice YOLO Vision 2025!
25 de septiembre de 2025
10:00 — 18:00 BST
Evento híbrido
Yolo Vision 2024

Entrena y monitoriza Ultralytics YOLOv5 de forma remota usando ClearML

Equipo de Ultralytics

4 minutos de lectura

21 de octubre de 2022

Explora nuestra asociación con ClearML para disfrutar de una experiencia Ultralytics YOLOv5 mejorada, con una integración perfecta de ML, seguimiento de experimentos y mucho 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 reciente: una caja de herramientas de código abierto diseñada para ahorrarle tiempo.

Con la misión de acelerar la adopción del ML, ClearML hace que el ML se integre a la perfección en cualquier producto de software y hardware existente.

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. Puede especificar fácilmente un ID de versión del conjunto de datos ClearML como entrada de datos, y se utilizará automáticamente para entrenar su modelo.

Lleve el seguimiento de sus experimentos al siguiente nivel

  • Realice un seguimiento de cada ejecución de entrenamiento de YOLOv5 en el administrador de experimentos.
  • Gestiona las versiones de tus datos de entrenamiento personalizados y accede a ellos fácilmente con la herramienta integrada ClearML Data Versioning.
  • Obtenga el mejor mAP 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.

Configurando todo

Para realizar un seguimiento de sus experimentos y datos, ClearML necesita comunicarse con un servidor. Tiene dos opciones para esto: registrarse gratis en el servicio alojado de ClearML o configurar su propio servidor, consulte aquí.

Incluso el servidor es de código abierto, por lo que si trabaja con datos confidenciales, ¡no hay problema!

  1. Instala el paquete de Python clearml: pip install clearml
  2. Conecte el SDK de ClearML al servidor creando credenciales (vaya a la parte superior derecha a Configuración → Espacio de trabajo → Crear nuevas credenciales), luego ejecute el siguiente comando y siga las instrucciones: clearml-init

¡Y voilà! Estás listo para empezar...

Entrenamiento de YOLOv5 con ClearML

Para habilitar el seguimiento de experimentos de ClearML, simplemente instale el paquete pip de ClearML.

pip install clearml

Esto permitirá 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 administrador de experimentos ClearML. Si deseas cambiar el project_name o task_name, dirígete a nuestro logger 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 --cache

Esto capturará:

  • Código fuente + cambios no confirmados
  • Paquetes instalados
  • (Hiper)parámetros
  • Archivos de modelo (use --save-period n para guardar un punto de control cada n épocas)
  • Salida de la 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.
  • Todos los gráficos producidos, como el correlograma de etiquetas y la matriz de confusión
  • Imágenes con bounding boxes por época
  • Mosaico por época
  • Imágenes de validación por época

¡No está mal! Ahora, podemos visualizar toda esta información en la IU de ClearML para obtener una visión general del progreso de nuestro entrenamiento. Añade columnas personalizadas a la vista de tabla (como, por ejemplo, mAP_0.5) para que puedas ordenar fácilmente según el modelo de mejor rendimiento. ¡O selecciona múltiples experimentos y compáralos directamente!

Incluso podemos hacer mucho más con toda esta información, como la optimización de hiperparámetros y la ejecución remota, ¡así que sigue leyendo para aprender cómo!

Gestión de versiones de conjuntos de datos

Controlar las versiones de tus datos por separado de tu código es generalmente una buena idea y facilita la adquisición de la última versión también. Este repositorio admite el suministro de un ID de versión del conjunto de datos y se asegurará de obtener los datos si aún no están allí. Además de eso, este flujo de trabajo también guarda el ID del conjunto de datos utilizado como parte de los parámetros de la tarea, ¡así que siempre sabrás con certeza qué datos se utilizaron en qué experimento!

Prepara tu conjunto de datos

El repositorio YOLOv5 admite varios conjuntos de datos diferentes mediante el uso de archivos YAML que contienen su información. De forma predeterminada, los conjuntos de datos se descargan en la carpeta ../datasets en relación con la carpeta raíz del repositorio. Por lo tanto, si descargó el conjunto de datos coco128 utilizando el enlace en el YAML o con los scripts proporcionados por yolov5, obtendrá esta estructura de carpetas:

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

Pero este puede ser cualquier conjunto de datos que desees. Siéntete libre de usar el tuyo propio, siempre y cuando mantengas esta estructura de carpetas.

A continuación, ⚠️copie el archivo YAML correspondiente en la raíz de la carpeta del conjunto de datos⚠️. Estos archivos YAML contienen la información que ClearML necesitará para utilizar correctamente el conjunto de datos. Por supuesto, también puede crearlo usted mismo, simplemente siga 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 # ← ¡AQUÍ!
        |_ LICENSE
        |_ README.txt

Cargue su conjunto de datos

Para introducir este conjunto de datos en ClearML como un conjunto de datos versionado, vaya a la carpeta raíz del conjunto de datos y ejecute 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ía ejecutar estos comandos uno tras otro:

# Opcionalmente, añade --parent si quieres basar

# esta versión en otra versión del conjunto de datos, ¡así que no se suben archivos duplicados!

clearml-data create --name coco128 --project YOLOv5/p>

clearml-data add --files .

clearml-data close

Ejecutar el entrenamiento utilizando un conjunto de datos ClearML

Ahora que tiene un conjunto de datos ClearML, puede usarlo de manera muy sencilla para entrenar modelos YOLOv5 personalizados.

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

Optimizació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 sobre ellos!

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. Entonces podemos simplemente volver a ejecutarlo con estos nuevos parámetros automáticamente, ¡esto es básicamente lo que hace HPO!

Para ejecutar la optimización de hiperparámetros localmente, hemos incluido un script predefinido para usted. Solo asegúrese de que una tarea de entrenamiento se haya ejecutado al menos una vez, de modo que esté en el administrador de experimentos ClearML, esencialmente la clonaremos y cambiaremos sus hiperparámetros.

Tendrá que rellenar el ID de esta tarea de plantilla en el script que se encuentra en utils/loggers/clearml/hpo.py y, a continuación, simplemente ejecutarlo. Puede cambiar task.execute_locally() a task.execute() para ponerlo en una cola de ClearML y hacer que un agente remoto trabaje en él en su lugar.

# Para usar optuna, instálalo primero, de lo contrario, puedes cambiar el optimizador para que sea simplemente RandomSearch pip install optuna python utils/loggers/clearml/hpo.py

Ejecución remota (avanzado)

Ejecutar HPO localmente es realmente útil, pero ¿qué pasa si queremos ejecutar nuestros experimentos en una máquina remota? Tal vez tenga acceso a una máquina GPU muy potente en el sitio, o tenga algo de presupuesto para usar GPU en la nube. Aquí es donde entra en juego el agente ClearML.

Consulta lo que el agente puede hacer aquí:

En resumen: cada experimento rastreado por el administrador 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 precisamente eso: escucha una cola de tareas entrantes y, cuando encuentra una, recrea el entorno y lo ejecuta mientras sigue informando de escalares, gráficos, etc. al administrador de experimentos.

Puede convertir cualquier máquina (una VM en la nube, una máquina GPU local, su propio portátil) en un agente ClearML simplemente ejecutando:

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

Clonación, edición y puesta en cola

Con nuestro agente en funcionamiento, podemos asignarle trabajo. ¿Recuerdas de la sección de HPO que podemos clonar una tarea y editar los hiperparámetros? ¡Podemos hacer eso también desde la interfaz!

🪄 Clona el experimento haciendo clic derecho sobre él.

🎯 Edita los hiperparámetros según tus necesidades.

⏳ Ponga en cola la tarea en cualquiera de las colas haciendo clic derecho en ella

Ejecución remota de una tarea

Ahora puede clonar una tarea como explicamos anteriormente, o simplemente marcar su script actual añadiendo task.execute_remotely() y, al ejecutarlo, se colocará en una cola para que el agente comience a trabajar.

Para ejecutar el script de entrenamiento YOLOv5 de forma remota, todo lo que tiene que hacer es agregar esta línea al script training.py después de que se haya instanciado el registrador 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 # Data_dict is either None is user did not choose for ClearML dataset or is filled in by ClearML data_dict = loggers.clearml.data_dict # ...

Al ejecutar el script de entrenamiento después de este cambio, Python ejecutará el script hasta esa línea, ¡después de lo cual empaquetará el código y lo enviará a la cola!

Trabajadores de autoescalado

¡ClearML también viene con autoescaladores! Esta herramienta pondrá en marcha automáticamente nuevas máquinas remotas en la nube que elijas (AWS, GCP, Azure) y las convertirá en agentes de ClearML para ti siempre que se detecten experimentos en la cola. Una vez que se procesan las tareas, el autoescalador apagará automáticamente las máquinas remotas, ¡y dejarás de pagar! Echa un vistazo al vídeo de introducción a los autoescaladores que aparece a continuación.

¿Alguna pregunta? ¡Únase a nuestra comunidad y deje su pregunta hoy mismo!

¡Construyamos juntos el futuro
de la IA!

Comience su viaje con el futuro del aprendizaje automático

Comienza gratis
Enlace copiado al portapapeles