Saltar al contenido

ClearML Integraci贸n

Borrar|MLBorrar|ML

Acerca de ClearML

ClearML es una caja de herramientas de c贸digo abierto dise帽ada para ahorrarte tiempo 鈴憋笍.

馃敤 Sigue cada entrenamiento de YOLOv5 en el gestor de experimentos

馃敡 Versiona y accede f谩cilmente a tus datos de entrenamiento personalizados con laherramienta integradade versionado de datos ClearML

馃敠 Entrena y supervisa a distancia tus carreras de entrenamiento en YOLOv5 utilizando ClearML Agente

馃敩 Consigue el mejor mAP utilizando ClearML Optimizaci贸n de hiperpar谩metros

馃敪 Convierte tu modeloYOLOv5 reci茅n entrenado en una API con s贸lo unos comandos utilizando ClearML Serving


Y mucho m谩s. Depende de ti cu谩ntas de estas herramientas quieras utilizar, puedes ce帽irte al gestor de experimentos, o encadenarlas todas en un impresionante pipeline.

ClearML tablero de escalares



馃 Preparando las cosas

Para hacer 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 sensibles, 隆no tendr谩s problemas!

  • Instala el clearml python paquete:

    pip install clearml
    
  • 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 comando que aparece a continuaci贸n y sigue las instrucciones:

    clearml-init
    

Ya est谩. Ya has terminado 馃槑


馃殌 Formaci贸n YOLOv5 Con ClearML

Para activar el seguimiento de experimentos de ClearML , s贸lo tienes que 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, cada ejecuci贸n de entrenamiento ser谩 capturada y almacenada por el gestor de experimentos ClearML .

Si quieres cambiar el project_name o task_nameutiliza el --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 ten cuidado al utilizar / 隆en el nombre de tu 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 (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

Son muchos, 驴verdad? 馃く Ahora, podemos visualizar toda esta informaci贸n en la IU de ClearML para tener una visi贸n general de nuestro progreso en el 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 si quieres ver c贸mo funciona!

馃敆 Gesti贸n de la versi贸n del conjunto 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!

ClearML Interfaz del conjunto de datos

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 ../datasets en relaci贸n con la carpeta ra铆z del repositorio. Por tanto, si has descargado la carpeta coco128 dataset utilizando el enlace en el 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鈿狅笍.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

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 .

La orden clearml-data sync es en realidad un comando abreviado. Tambi茅n puedes ejecutar estos comandos uno detr谩s de 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

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://<your_dataset_id> --weights yolov5s.pt --cache


馃憖 Optimizaci贸n de hiperpar谩metros

Ahora que 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 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 este template task en el script que se encuentra en utils/loggers/clearml/hpo.py y ejec煤talo :) Puedes cambiar task.execute_locally() a task.execute() 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.py

HPO

馃く Ejecuci贸n remota (avanzada)

Ejecutar HPO localmente es realmente pr谩ctico, pero 驴y si en lugar de eso 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 . Echa un vistazo a 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 exactamente 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 GPU local, tu propio port谩til... ) en un agente de ClearML con s贸lo ejecutarlo:

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 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 una tarea desde la interfaz

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 ejecutarlo se pondr谩 en una cola, 隆para que el agente empiece a trabajar en 茅l!

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 t煤 dejar谩s de pagar!

Echa un vistazo al siguiente v铆deo de iniciaci贸n a los autoescaladores.

Ver el v铆deo



Creado 2023-11-12, Actualizado 2024-04-18
Autores: glenn-jocher (6), RizwanMunawar (1)

Comentarios