Vai al contenuto

ClearML Integrazione

Chiaro|MLChiaro|ML

Informazioni su ClearML

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

🔨 Tieni traccia di ogni sessione di allenamento di YOLOv5 nel gestore degli esperimenti.

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

🔦 Allenamento e monitoraggio a distanza dei tuoi allenamenti su YOLOv5 con l'Agente ClearML

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

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


E molto altro ancora. Sta a te decidere quanti di questi strumenti vuoi utilizzare, puoi limitarti al gestore degli esperimenti o concatenarli tutti insieme in una pipeline impressionante!

ClearML cruscotto scalare



🦾 Impostare le cose

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

Puoi iscriverti gratuitamente al servizio di hosting diClearML oppure creare il tuo server personale, vedi qui. Anche il server è open-source, quindi anche se hai a che fare con dati sensibili, dovresti essere a posto!

  • Installa il programma clearml python pacchetto:

    pip install clearml
    
  • Connetti l'SDK ClearML al server creando le credenziali (vai in alto a destra su Impostazioni -> Area di lavoro -> Crea nuove credenziali), quindi esegui il comando qui sotto e segui le istruzioni:

    clearml-init
    

Ecco fatto! Hai finito 😎


🚀 Formazione YOLOv5 Con ClearML

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

pip install clearml>=1.2.0

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

Se vuoi cambiare la schermata project_name o task_name, usa il pulsante --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 fai attenzione quando utilizzi / nel nome del tuo progetto!

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

o con un nome di progetto e 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 catturerà:

  • Codice sorgente + modifiche non impegnate
  • Pacchetti installati
  • (Iper)parametri
  • File modello (usa --save-period n per salvare un checkpoint ogni n epoche)
  • Uscita della 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 come il correlogramma delle etichette e la matrice di confusione
  • Immagini con riquadri di delimitazione per epoca
  • Mosaico per epoca
  • Immagini di convalida per epoch

Sono tanti, vero? 🤯 Ora possiamo visualizzare tutte queste informazioni nell'interfaccia utente di ClearML per avere una visione d'insieme dei progressi della formazione. Aggiungi colonne personalizzate alla visualizzazione della tabella (come ad esempio mAP_0,5) in modo da poter ordinare facilmente il modello più performante. Oppure seleziona più esperimenti e confrontali direttamente!

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

🔗 Gestione della versione del dataset

In genere, è buona norma che la versione dei dati sia separata da quella del codice e rende più facile 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 disponibili. Inoltre, questo flusso di lavoro salva anche l'ID del dataset utilizzato come parte dei parametri dell'attività, così saprai sempre con certezza quali dati sono stati utilizzati in quale esperimento!

ClearML Interfaccia del set di dati

Prepara il tuo 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 hai 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 può trattarsi di qualsiasi set di dati che desideri. Sentiti libero di usare i tuoi, a patto di rispettare questa struttura di cartelle.

Quindi,⚠️copy il file YAML corrispondente alla radice del set di dati folder⚠️.Questo file YAML contiene le informazioni di cui ClearML avrà bisogno per utilizzare correttamente il dataset. Naturalmente puoi creare anche questo file da solo, basta che segua la struttura degli YAML di esempio.

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

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

Carica il tuo set di dati

Per inserire questo set di dati in ClearML come set di dati con versione, vai alla cartella principale del set di dati ed esegui il seguente comando:

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

Il comando clearml-data sync è in realtà un comando abbreviato. Puoi anche 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

Esegui l'addestramento con un dataset ClearML

Ora che hai un dataset ClearML , puoi usarlo 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 nostri 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 ti permette di clonare un esperimento e di modificarne i parametri. Possiamo poi eseguire di nuovo l'esperimento con i nuovi parametri in modo automatico: questo è in pratica ciò che fa HPO!

Per eseguire l'ottimizzazione degli iperparametri a livello locale, abbiamo incluso uno script già pronto per te. Assicurati che un compito di addestramento sia stato eseguito almeno una volta, in modo che sia presente nel gestore degli esperimenti di ClearML ; in pratica lo cloneremo e modificheremo i suoi iperparametri.

Dovrai inserire l'ID di questo file template task nello script che si trova all'indirizzo utils/loggers/clearml/hpo.py e poi eseguirlo :) Puoi cambiare task.execute_locally() a task.execute() per metterlo in una coda di ClearML e far sì che un agente remoto ci lavori sopra.

# 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 hai accesso a una macchina con GPU molto potente o hai un budget per utilizzare le GPU del cloud. È qui che entra in gioco l'agente ClearML . Scopri cosa può fare l'agente qui:

In breve: ogni esperimento tracciato dal gestore degli esperimenti 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.

Puoi trasformare qualsiasi macchina (una VM del cloud, una GPU locale, il tuo laptop...) 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 funzione, possiamo fargli fare un po' di lavoro. Ricordi nella sezione HPO che possiamo clonare un'attività e modificare gli iperparametri? Possiamo farlo anche dall'interfaccia!

Clona l'esperimento cliccando con il tasto destro del mouse.

🎯 Modifica gli iperparametri in base a ciò che vuoi che siano

⏳ Metti in attesa l'attività in una qualsiasi delle code facendo clic con il tasto destro del mouse.

Metti in attesa un'attività dall'interfaccia utente

Esecuzione di un'attività in remoto

Ora puoi clonare un task come abbiamo spiegato sopra, oppure semplicemente contrassegnare il tuo script attuale 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, devi solo 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 formazione dopo questa modifica, python eseguirà lo script fino a quella riga, dopodiché impacchetterà il codice e lo invierà alla coda!

Lavoratori in autoscala

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

Guarda il video di avvio degli autoscaler qui sotto.

Guarda il video



Creato 2023-11-12, Aggiornato 2024-04-18
Autori: glenn-jocher (6), RizwanMunawar (1)

Commenti