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
Esplora la nostra partnership con ClearML per un'esperienza Ultralytics YOLOv5 ottimizzata, con integrazione ML fluida, monitoraggio 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: una toolbox open-source progettata per farti risparmiare tempo.
Con la missione di accelerare l'adozione dell'ML, ClearML rende l'ML facilmente integrabile in qualsiasi prodotto software e hardware.
Questa integrazione rende ancora più semplice addestrare un modello YOLOv5 e utilizzare il gestore di esperimenti ClearML per tracciarlo automaticamente. Puoi facilmente specificare un ID di versione del dataset ClearML come input di dati e verrà automaticamente utilizzato per addestrare il tuo modello.
Porta il monitoraggio dei tuoi esperimenti a un livello superiore
Traccia ogni esecuzione di addestramento di YOLOv5 nel gestore degli esperimenti.
Gestisci le versioni e accedi facilmente ai tuoi dati di training personalizzati con lo strumento integrato ClearML Data Versioning.
Ottieni la mAP migliore utilizzando l'ottimizzazione degli iperparametri di ClearML.
Trasforma il tuo modello YOLOv5 appena addestrato in un'API con pochi comandi usando 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 traccia dei tuoi esperimenti e dati, ClearML deve comunicare con un server. Hai due opzioni per questo: registrarti gratuitamente al servizio ClearML Hosted o configurare il tuo server, vedi qui.
Anche il server è open-source, quindi se hai a che fare con dati sensibili, non ci sono problemi!
Installa il pacchetto python clearml: 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 seguente e segui le istruzioni: clearml-init
Et voilà! Sei pronto per iniziare...
Addestramento di YOLOv5 con ClearML
Per abilitare il tracciamento degli esperimenti ClearML, è sufficiente installare il pacchetto pip ClearML.
pip install clearml
Ciò consentirà l'integrazione con lo script di training YOLOv5. Ogni esecuzione di training d'ora in poi verrà acquisita e archiviata dal gestore di esperimenti ClearML. Se desideri modificare project_name o task_name, vai al nostro logger personalizzato, dove puoi modificarlo: utils/loggers/clearml/clearml_utils.py
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 nella ClearML UI per avere una panoramica dei nostri progressi di addestramento. Aggiungi colonne personalizzate alla visualizzazione tabellare (come ad esempio mAP_0.5) in modo da poter ordinare facilmente il modello con le migliori prestazioni. Oppure seleziona più esperimenti e confrontali 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 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 set di dati coco128 utilizzando il link nel file YAML o con gli script forniti da yolov5, otterrai 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, ⚠️copiare il file YAML corrispondente nella root della cartella del dataset⚠️. Questi file YAML contengono le informazioni necessarie a ClearML per utilizzare correttamente il dataset. Naturalmente, è possibile crearli autonomamente, 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. Infatti, ClearML ti consente di clonare un esperimento e persino di modificarne i parametri. Possiamo quindi semplicemente eseguirlo di nuovo con questi nuovi parametri automaticamente, questo è fondamentalmente ciò che fa HPO!
Per eseguire l'ottimizzazione degli iperparametri localmente, abbiamo incluso uno script predefinito per te. Assicurati solo che un'attività di addestramento sia stata eseguita almeno una volta, in modo che sia nel gestore degli esperimenti ClearML, essenzialmente la cloneremo e cambieremo i suoi iperparametri.
Dovrai inserire l'ID di questo task template nello script che trovi in utils/loggers/clearml/hpo.py e poi eseguirlo. Puoi cambiare task.execute_locally() in task.execute() per metterlo in una coda ClearML e far lavorare un agente remoto.
# Per usare optuna, installalo prima, altrimenti puoi cambiare l'ottimizzatore in RandomSearch pip install optuna python utils\/loggers\/clearml\/hpo.py
Esecuzione remota (Avanzato)
Eseguire HPO localmente è davvero utile, ma cosa succede se vogliamo eseguire i nostri esperimenti su una macchina remota? Forse hai accesso a una macchina GPU molto potente in loco, oppure hai un budget per utilizzare GPU cloud. È qui che entra in gioco ClearML Agent.
In breve: ogni esperimento tracciato dall'experiment manager contiene informazioni sufficienti per riprodurlo su una macchina diversa (pacchetti installati, modifiche non committate, ecc.). Quindi, un agente ClearML fa proprio questo: ascolta una coda per le attività in arrivo e, quando ne trova una, ricrea l'ambiente e la esegue, riportando comunque scalari, grafici, ecc. all'experiment manager.
Puoi trasformare qualsiasi macchina (una VM cloud, una macchina GPU locale, il tuo laptop) in un agente ClearML semplicemente eseguendo:
clearml-agent daemon --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 da remoto, tutto quello che devi fare è 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 training dopo questa modifica, Python eseguirà lo script fino a quella riga, dopodiché impacchetterà il codice e lo invierà alla coda!
Worker con autoscaling
ClearML include anche auto scaler! Questo strumento avvierà automaticamente nuove macchine remote nel cloud di tua scelta (AWS, GCP, Azure) e le trasformerà in agenti ClearML per te ogni volta che vengono rilevati esperimenti nella coda. Una volta elaborate le attività, l'auto scaler spegnerà automaticamente le macchine remote e tu smetterai di pagare! Guarda il video introduttivo sugli auto scaler qui sotto.