Addestra e monitora da remoto Ultralytics YOLOv5 con ClearML
Scopri la nostra partnership con ClearML per un'esperienza Ultralytics YOLOv5 migliorata, con integrazione ML fluida, monitoraggio degli esperimenti e altro ancora.

Noi di Ultralytics collaboriamo commercialmente con altre startup per contribuire a finanziare la ricerca e lo sviluppo dei nostri straordinari strumenti open source, come YOLOv5, così da mantenerli gratuiti per tutti. Questo articolo può contenere link affiliati a tali partner.
ClearML è il nostro partner più recente: un toolbox open source progettato per farti risparmiare tempo.
Con la missione di accelerare l'adozione del ML, ClearML rende il ML facile da integrare in qualsiasi prodotto software e hardware.
Questa integrazione rende ancora più semplice addestrare un modello YOLOv5 e usare il gestore degli esperimenti ClearML per monitorarlo automaticamente. Puoi specificare facilmente un ID di versione di un dataset ClearML come input dei dati, che verrà usato automaticamente per addestrare il tuo modello.
Porta il monitoraggio dei tuoi esperimenti a un livello superiore#
- Monitora ogni esecuzione di addestramento di YOLOv5 nel gestore degli esperimenti.
- Crea versioni e accedi facilmente ai tuoi dati di addestramento personalizzati con lo strumento integrato di versioning dei dati di ClearML.
- Ottieni il miglior mAP possibile usando l'ottimizzazione degli iperparametri di ClearML.
- Trasforma il tuo 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 concatenarli tutti in una pipeline straordinaria.
Configurazione#
Per monitorare i tuoi esperimenti e i tuoi dati, ClearML deve comunicare con un server. Hai due opzioni: registrarti gratuitamente al servizio ClearML Hosted oppure configurare un server personale; consulta la documentazione sulla distribuzione di ClearML Server.
Anche il server è open source, quindi se gestisci dati sensibili non è un problema!
- Installa il pacchetto Python clearml:
pip install clearml - Collega l'SDK ClearML al server creando le credenziali (vai in alto a destra su Settings → Workspace → Create new credentials), quindi esegui il comando seguente e segui le istruzioni:
clearml-init
Ecco fatto! Ora puoi iniziare...
Addestrare YOLOv5 con ClearML#
Per abilitare il monitoraggio degli esperimenti ClearML, installa semplicemente il pacchetto pip ClearML.
pip install clearmlQuesto abiliterà l'integrazione con lo script di addestramento di YOLOv5. D'ora in poi, 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, dove puoi cambiarli: 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 (mAP_0.5, mAP_0.5:0.95, precision, recall, perdite, learning rate, ...)
- Informazioni generali come dettagli della macchina, durata dell'esecuzione, 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 validazione per epoca
Niente male! Ora possiamo visualizzare tutte queste informazioni nell'interfaccia utente di ClearML per avere una panoramica dei progressi dell'addestramento. Aggiungi colonne personalizzate alla vista tabellare (come, ad esempio, mAP_0.5) per ordinare facilmente i modelli dalle prestazioni migliori. Oppure seleziona più esperimenti e confrontali direttamente!
Con tutte queste informazioni possiamo fare ancora di più, ad esempio ottimizzare gli iperparametri ed eseguire attività da remoto, quindi 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ì è facile acquisire anche la versione più recente. Questo repository supporta la specifica di un ID di versione del dataset e si assicurerà di recuperare i dati se non sono ancora presenti. Inoltre, questo flusso di lavoro salva anche l'ID del dataset usato come parte dei parametri dell'attività, così saprai sempre con certezza quali dati sono stati usati in ogni esperimento!
Prepara il tuo dataset#
Il repository YOLOv5 supporta diversi dataset usando 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.txtMa può trattarsi di qualsiasi dataset tu desideri. Sentiti libero di usare il tuo, purché mantenga questa struttura di cartelle.
Successivamente, ⚠️copia il file YAML corrispondente nella cartella radice del dataset⚠️. Questi file YAML contengono le informazioni necessarie a ClearML per usare correttamente il dataset. Naturalmente puoi anche crearli tu: segui semplicemente la struttura dei file YAML di esempio.
In pratica, ci servono le seguenti chiavi: path, train, test, val, nc, names.
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ coco128.yaml # ← HERE!
|_ LICENSE
|_ README.txtCarica il tuo dataset#
Per importare questo dataset in ClearML come dataset con versioning, vai nella cartella radice del dataset ed esegui il comando seguente:
cd coco128
clearml-data sync --project YOLOv5 --name coco128 --folder .Il comando clearml-data sync è in realtà una forma abbreviata. 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 molto semplicemente 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 costruirci sopra!
Grazie alle informazioni sul codice, ai pacchetti installati e ai dettagli dell'ambiente, l'esperimento è ora completamente riproducibile. Infatti, ClearML ti consente di clonare un esperimento e persino di modificarne i parametri. Possiamo quindi eseguirlo nuovamente con questi nuovi parametri in modo automatico: è sostanzialmente questo che fa l'HPO!
Per eseguire localmente l'ottimizzazione degli iperparametri, abbiamo incluso uno script già pronto per te. Assicurati solo che un'attività di addestramento sia stata eseguita almeno una volta, così da trovarsi nel gestore degli esperimenti ClearML: in pratica la cloneremo e ne modificheremo gli iperparametri.
Dovrai inserire l'ID di questa attività modello nello script che si trova in utils/loggers/clearml/hpo.py, quindi eseguirlo. Puoi modificare task.execute_locally() in task.execute() per inserirla in una coda ClearML e fare in modo che sia un agente remoto a lavorarci.
# 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 da remoto (avanzata)#
Eseguire l'HPO localmente è davvero comodo, ma cosa succede se invece vogliamo eseguire i nostri esperimenti su una macchina remota? Potresti avere accesso a una macchina GPU molto potente in sede oppure disporre di un budget per usare GPU cloud. È qui che entra in gioco ClearML Agent.
Scopri qui cosa può fare l'agente:
In breve: ogni esperimento monitorato dal gestore degli esperimenti contiene informazioni sufficienti per riprodurlo su una macchina diversa (pacchetti installati, modifiche non sottoposte a commit, ecc.). Un agente ClearML fa proprio questo: ascolta una coda per ricevere nuove attività e, quando ne trova una, ricrea l'ambiente e la esegue continuando a riportare scalari, grafici, ecc. al gestore degli esperimenti.
Puoi trasformare qualsiasi macchina (una VM cloud, una macchina GPU locale, il tuo laptop) in un agente ClearML eseguendo semplicemente:
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 come desideri
⏳ Inserisci l'attività in una qualsiasi delle code facendo clic con il pulsante destro del mouse
Esecuzione remota di un'attività#
Ora puoi clonare un'attività come spiegato sopra oppure contrassegnare semplicemente lo script corrente aggiungendo task.execute_remotely(); al momento dell'esecuzione verrà inserito in una coda, così l'agente potrà iniziare a lavorarci!
Per eseguire da remoto lo script di addestramento di YOLOv5, devi solo aggiungere questa riga allo script train.py dopo che è stato istanziato il logger ClearML:
# ...
# 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 LINEHai domande? Unisciti alla nostra community e lascia oggi stesso la tua domanda!









