Facendo clic su "Accetta tutti i cookie", l'utente accetta la memorizzazione dei cookie sul proprio dispositivo per migliorare la navigazione del sito, analizzarne l'utilizzo e contribuire alle nostre iniziative di marketing. Per saperne di più
Impostazioni dei cookie
Facendo clic su "Accetta tutti i cookie", l'utente accetta la memorizzazione dei cookie sul proprio dispositivo per migliorare la navigazione del sito, analizzarne l'utilizzo e contribuire alle nostre iniziative di marketing. Per saperne di più
Esplorate la nostra partnership con ClearML per un'esperienza Ultrlaytics YOLOv5 migliorata con un'integrazione ML perfetta, il tracciamento degli esperimenti e altro ancora.
In Ultralytics collaboriamo commercialmente con altre startup per aiutarci a finanziare la ricerca e lo sviluppo dei nostri fantastici strumenti open-source, come YOLOv5, per mantenerli gratuiti per tutti. Questo articolo può contenere link di affiliazione a tali partner.
ClearML è il nostro nuovo partner: un insieme di strumenti open-source progettati per farvi risparmiare tempo.
Con la missione di accelerare l'adozione del ML, ClearML rende possibile l'integrazione del ML in qualsiasi prodotto software e hardware.
Questa integrazione rende ancora più semplice l'addestramento di un modello YOLOv5 e l'utilizzo del gestore di esperimenti ClearML per tracciarlo automaticamente. È possibile specificare facilmente l'ID di una versione del dataset ClearML come input di dati e questo verrà automaticamente utilizzato per addestrare il modello.
Portate il monitoraggio degli esperimenti a un livello superiore
Traccia ogni allenamento YOLOv5 nel gestore degli esperimenti.
Eseguite le versioni e accedete facilmente ai vostri dati di formazione personalizzati con lo strumento integrato di versionamento dei dati ClearML.
Ottenere la migliore mAP utilizzando l'ottimizzazione degli iperparametri di ClearML.
Trasformate il vostro modello YOLOv5 appena addestrato in un'API con pochi comandi utilizzando ClearML Serving.
Sta a voi decidere quanti di questi strumenti volete usare, potete limitarvi al gestore di esperimenti o concatenarli tutti insieme in una pipeline impressionante.
Impostazione delle cose
Per tenere traccia degli esperimenti e dei dati, ClearML deve comunicare con un server. A questo scopo, avete due possibilità: iscrivervi gratuitamente al servizio ClearML Hosted Service o creare un vostro server, vedi qui.
Anche il server è open-source, quindi se avete a che fare con dati sensibili, non è un problema!
Installare il pacchetto python clearml: pip install clearml
Collegare l'SDK ClearML al server creando le credenziali (andare in alto a destra su Impostazioni -> Spazio di lavoro -> Crea nuove credenziali), quindi eseguire il comando qui sotto e seguire le istruzioni: clearml-init
E voilà! Siete pronti per iniziare...
Allenare YOLOv5 con ClearML
Per abilitare il tracciamento degli esperimenti ClearML, è sufficiente installare il pacchetto pip ClearML.
pip installare clearml
Ciò consentirà l'integrazione con lo script di allenamento YOLOv5. D'ora in poi, ogni sessione di allenamento sarà catturata e memorizzata dal gestore di esperimenti ClearML. Se si vuole cambiare il nome_progetto o il nome_task, si può andare al nostro logger personalizzato, dove è possibile modificarlo: utils/loggers/clearml/clearml_utils.py
File del modello (usare --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, 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
Non male! Ora possiamo visualizzare tutte queste informazioni nell'interfaccia utente di ClearML per avere una panoramica dei progressi dell'addestramento. 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 per scoprire come fare!
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 farà in modo 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!
Preparare il set di dati
Il repository YOLOv5 supporta una serie di insiemi di dati diversi 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 dataset coco128 usando il link nello YAML o con gli script forniti da yolov5, si ottiene questa struttura di cartelle:
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.
Successivamente, ⚠️copy il file YAML corrispondente alla radice del dataset folder⚠️. Questi file YAML contengono le informazioni di cui ClearML avrà bisogno per utilizzare correttamente il dataset. Naturalmente, si possono creare anche da soli, basta seguire la struttura degli YAML di esempio.
Ora che abbiamo i nostri esperimenti e la versione dei dati, è 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. In effetti, ClearML consente di clonare un esperimento e di modificarne i parametri. Possiamo quindi eseguirlo di nuovo con i nuovi parametri in modo automatico, come 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 sia presente nel gestore degli esperimenti di ClearML; in sostanza, lo cloneremo e modificheremo i suoi iperparametri.
È necessario inserire l'ID di questo task modello nello script che si trova in utils/loggers/clearml/hpo.py e poi eseguirlo. È possibile modificare task.execute_locally() in task.execute() per inserirlo in una coda ClearML e far sì che un agente remoto ci lavori sopra.
# Per usare optuna, installarlo prima, altrimenti si può cambiare l'ottimizzatore in RandomSearch pip install optuna python utils/loggers/clearml/hpo.py
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 con GPU molto potente in loco o si dispone di un budget per utilizzare le GPU del cloud. È qui che entra in gioco l'agente ClearML.
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 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 con GPU locale, il proprio laptop ... ) in un agente ClearML semplicemente eseguendo:
clearml-agent daemon --queue [--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.
Esecuzione di un'attività in remoto
Ora è possibile clonare un task, come spiegato sopra, o semplicemente marcare lo script corrente aggiungendo task.execute_remotely() e, al momento dell'esecuzione, verrà messo in coda, affinché l'agente inizi a lavorare!
Per eseguire lo script di addestramento YOLOv5 in 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 scaler automatici! 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 che le attività sono state elaborate, l'auto scaler spegnerà automaticamente le macchine remote e voi smetterete di pagare! Guardate il video di avvio dell'autoscaler qui sotto.