Cheque verde
Enlace copiado en el portapapeles

Entrena y supervisa a distancia Ultralytics YOLOv5 Utilizando ClearML

Explora nuestra asociación con ClearML para disfrutar de una experiencia Ultrlaytics YOLOv5 mejorada con una perfecta integración de ML, seguimiento de experimentos y mucho más.

En Ultralytics nos asociamos comercialmente con otras startups para que nos ayuden a financiar la investigación y el desarrollo de nuestras increíbles herramientas de código abierto, como YOLOv5, para que sigan siendo gratuitas para todo el mundo. Este artículo puede contener enlaces de afiliación a esos socios.

ClearML es nuestro socio más reciente: una caja de herramientas de código abierto diseñada para ahorrarte tiempo.

Con la misión de acelerar la adopción del ML, ClearML hace que el ML se integre sin problemas en cualquier producto de Software y Hardware existente.

Esta integración simplifica aún más el entrenamiento de un YOLOv5 modelo y utilizar el gestor de experimentos de ClearML para seguirlo automáticamente. Puedes especificar fácilmente un ID de versión del conjunto de datos 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 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 ClearML .
  • Consigue el mejor mAP utilizando ClearML Optimización de hiperparámetros.
  • Convierte tu modelo YOLOv5 recién entrenado en una API con sólo unos comandos utilizando ClearML Serving.

Depende de ti cuántas de estas herramientas quieras utilizar, puedes ceñirte al gestor de experimentos, o encadenarlas todas en un impresionante pipeline.

Preparar las cosas

Para hacer un seguimiento de tus experimentos y datos, ClearML necesita comunicarse con un servidor. Para ello tienes dos opciones: registrarte gratuitamente en el servicio alojado ClearML o configurar tu propio servidor, consulta aquí.

Incluso el servidor es de código abierto, así que si tratas con datos sensibles, ¡no hay problema!

  1. Instala el paquete clearml python : pip install clearml
  2. Conecta el SDK ClearML al servidor creando credenciales (ve arriba a la derecha a Configuración -> Espacio de trabajo -> Crear nuevas credenciales), luego ejecuta el siguiente comando y sigue las instrucciones: clearml-init

Y ¡voilá! Ya estás listo para empezar...

Formación YOLOv5 Con ClearML

Para activar el seguimiento de experimentos de ClearML , sólo tienes que instalar el paquete pip ClearML .

instalar pip clearml

Esto permitirá la integración con el script de entrenamiento YOLOv5 . A partir de ahora, cada ejecución de entrenamiento será capturada y almacenada por el gestor de experimentos ClearML . Si quieres cambiar el nombre_del_proyecto o el nombre_de_la_tarea, dirígete a nuestro registrador personalizado, donde podrás 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 comprometidos
  • Paquetes instalados
  • (Hiper)parámetros
  • Ficheros modelo (utiliza --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 cuadros delimitadores por época
  • Mosaico por época
  • Imágenes de validación por época

¡No está nada mal! Ahora podemos visualizar toda esta información en la interfaz de usuario de ClearML para tener 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 poder 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 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

Versionar tus datos por separado de tu código suele ser una buena idea y además facilita la adquisición de la última versió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 ahí. Además, este flujo de trabajo también guarda el ID del conjunto de datos utilizado como parte de los parámetros de la tarea, ¡así siempre sabrás con seguridad qué datos se utilizaron en cada experimento!

Datos, Ultralytics YOLOv5  y ClearML

Prepara tu conjunto de datos

El repositorio YOLOv5 admite distintos conjuntos de datos mediante archivos YAML que contienen su información. Por defecto, los conjuntos de datos se descargan en la carpeta ../datasets en relación con la carpeta raíz del repositorio. Así, si has descargado el conjunto de datos coco128 utilizando el enlace del YAML o con los scripts proporcionados por yolov5, obtendrás esta estructura de carpetas:

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

Pero puede ser cualquier conjunto de datos que desees. Siéntete libre de utilizar los tuyos propios, siempre que mantengas esta estructura de carpetas.

A continuación, ⚠️copy el archivo YAML correspondiente a la raíz del conjunto de datos folder⚠️. Estos archivos YAML contienen la información que ClearML necesitará para utilizar correctamente el conjunto de datos. También puedes hacerlo tú mismo, por supuesto, sólo tienes que seguir la estructura de los YAML de ejemplo.

Básicamente, necesitamos las siguientes claves: ruta, tren, prueba, val, nc, nombres.

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

Sube tu conjunto de datos

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

# Añade opcionalmente --parent si quieres basar

# esta versión en otra versión del conjunto de datos, ¡para que no se carguen archivos duplicados!

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

clearml-datos añadir --archivos .

clearml-datos cerrar

Ejecuta el entrenamiento utilizando un conjunto de datos ClearML

Ahora que tienes un conjunto de datos ClearML , puedes utilizarlo de forma 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 encima!

Utilizando 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. A continuación, podemos 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 preelaborado para ti. Sólo tienes que asegurarte de que una tarea de entrenamiento se ha ejecutado al menos una vez, de modo que esté en el gestor de experimentos 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 ponerla en una cola ClearML y hacer que un agente remoto trabaje en ella en su lugar.

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

HPO, Ultralytics YOLOv5  y ClearML

Ejecución Remota (Avanzado)

Ejecutar HPO localmente es realmente práctico, pero ¿y si en lugar de eso queremos ejecutar nuestros experimentos en una máquina remota? Quizá tengas acceso a una máquina GPU muy potente in situ o dispongas de algo de presupuesto para utilizar GPUs en la nube. Aquí es donde entra en juego el Agente ClearML .

Comprueba lo que puede hacer el agente aquí:

En resumen: cada experimento rastreado por el gestor de experimentos contiene información suficiente para reproducirlo en una máquina diferente (paquetes instalados, cambios no comprometidos, 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 sin dejar de informar de escalares, gráficos, etc. al gestor de experimentos.

Puedes convertir cualquier máquina (una VM en la nube, una máquina local de GPU , tu propio portátil... ) en un agente de ClearML con sólo ejecutarlo:

clearml-agente demonio --queue [--docker]

Clonar, editar y poner en cola

Con nuestro agente en marcha, podemos darle algo de trabajo. ¿Recuerdas de la sección HPO que podemos clonar una tarea y editar los hiperparámetros? ¡También podemos hacerlo desde la interfaz!

🪄 Clona el experimento haciendo clic con el botón derecho del ratón.

🎯 Edita los hiperparámetros como desees

⏳ Pon en cola la tarea en cualquiera de las colas haciendo clic con el botón derecho sobre ella

Poner en cola, Ultralytics YOLOv5  y ClearML

Ejecutar una tarea remotamente

Ahora puedes clonar una tarea como hemos explicado antes, o simplemente marcar tu script actual añadiendo task.execute_remotely() y al ejecutarse, ¡se pondrá en una cola, para que el agente empiece a trabajar en ella!

Para ejecutar el script de entrenamiento YOLOv5 a distancia, todo lo que tienes que hacer es añadir 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 en su lugar!

Autoescalado de trabajadores

ClearML ¡también viene con autoescaladores! Esta herramienta creará 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 procesadas las tareas, el autoescalador apagará automáticamente las máquinas remotas y ¡dejarás de pagar! Mira el vídeo de inicio del autoescalador a continuación.

¿Tienes alguna pregunta? ¡ Únete a nuestra comunidad y deja tu pregunta hoy mismo!

Logotipo de FacebookLogotipo de TwitterLogotipo de LinkedInSímbolo de enlace de copia

Leer más en esta categoría

¡Construyamos juntos el futuro
de la IA!

Comienza tu viaje con el futuro del aprendizaje automático