Ir al contenido

ClearML Integración

Borrar|MLBorrar|ML

Acerca de ClearML

ClearML es una caja de herramientas de código abierto diseñada para ahorrarle tiempo ⏱️.

🔨 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 formación personalizados con laherramienta integradade versionado de datos ClearML

🔦 Entrena y supervisa a distancia tus carreras de entrenamiento en YOLOv5 mediante ClearML Agent

🔬 Consigue el mejor mAP utilizando ClearML Hyperparameter Optimization

🔭 Convierte tu modeloYOLOv5 recién entrenado en una API con sólo unos comandos utilizando ClearML Serving


Y mucho más. Tú decides cuántas de estas herramientas quieres utilizar: puedes limitarte al gestor de experimentos o encadenarlas todas para crear un impresionante pipeline.

ClearML salpicadero de escalares



🦾 Preparativos

Para realizar un seguimiento de tus experimentos y/o datos, ClearML necesita comunicarse con un servidor. Tienes 2 opciones para conseguir uno:

Puedes registrarte gratuitamente en el servicio alojado deClearML o configurar tu propio servidor (consulta aquí). Incluso el servidor es de código abierto, así que, aunque trabajes con datos confidenciales, no tendrás problemas.

  • Instale el clearml python paquete:

    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), luego ejecute el comando de abajo y siga las instrucciones:

    clearml-init
    

¡Ya está! Ya está 😎


🚀 Formación YOLOv5 Con ClearML

Para habilitar el seguimiento de experimentos en ClearML , basta con instalar el paquete pip ClearML .

pip install clearml>=1.2.0

Esto permitirá la integración con el script de entrenamiento YOLOv5 . A partir de ahora, el gestor de experimentos ClearML capturará y almacenará todos los entrenamientos.

Si desea cambiar el project_name o task_nameutilice el botón --project y --name argumentos de la train.py por defecto el proyecto se llamará YOLOv5 y la tarea Training. NOTA: ClearML utiliza / como delimitador de subproyectos, así que tenga cuidado al utilizar / en el nombre de su proyecto.

python train.py --img 640 --batch 16 --epochs 3 --data coco8.yaml --weights yolov5s.pt --cache

o con un nombre de proyecto y tarea personalizados:

python train.py --project my_project --name my_training --img 640 --batch 16 --epochs 3 --data coco8.yaml --weights yolov5s.pt --cache

Esto capturará:

  • Código fuente + cambios no comprometidos
  • Paquetes instalados
  • (Hiper)parámetros
  • Archivos modelo (utilice --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

Eso es mucho ¿verdad? 🤯 Ahora, podemos visualizar toda esta información en la interfaz de usuario 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 poder ordenar fácilmente el modelo con mejor rendimiento. O selecciona varios experimentos y compáralos directamente.

Podemos hacer aún más con toda esta información, como la optimización de hiperparámetros y la ejecución remota, así que sigue leyendo si quieres ver cómo funciona.

🔗 Gestión de versiones de conjuntos de datos

Versionar sus datos separadamente de su código es generalmente una buena idea y facilita también 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 allí. 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, por lo que siempre sabrá con certeza qué datos se utilizaron en cada experimento.

ClearML Interfaz del conjunto de datos

Prepare su 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 la carpeta coco128 dataset utilizando el enlace en el YAML o con los scripts proporcionados por yolov5, se obtiene esta estructura de carpetas:

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

Pero puede ser cualquier conjunto de datos que desee. 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⚠️.Este archivo YAML contiene 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: path, train, test, val, nc, names.

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

Cargue su conjunto de datos

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:

cd coco128
clearml-data sync --project YOLOv5 --name coco128 --folder .

La orden clearml-data sync es en realidad un comando abreviado. También puedes ejecutar estos comandos uno tras otro:

# Optionally add --parent <parent_dataset_id> 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 close

Ejecutar el entrenamiento utilizando un conjunto de datos ClearML

Ahora que dispone de un conjunto de datos ClearML , puede utilizarlo de forma muy sencilla para entrenar modelos YOLOv5 🚀 personalizados.

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


👀 Optimización de hiperparámetros

Ahora que ya tenemos nuestros experimentos y datos versionados, 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 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. Sólo tiene que asegurarse de que una tarea de entrenamiento se ha ejecutado al menos una vez, por lo que se encuentra en el gestor de experimentos ClearML , esencialmente la clonaremos y cambiaremos sus hiperparámetros.

Tendrá que rellenar el ID de este template task en el script que se encuentra en utils/loggers/clearml/hpo.py y ejecútalo :) Puede cambiar task.execute_locally() a task.execute() para ponerlo en una cola ClearML y 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.py

HPO

🤯 Ejecución remota (avanzada)

Ejecutar HPO localmente es muy práctico, pero ¿qué pasa si queremos ejecutar nuestros experimentos en una máquina remota? Quizás 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 . Echa un vistazo a lo que el agente puede hacer 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 comprometidos, etc.). Así que un agente de ClearML hace exactamente 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 local de GPU , tu propio portátil... ) en un agente de ClearML simplemente ejecutando:

clearml-agent daemon --queue <queues_to_listen_to> [--docker]

Clonación, edición y puesta 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.

🎯 Edita los hiperparámetros a lo que desees que sean

⏳ Ponga en cola la tarea en cualquiera de las colas haciendo clic con el botón derecho del ratón.

Poner en cola una tarea desde la interfaz de usuario

Ejecución remota de una tarea

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

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.

Autoescalado de trabajadores

ClearML ¡también viene con autoescaladores! Esta herramienta creará automáticamente nuevas máquinas remotas en la nube de su elección (AWS, GCP, Azure) y las convertirá en agentes de 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 dejarás de pagar!

Echa un vistazo al vídeo de introducción a los autoescaladores.

Ver el vídeo

Creado hace 1 año ✏️ Actualizado hace 2 meses

Comentarios