Al hacer clic en “Aceptar todas las cookies”, aceptas el almacenamiento de cookies en tu dispositivo para mejorar la navegación del sitio, analizar el uso del sitio y ayudar en nuestros esfuerzos de marketing. Más información
Configuración de cookies
Al hacer clic en “Aceptar todas las cookies”, aceptas el almacenamiento de cookies en tu dispositivo para mejorar la navegación del sitio, analizar el uso del sitio y ayudar en nuestros esfuerzos de marketing. Más información
Explore nuestra asociación con ClearML para disfrutar de una experiencia Ultralytics YOLOv5 mejorada con una integración ML perfecta, 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 dichos 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 de ML, ClearML facilita la integración de ML en cualquier producto de software y hardware existente.
Esta integración simplifica aún más la formación de un YOLOv5 y utilizar el gestor de experimentos ClearML para track 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
Realiza un seguimiento de cada entrenamiento YOLOv5 en el gestor de experimentos.
Versione y acceda fácilmente a sus datos de formación personalizados con la herramienta integrada de versionado de datos ClearML .
Obtenga el mejor mAP mediante la optimización de hiperparámetros ClearML .
Convierta su 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 usar, puedes limitarte al gestor de experimentos o encadenarlas todas en un pipeline impresionante.
Configurando todo
Para track 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, ver aquí.
Incluso el servidor es de código abierto, por lo que si trabaja con datos confidenciales, ¡no hay problema!
Instale el paquete clearml python : pip install clearml
Conecte el SDK ClearML al servidor creando credenciales (vaya arriba a la derecha a Configuración → Espacio de trabajo → Crear nuevas credenciales), a continuación ejecute el siguiente comando y siga las instrucciones: clearml.
¡Y voilà! Estás listo para empezar...
Entrenamiento de YOLOv5 con ClearML
Para activar el seguimiento de experimentos ClearML , basta con instalar el paquete pip ClearML .
pip install 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 project_name o task_name, dirígete a nuestro logger personalizado, donde puedes cambiarlo: clearml.py
Archivos de modelo (use --save-period n para guardar un punto de control cada n épocas)
Salida de la consola
EscalaresmAP,5, mAP,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á nada mal. Ahora podemos visualizar toda esta información en la interfaz 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.5) para poder ordenar fácilmente el modelo de mejor rendimiento. O seleccione varios experimentos y compárelos 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 diferentes 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 ha descargado el conjunto de datos coco128 utilizando el enlace en el YAML o con los scripts proporcionados por yolov5, obtendrá esta estructura de carpetas:
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, ⚠️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.
Para obtener 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:
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!
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 permite clonar un experimento e incluso cambiar sus parámetros. A continuación, podemos volver a ejecutarlo con estos nuevos parámetros de forma automática, ¡esto es básicamente lo que hace HPO!
Para ejecutar la optimización de hiperparámetros localmente, hemos incluido un script preconfigurado. Simplemente asegúrese de que una tarea de entrenamiento se ha ejecutado al menos una vez, por lo 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 clearml.py y luego simplemente ejecutarlo. Puedes cambiar task.execute_locally() por task.execute() para ponerla en una cola ClearML y que un agente remoto trabaje en ella en su lugar.
# Para utilizar optuna, instálelo primero, de lo contrario puede cambiar el optimizador para que sea sólo RandomSearch pip install optuna python clearml.py
Ejecución remota (avanzado)
Ejecutar HPO localmente es muy práctico, pero ¿qué pasa si queremos ejecutar nuestros experimentos en una máquina remota? Tal vez 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 .
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 comprometidos, etc.). Así que un agente 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 gestor de experimentos.
Puedes convertir cualquier máquina (una VM en la nube, una máquina GPU local, tu propio portátil) en un agente ClearML con sólo ejecutarlo:
clearml 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 remotamente, todo lo que tienes que hacer es añadir esta línea al script training.py después de que el logger ClearML haya sido instanciado:
# ... # 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, tras lo cual empaquetará el código y lo enviará a la cola en su lugar.
Trabajadores de autoescalado
ClearML también viene con escaladores automáticos. Esta herramienta creará automáticamente nuevas máquinas remotas en la nube de su elección (AWS, GCP, Azure) y las convertirá en agentes ClearML para usted siempre que se detecten experimentos en la cola. Una vez procesadas las tareas, el autoescalador apagará automáticamente las máquinas remotas, ¡y usted dejará de pagar! Echa un vistazo al vídeo de inicio del autoescalador a continuación.