Vai al contenuto

ClearML Integrazione

Chiaro|MLChiaro|ML

Circa ClearML

ClearML è un toolbox open-source progettato per farvi risparmiare tempo ⏱️.

🔨 Traccia ogni allenamento YOLOv5 nel gestore degli esperimenti.

🔧 Versione e facile accesso ai dati di formazione personalizzati con lostrumento di versione dei dati integrato ClearML .

🔦 Allenatevi e monitorate in remoto gli allenamenti di YOLOv5 utilizzando l'agente ClearML .

🔬 Ottenere la migliore mAP utilizzando l'ottimizzazione degli iperparametri di ClearML

🔭 Trasformare il modelloYOLOv5 appena addestrato in un'API con pochi comandi utilizzando ClearML Serving.


E molto altro ancora. Sta a voi decidere quanti di questi strumenti volete usare, potete limitarvi al gestore di esperimenti o concatenarli tutti insieme in una pipeline impressionante!

ClearML cruscotto scalare



🦾 Impostazione delle cose

Per tenere traccia degli esperimenti e/o dei dati, ClearML deve comunicare con un server. Ci sono due opzioni per ottenerne uno:

Potete iscrivervi gratuitamente al servizioClearML Hosted Service oppure configurare il vostro server, vedi qui. Anche il server è open-source, quindi anche se avete a che fare con dati sensibili, dovreste essere a posto!

  • Installare il clearml python pacchetto:

    pip install clearml
    
  • Collegare l'SDK ClearML al server creando le credenziali (andare in alto a destra su Impostazioni -> Area di lavoro -> Crea nuove credenziali), quindi eseguire il comando sottostante e seguire le istruzioni:

    clearml-init
    

Ecco fatto! Avete finito 😎


🚀 Formazione YOLOv5 Con ClearML

Per abilitare il tracciamento degli esperimenti di ClearML , è sufficiente installare il pacchetto pip ClearML .

pip install clearml>=1.2.0

Ciò consentirà l'integrazione con lo script di addestramento YOLOv5 . D'ora in poi, ogni allenamento sarà catturato e memorizzato dal gestore di esperimenti ClearML .

Se si desidera modificare il project_name o task_name, utilizzare l'opzione --project e --name argomenti del train.py per impostazione predefinita il progetto si chiamerà YOLOv5 e il compito Training. NOTA BENE: ClearML utilizza / come delimitatore per i sottoprogetti, quindi fate attenzione quando usate / nel nome del progetto!

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

o con un nome di progetto e di attività personalizzato:

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

Questo cattura:

  • Codice sorgente + modifiche non impegnate
  • Pacchetti installati
  • (Iper)parametri
  • File di modello (utilizzare --save-period n per salvare un checkpoint ogni n epoche)
  • Uscita console
  • Scalari (mAP_0.5, mAP_0.5:0.95, precisione, richiamo, perdite, tassi di apprendimento, ...)
  • Informazioni generali come i dettagli della macchina, il tempo di esecuzione, la data di creazione, ecc.
  • Tutti i grafici prodotti, quali il correlogramma delle etichette e la matrice di confusione
  • Immagini con riquadri di delimitazione per epoca
  • Mosaico per epoca
  • Immagini di convalida per epoch

È molto, vero? Ora possiamo visualizzare tutte queste informazioni nell'interfaccia utente di ClearML per avere una panoramica dei progressi dell'allenamento. Aggiungete colonne personalizzate alla visualizzazione della tabella (come ad esempio mAP_0,5) in modo da poter ordinare facilmente il modello più performante. Oppure selezionare più esperimenti e confrontarli direttamente!

Possiamo fare ancora di più con tutte queste informazioni, come l'ottimizzazione degli iperparametri e l'esecuzione remota, quindi continuate a leggere se volete vedere come funziona!

🔗 Gestione della versione del set di dati

La versione dei dati separata da quella del codice è generalmente una buona idea e facilita l'acquisizione dell'ultima versione. Questo repository supporta la fornitura di un ID di versione del dataset e si assicurerà di ottenere i dati se non sono ancora presenti. Inoltre, questo flusso di lavoro salva anche l'ID del set di dati utilizzato come parte dei parametri dell'attività, in modo da sapere sempre con certezza quali dati sono stati utilizzati in quale esperimento!

ClearML Interfaccia del set di dati

Preparare il set di dati

Il repository YOLOv5 supporta diversi set di dati utilizzando file YAML contenenti le loro informazioni. Per impostazione predefinita, i set di dati vengono scaricati nella cartella ../datasets rispetto alla cartella principale del repository. Quindi, se si è scaricato il file coco128 utilizzando il link nello YAML o con gli script forniti da yolov5, si ottiene questa struttura di cartelle:

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

Ma questo può essere qualsiasi set di dati che si desidera. Sentitevi liberi di usare i vostri, purché vi atteniate a questa struttura di cartelle.

Quindi,⚠️copy il file YAML corrispondente alla radice del dataset folder⚠️.Questo file YAML contiene le informazioni di cui ClearML avrà bisogno per utilizzare correttamente il dataset. Si può fare anche da soli, naturalmente, basta seguire la struttura degli YAML di esempio.

Fondamentalmente abbiamo bisogno delle seguenti chiavi: path, train, test, val, nc, names.

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

Caricare il set di dati

Per inserire il dataset in ClearML come dataset versionato, accedere alla cartella principale del dataset ed eseguire il seguente comando:

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

Il comando clearml-data sync è in realtà un comando abbreviato. È anche possibile eseguire questi comandi uno dopo l'altro:

# 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

Eseguire l'addestramento con un set di dati ClearML

Ora che si dispone di un dataset ClearML , è possibile utilizzarlo in modo molto semplice per addestrare modelli YOLOv5 🚀 personalizzati!

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


👀 Ottimizzazione degli iperparametri

Ora che abbiamo i nostri esperimenti e i dati in versione, è il momento di dare un'occhiata a ciò che possiamo costruire sopra!

Utilizzando le informazioni sul codice, i pacchetti installati e i dettagli dell'ambiente, l'esperimento stesso è ora completamente riproducibile. Infatti, ClearML consente di clonare un esperimento e di modificarne i parametri. Possiamo poi eseguirlo di nuovo con i nuovi parametri in modo automatico: questo è ciò che fa HPO!

Per eseguire l'ottimizzazione degli iperparametri a livello locale, abbiamo incluso uno script già pronto. Assicuratevi che un compito di addestramento sia stato eseguito almeno una volta, in modo che si trovi nel gestore degli esperimenti di ClearML . In sostanza, lo cloneremo e modificheremo i suoi iperparametri.

È necessario inserire l'ID di questo file template task nello script che si trova all'indirizzo utils/loggers/clearml/hpo.py e poi eseguirlo :) È possibile modificare task.execute_locally() a task.execute() di metterlo in una coda di ClearML e di farlo lavorare da un agente remoto.

# 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

🤯 Esecuzione remota (avanzata)

L'esecuzione di HPO in locale è davvero comoda, ma se invece volessimo eseguire i nostri esperimenti su una macchina remota? Forse si ha accesso a una macchina GPU molto potente in loco, oppure si dispone di un budget per utilizzare le GPU del cloud. È qui che entra in gioco l'agente ClearML . Scoprite cosa può fare l'agente qui:

In breve: ogni esperimento tracciato dall'experiment manager contiene informazioni sufficienti per riprodurlo su una macchina diversa (pacchetti installati, modifiche non impegnate, ecc.). Un agente di ClearML fa proprio questo: ascolta una coda per i task in arrivo e quando ne trova uno, ricrea l'ambiente e lo esegue, continuando a riportare scalari, grafici ecc. al gestore degli esperimenti.

È possibile trasformare qualsiasi macchina (una macchina virtuale del cloud, una macchina locale GPU , il proprio portatile...) in un agente ClearML semplicemente eseguendo:

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

Clonazione, modifica e inserimento in lista

Con il nostro agente in esecuzione, possiamo fargli fare un po' di lavoro. Ricordate nella sezione HPO che possiamo clonare un task e modificare gli iperparametri? Possiamo farlo anche dall'interfaccia!

🪄 Clonare l'esperimento facendo clic con il tasto destro del mouse.

🎯 Modificate gli iperparametri in base a ciò che desiderate.

⏳ Inviare l'attività a una qualsiasi delle code facendo clic con il tasto destro del mouse.

Mettere in attesa un'attività dall'interfaccia utente

Esecuzione di un'attività in remoto

Ora è possibile clonare un task come abbiamo spiegato sopra, oppure semplicemente marcare lo script corrente aggiungendo task.execute_remotely() e al momento dell'esecuzione verrà messo in coda, affinché l'agente possa iniziare a lavorarci!

Per eseguire lo script di addestramento YOLOv5 da remoto, è sufficiente aggiungere questa riga allo script training.py dopo che il logger clearml è stato istanziato:

# ...
# 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
# ...

Quando si esegue lo script di addestramento dopo questa modifica, python esegue lo script fino a quella riga, dopodiché impacchetta il codice e lo invia alla coda!

Lavoratori in autoscala

ClearML è dotato anche di autoscaler! Questo strumento avvia automaticamente nuove macchine remote nel cloud di vostra scelta (AWS, GCP, Azure) e le trasforma in agenti ClearML per voi ogni volta che vengono rilevati esperimenti in coda. Una volta elaborate le attività, l'autoscaler spegnerà automaticamente le macchine remote e voi smetterete di pagare!

Guardate il video di avvio degli autoscaler qui sotto.

Guarda il video

📅C reato 1 anno fa ✏️ Aggiornato 2 mesi fa

Commenti