Cliccando su “Accetta tutti i cookie”, l'utente accetta di memorizzare i cookie sul proprio dispositivo per migliorare la navigazione del sito, analizzare l'utilizzo del sito e assistere le nostre attività di marketing. Maggiori informazioni
Impostazioni dei cookie
Cliccando su “Accetta tutti i cookie”, l'utente accetta di memorizzare i cookie sul proprio dispositivo per migliorare la navigazione del sito, analizzare l'utilizzo del sito e assistere le nostre attività di marketing. Maggiori informazioni
Scoprite la nostra partnership con ClearML per un'esperienza Ultralytics YOLOv5 migliorata con una perfetta integrazione del ML, il monitoraggio degli esperimenti e molto altro.
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 pacchetto di strumenti open-source progettato 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'allenamento di un YOLOv5 e utilizzare il gestore di esperimenti ClearML per track automaticamente. È possibile specificare facilmente l'ID di una versione del dataset ClearML come input di dati, che verrà automaticamente utilizzato per addestrare il modello.
Porta il monitoraggio dei tuoi 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.
Spetta a te decidere quanti di questi strumenti utilizzare: puoi limitarti all'experiment manager oppure concatenarli tutti in una pipeline straordinaria.
Impostazione
Per tenere track 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 hai a che fare con dati sensibili, non ci sono problemi!
Installare il pacchettopython 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 sottostante e seguire le istruzioni: clearml
Et voilà! Sei pronto 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: clearml.py
File del modello (utilizzare --save-period n per salvare un checkpoint ogni n epoche)
Output della console
ScalarimAP.5, mAP.5:0.95, precisione, richiamo, perdite, tassi di apprendimento, ...)
Informazioni generali come dettagli della macchina, runtime, data di creazione, ecc.
Tutti i grafici prodotti, come il correlogramma delle etichette e la matrice di confusione.
Immagini con bounding box per epoca
Mosaico per epoca
Immagini di convalida per epoca
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,5) in modo da poter ordinare facilmente il modello più performante. Oppure selezionare più esperimenti e confrontarli direttamente!
C'è ancora di più che possiamo fare con tutte queste informazioni, come l'ottimizzazione degli iperparametri e l'esecuzione remota, quindi continua a leggere per scoprire come!
Gestione delle versioni del dataset
Generalmente, versionare i dati separatamente dal codice è una buona idea e semplifica anche l'acquisizione dell'ultima versione. Questo repository supporta la fornitura di un ID di versione del set di dati 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à, quindi sarai sempre sicuro di quali dati sono stati utilizzati in quale esperimento!
Prepara il tuo dataset
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 utilizzando il link nello YAML o con gli script forniti da yolov5, si ottiene questa struttura di cartelle:
Ma questo può essere qualsiasi dataset tu voglia. Sentiti libero di usare il tuo, purché tu mantenga 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 cosa 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 clearml.py e poi eseguirlo. È possibile cambiare task.execute_locally() in task.execute() per metterlo 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 clearml.py
Esecuzione remota (Avanzato)
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 .
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 GPU locale, il proprio laptop) in un agente ClearML semplicemente eseguendo:
demone clearml--queue [--docker]
Clonazione, modifica e accodamento
Con il nostro agente in esecuzione, possiamo assegnargli del lavoro. Ricordi dalla sezione HPO che possiamo clonare un'attività e modificare gli iperparametri? Possiamo farlo anche dall'interfaccia!
🪄 Clona l'esperimento facendo clic con il pulsante destro del mouse
🎯 Modifica gli iperparametri in base a ciò che desideri
⏳ Aggiungi l'attività a una qualsiasi delle code facendo clic destro su di essa
Esecuzione remota di un'attività
Ora puoi clonare un'attività come abbiamo spiegato sopra, o semplicemente contrassegnare il tuo script corrente aggiungendo task.execute_remotely() e all'esecuzione, verrà inserito in una coda, affinché l'agente inizi a lavorarci!
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!
Worker con autoscaling
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'autoscaler spegnerà automaticamente le macchine remote e voi smetterete di pagare! Guardate il video di avvio dell'autoscaler qui sotto.