Integrazione di ClearML#
Informazioni su ClearML#
ClearML è una piattaforma MLOps open-source creata per ottimizzare i flussi di lavoro di machine learning e risparmiare tempo di ingegneria.
- 🔨 Traccia ogni esecuzione di addestramento YOLOv5 nel gestore degli esperimenti.
- 🔧 Gestisci le versioni e accedi ai tuoi dati di training personalizzati con lo strumento di versionamento dei dati ClearML integrato.
- 🔦 Addestra e monitora da remoto le esecuzioni di YOLOv5 utilizzando ClearML Agent.
- 🔬 Trova il miglior mAP con l'ottimizzazione degli iperparametri di ClearML.
- 🔭 Trasforma il tuo modello YOLOv5 addestrato in un'API con pochi comandi utilizzando ClearML Serving.
Usa quanti di questi strumenti ti servono: inizia solo con il gestore degli esperimenti o concatena tutto in una pipeline completa.

🦾 Configurazione#
ClearML deve comunicare con un server per tracciare i tuoi esperimenti e dati. Hai due opzioni:
- Registrati al ClearML Hosted Service gratuito, oppure
- Distribuisci il tuo server ClearML: è open-source, quindi rimane un'opzione valida anche per i dati sensibili.
Quindi installa il pacchetto Python clearml e collega l'SDK al tuo server:
pip install clearmlGenera le credenziali in Impostazioni → Spazio di lavoro → Crea nuove credenziali (in alto a destra nell'interfaccia utente di ClearML), quindi esegui:
clearml-initSegui le istruzioni. Fatto, la configurazione è completa.
🚀 Addestramento di YOLOv5 con ClearML#
Per abilitare il tracciamento degli esperimenti, installa il pacchetto pip di ClearML se non l'hai già fatto:
pip install clearmlQuesto abiliterà l'integrazione con lo script di training di YOLOv5. Ogni esecuzione di training d'ora in poi verrà acquisita e memorizzata dal gestore di esperimenti ClearML.
Per personalizzare i nomi del progetto e dell'attività, passa --project e --name a train.py. I valori predefiniti sono YOLOv5 e Training. ClearML utilizza / come delimitatore di sotto-progetto, quindi evita / nei nomi di progetto personalizzati.
python train.py --img 640 --batch 16 --epochs 3 --data coco8.yaml --weights yolov5s.pt --cacheOppure con nomi personalizzati:
python train.py --project my_project --name my_training --img 640 --batch 16 --epochs 3 --data coco8.yaml --weights yolov5s.pt --cacheOgni esecuzione cattura:
- Codice sorgente e modifiche non commitate
- Pacchetti installati
- Iperparametri
- Checkpoint del modello (usa
--save-period nper salvare ogninepoche) - Output della console
- Scalari (mAP_0.5, mAP_0.5:0.95, precisione, recall, perdite, tassi di apprendimento)
- Dettagli macchina, runtime e data di creazione
- Grafici generati come il correlogramma delle etichette e la matrice di confusione
- Immagini con riquadri delimitatori per epoca
- Visualizzazioni mosaic per epoca
- Immagini di validazione per epoca
Tutto compare nell'interfaccia utente di ClearML per consentirti di monitorare il training in un unico posto. Aggiungi colonne personalizzate (ad esempio, mAP_0.5) per ordinare in base al modello con le prestazioni migliori, oppure seleziona più esperimenti per confrontarli fianco a fianco.
Continua a leggere per l'ottimizzazione degli iperparametri e l'esecuzione remota.
🔗 Gestione delle versioni dei dataset#
Versionare i dati separatamente dal codice rende semplice recuperare l'ultima versione e assicura una piena riproducibilità. Questo repository accetta un ID di versione del dataset, recupera i dati automaticamente se mancano e registra l'ID come parametro dell'attività in modo che tu sappia sempre quali dati sono stati usati in quale esperimento.

Prepara il tuo dataset#
Il repository YOLOv5 supporta molti dataset tramite file di configurazione YAML. Per impostazione predefinita, i dataset vengono scaricati nella cartella ../datasets rispetto alla root del repository. Dopo aver scaricato coco128, la struttura delle cartelle appare così:
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ LICENSE
|_ README.txtQualsiasi dataset funziona, a patto che tu mantenga questa struttura.
Successivamente, copia il file YAML del dataset nella cartella principale del dataset: ClearML legge questo file per utilizzare correttamente il dataset. Puoi scrivere il tuo YAML seguendo il layout di esempio, assicurandoti che definisca path, train, test, val, nc e names.
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ coco128.yaml # <---- HERE
|_ LICENSE
|_ README.txtCarica il tuo dataset#
Per registrare il dataset come dataset ClearML versionato, spostati nella sua cartella root ed esegui:
cd ../datasets/coco128
clearml-data sync --project YOLOv5 --name coco128 --folder .clearml-data sync è un'abbreviazione per la seguente sequenza, che puoi anche eseguire esplicitamente:
# Add --parent <parent_dataset_id> to base this version on a previous one.
# Duplicate files are not re-uploaded.
clearml-data create --name coco128 --project YOLOv5
clearml-data add --files .
clearml-data closeAddestra su un dataset ClearML#
Con il dataset registrato, punta l'addestramento su di esso tramite ID:
python train.py --img 640 --batch 16 --epochs 3 --data clearml://YOUR_DATASET_ID --weights yolov5s.pt --cache👀 Ottimizzazione degli iperparametri#
Con esperimenti e dati versionati, puoi costruire sopra di essi. Poiché ogni esperimento tracciato cattura l'intero ambiente (codice, pacchetti installati e configurazione), le esecuzioni sono pienamente riproducibili. ClearML ti permette di clonare un esperimento, cambiare i suoi parametri e rieseguirlo automaticamente, che è la base dell'ottimizzazione degli iperparametri (HPO).
Per eseguire HPO localmente, usa lo script incluso. Per prima cosa assicurati che un'attività di addestramento esista nel gestore degli esperimenti: lo script la clona e varia i suoi iperparametri.
Inserisci l'ID dell'attività modello in utils/loggers/clearml/hpo.py, quindi esegui:
# Install Optuna or change the optimizer to RandomSearch.
pip install optuna
python utils/loggers/clearml/hpo.pyCambia task.execute_locally() in task.execute() per inviare il job a una coda ClearML affinché un agente remoto lo prelevi.

🤯 Esecuzione remota (Avanzato)#
Eseguire l'HPO in locale è comodo, ma spesso vorrai eseguire esperimenti su hardware più potente: una macchina GPU on-premise o un'istanza cloud. Questo è il ruolo del ClearML Agent:
Ogni esperimento tracciato contiene tutto il necessario per riprodurlo su un'altra macchina (pacchetti installati, modifiche non commitate e configurazione). Un agente ClearML ascolta una coda, raccoglie le attività in arrivo, ricrea l'ambiente, esegue il lavoro e trasmette scalari e grafici di ritorno al gestore degli esperimenti.
Trasforma qualsiasi macchina — una VM cloud, una box GPU locale o un laptop — in un agente ClearML con:
clearml-agent daemon --queue QUEUES_TO_LISTEN_TO [--docker]Clonazione, Modifica e Accodamento#
Con un agente in esecuzione, puoi assegnargli lavoro direttamente dall'interfaccia:
- 🪄 Fai clic destro su un esperimento e clonalo.
- 🎯 Modifica i suoi iperparametri.
- ⏳ Fai clic destro sull'attività clonata e accodala in una coda di destinazione.

Esecuzione di un'attività da remoto#
Puoi anche contrassegnare uno script in esecuzione per l'esecuzione remota in modo programmatico aggiungendo task.execute_remotely() dopo che il logger di ClearML è stato istanziato. Aggiungi la riga evidenziata a train.py:
# ...
# 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 None unless the user selected a ClearML dataset, in which case ClearML fills it in.
data_dict = loggers.clearml.data_dict
# ...Dopo questa modifica, l'esecuzione dello script di addestramento procede fino a quella riga, impacchetta il codice e lo invia alla coda.
Worker di autoscaling#
ClearML viene fornito con autoscaler che avviano macchine remote in AWS, GCP o Azure quando una coda ha esperimenti in sospeso, le convertono in agenti ClearML e le spengono al termine del lavoro, in modo da pagare solo per le risorse di calcolo effettivamente in uso.
Guarda il video introduttivo qui sotto:
Ulteriori informazioni#
Per ulteriori informazioni sull'integrazione di ClearML con i modelli Ultralytics, dai un'occhiata alla nostra guida all'integrazione di ClearML ed esplora come migliorare il tuo flusso di lavoro MLOps con altri strumenti di tracciamento degli esperimenti.