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 reciente: una caja de herramientas de código abierto diseñada 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 simple entrenar un modelo YOLOv5 y usar el gestor de experimentos de ClearML para rastrearlo automáticamente. 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.
Link to this sectionLleva 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.
Link to this sectionConfiguración inicial#
Para realizar un seguimiento de tus experimentos y datos, ClearML necesita comunicarse con un servidor. Tienes dos opciones para esto: regístrate gratis en el servicio alojado de ClearML o configura tu propio servidor; consulta los documentos de implementación del servidor ClearML.
Incluso el servidor es de código abierto, así que si trabajas con datos sensibles, ¡no hay problema!
- Instala el paquete de Python clearml:
pip install clearml - Conecta el SDK de ClearML al servidor creando credenciales (ve arriba a la derecha a Settings → Workspace → Create new credentials), luego ejecuta el comando a continuación y sigue las instrucciones:
clearml-init
¡Y voilà! Estás listo para comenzar...
Link to this sectionEntrenar 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. A partir de ahora, cada ejecución de entrenamiento será capturada y almacenada por el gestor de experimentos de ClearML. Si quieres cambiar el project_name o task_name, dirígete a nuestro logger 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 --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!
Link to this sectionGestió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!
Link to this sectionPrepara 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.txtLink to this sectionSube 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 closeLink to this sectionEjecuta 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 --cacheLink to this sectionOptimizació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.
Necesitarás completar 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() a 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.pyLink to this sectionEjecució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]Link to this sectionClonar, 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
Link to this sectionEjecutar una tarea de forma remota#
Ahora puedes clonar una tarea como explicamos anteriormente, o simplemente marca tu script actual añadiendo task.execute_remotely() y, al ejecutarlo, se pondrá 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 logger 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¿Alguna pregunta? ¡Únete a nuestra comunidad y deja tu pregunta hoy mismo!






