Addestra e monitora Ultralytics YOLOv5 da remoto con ClearML
Scopri come monitorare gli esperimenti, gestire le versioni dei dataset, ottimizzare gli iperparametri e addestrare modelli Ultralytics YOLOv5 su macchine remote con ClearML.
Nuvola Ladi6 min di lettura
Noi di Ultralytics collaboriamo a livello commerciale con altre startup per finanziare la ricerca e lo sviluppo dei nostri strumenti open source, come YOLOv5, e mantenerli gratuiti per tutti. Questo articolo potrebbe contenere link di affiliazione ai nostri partner.
ClearML è il nostro partner più recente: una raccolta di strumenti open source progettata per farti risparmiare tempo.
Con la missione di accelerare l'adozione del ML, ClearML rende facile integrare il ML in qualsiasi prodotto software o hardware.
Questa integrazione semplifica ulteriormente l'addestramento di un modello YOLOv5 e l'uso del gestore degli esperimenti ClearML per tracciarlo automaticamente. Puoi specificare facilmente come input dei dati l'ID di una versione del dataset ClearML, che verrà utilizzata automaticamente per addestrare il modello.
Porta il monitoraggio dei tuoi esperimenti a un livello superiore#
- Monitora ogni esecuzione di addestramento di YOLOv5 nel gestore degli esperimenti.
- Crea versioni dei tuoi dati di addestramento personalizzati e accedivi facilmente con lo strumento integrato ClearML Data Versioning.
- Ottieni il miglior mAP possibile con ClearML Hyperparameter Optimization.
- Trasforma il modello YOLOv5 appena addestrato in un’API con pochi comandi usando ClearML Serving.
Sta a te decidere quanti di questi strumenti usare: puoi limitarti al gestore degli esperimenti oppure collegarli tutti in una pipeline completa.
Configurazione#
Per tenere traccia dei tuoi esperimenti e dei tuoi dati, ClearML deve comunicare con un server. Hai due possibilità: registrarti gratuitamente al servizio ClearML Hosted oppure configurare un server personale.
Anche il server è open source, quindi non ci sono problemi se lavori con dati sensibili!
- Installa il pacchetto ClearML per Python:
pip install clearml - Collega ClearML SDK al server creando le credenziali (in alto a destra, vai su Settings → Workspace → Create new credentials), poi esegui il comando seguente e segui le istruzioni:
clearml-init
Ora puoi iniziare.
Addestrare YOLOv5 con ClearML#
Per attivare il tracciamento degli esperimenti ClearML, installa semplicemente il pacchetto pip ClearML.
pip install clearmlIn questo modo si abilita l’integrazione con lo script di addestramento YOLOv5. Da questo momento, ogni esecuzione di addestramento verrà acquisita e archiviata dal gestore degli esperimenti ClearML. Se vuoi modificare project_name o task_name, vai al nostro logger personalizzato e cambiali: utils/loggers/clearml/clearml_utils.py
python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt --cacheVerranno acquisiti:
- Codice sorgente + modifiche non sottoposte a commit
- Pacchetti installati
- (Iper)parametri
- File del modello (usa --save-period n per salvare un checkpoint ogni n epoche)
- Output della console
- Scalari (mAP50, mAP50-95, precisione, richiamo, perdite, tassi di apprendimento, ...)
- Informazioni generali come dettagli della macchina, runtime, data di creazione, ecc.
- Tutti i grafici generati, come il correlogramma delle etichette e la matrice di confusione
- Immagini con riquadri di delimitazione per epoca
- Mosaico per epoca
- Immagini di convalida per epoca
Ora possiamo visualizzare tutte queste informazioni nell'interfaccia utente di ClearML per avere una panoramica dei progressi dell'addestramento. Aggiungi colonne personalizzate alla visualizzazione tabellare (come mAP50) così puoi ordinare facilmente in base al modello con le prestazioni migliori. Oppure seleziona più esperimenti e confrontali direttamente!
Possiamo fare ancora di più con tutte queste informazioni, ad esempio ottimizzare gli iperparametri ed eseguire attività da remoto: continua a leggere per scoprire come!
Gestione delle versioni dei dataset#
In genere è una buona idea gestire le versioni dei dati separatamente dal codice; così è anche facile ottenere l'ultima versione. Questo repository permette di specificare l'ID di una versione del dataset e si assicura di scaricare i dati se non sono già presenti. Inoltre, questo flusso di lavoro salva l'ID del dataset utilizzato tra i parametri dell'attività, così saprai sempre con certezza quali dati sono stati usati in ciascun esperimento!
Prepara il tuo dataset#
Il repository YOLOv5 supporta diversi dataset tramite file YAML che ne contengono le informazioni. Per impostazione predefinita, i dataset vengono scaricati nella cartella ../datasets rispetto alla cartella radice del repository. Quindi, se hai scaricato il dataset COCO128 usando il link nel file YAML o gli script forniti da YOLOv5, ottieni questa struttura di cartelle:
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ LICENSE
|_ README.txtPuoi usare qualsiasi dataset. Sentiti libero di usare il tuo, purché mantenga questa struttura di cartelle.
Poi, copia il file YAML corrispondente nella cartella principale del dataset. Questi file YAML contengono le informazioni necessarie a ClearML per utilizzare correttamente il dataset. Naturalmente puoi anche crearne uno tu: basta seguire la struttura dei file YAML di esempio.
Il file YAML deve contenere le seguenti chiavi: path, train, test, val, nc e names.
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ coco128.yaml # ← HERE!
|_ LICENSE
|_ README.txtCarica il tuo dataset#
Per caricare questo dataset in ClearML come dataset con versione, vai nella cartella radice del dataset ed esegui il seguente comando:
cd coco128
clearml-data sync --project YOLOv5 --name coco128 --folder .Il comando clearml-data sync è in realtà una scorciatoia. Puoi anche eseguire questi comandi uno dopo l'altro:
# 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 closeEsegui l'addestramento usando un dataset ClearML#
Ora che hai un dataset ClearML, puoi usarlo per addestrare modelli YOLOv5 personalizzati.
python train.py --img 640 --batch 16 --epochs 3 --data clearml:// --weights yolov5s.pt --cacheOttimizzazione degli iperparametri#
Ora che abbiamo i nostri esperimenti e la versione dei dati, è il momento di vedere cosa possiamo realizzare partendo da qui!
Con le informazioni sul codice, i pacchetti installati e i dettagli dell'ambiente, l'esperimento è ora completamente riproducibile. ClearML consente anche di clonare un esperimento e modificarne i parametri. Possiamo quindi rieseguirlo automaticamente con i nuovi parametri: in sostanza, è ciò che fa l'HPO.
Per eseguire localmente l'ottimizzazione degli iperparametri, abbiamo incluso uno script già pronto. Assicurati solo che un'attività di addestramento sia stata eseguita almeno una volta e sia presente nel gestore degli esperimenti ClearML; lo script la clona e modifica gli iperparametri.
Dovrai inserire l'ID dell'attività modello nello script disponibile in utils/loggers/clearml/hpo.py, poi eseguirlo. Puoi modificare task.execute_locally() in task.execute() per inserirlo in una coda ClearML e farlo eseguire 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.pyEsecuzione remota (avanzata)#
Eseguire l'HPO localmente è molto comodo, ma cosa succede se vogliamo eseguire gli esperimenti su una macchina remota? Magari hai accesso a una GPU molto potente in sede oppure hai un budget da destinare alle GPU cloud. È qui che entra in gioco ClearML Agent.
Scopri qui cosa può fare l'agente:
In breve: ogni esperimento tracciato dal gestore degli esperimenti contiene informazioni sufficienti per riprodurlo su un'altra macchina (pacchetti installati, modifiche non sottoposte a commit, ecc.). ClearML Agent fa proprio questo: resta in ascolto di una coda in attesa di attività e, quando ne trova una, ricrea l'ambiente e la esegue, continuando a inviare valori scalari, grafici, ecc. al gestore degli esperimenti.
Puoi trasformare qualsiasi macchina (una VM cloud, una macchina locale con GPU o il tuo portatile) in un agente ClearML semplicemente eseguendo:
clearml-agent daemon --queue QUEUES_TO_LISTEN_TO [--docker]Clonazione, modifica e inserimento in coda#
Con l'agente in esecuzione, possiamo assegnargli del lavoro. Ricordi dalla sezione HPO che possiamo clonare un'attività e modificarne gli iperparametri? Possiamo farlo anche dall'interfaccia!
- Clona l'esperimento facendo clic con il tasto destro su di esso.
- Modifica gli iperparametri impostando i valori che vuoi.
- Aggiungi l'attività a una delle code facendo clic con il tasto destro su di essa.
Esecuzione remota di un'attività#
Ora puoi clonare un'attività come spiegato sopra oppure contrassegnare semplicemente lo script corrente aggiungendo task.execute_remotely(): quando lo eseguirai, verrà inserito in una coda, pronto per essere avviato dall'agente!
Per eseguire da remoto lo script di addestramento YOLOv5, ti basta aggiungere questa riga allo script train.py, dopo aver istanziato il logger ClearML:
# ...
# Loggers
data_dict = None
if RANK in {-1, 0}:
loggers = Loggers(save_dir, weights, opt, hyp, LOGGER) # istanza dei logger
if loggers.clearml:
loggers.clearml.task.execute_remotely(queue="my_queue") # <------ AGGIUNGI QUESTA RIGAHai domande? Unisciti alla nostra community e invia oggi stesso la tua domanda!
Scritto da
Commenti
Fai una domanda, condividi i tuoi risultati o aiuta qualcun altro.










