YOLO Vision 2026:

Integrazione di ClearML#

ClearML MLOps experiment tracking platform

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.

Dashboard delle metriche scalari di ClearML che mostra le metriche di training di YOLOv5

🦾 Configurazione#

ClearML deve comunicare con un server per tracciare i tuoi esperimenti e dati. Hai due opzioni:

Quindi installa il pacchetto Python clearml e collega l'SDK al tuo server:

pip install clearml

Genera le credenziali in Impostazioni → Spazio di lavoro → Crea nuove credenziali (in alto a destra nell'interfaccia utente di ClearML), quindi esegui:

clearml-init

Segui 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 clearml

Questo 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 --cache

Oppure con nomi personalizzati:

python train.py --project my_project --name my_training --img 640 --batch 16 --epochs 3 --data coco8.yaml --weights yolov5s.pt --cache

Ogni esecuzione cattura:

  • Codice sorgente e modifiche non commitate
  • Pacchetti installati
  • Iperparametri
  • Checkpoint del modello (usa --save-period n per salvare ogni n epoche)
  • 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.

Interfaccia di gestione delle versioni dei dataset ClearML

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.txt

Qualsiasi 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.txt

Carica 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 close

Addestra 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.py

Cambia task.execute_locally() in task.execute() per inviare il job a una coda ClearML affinché un agente remoto lo prelevi.

Dashboard HPO di ClearML con metriche YOLOv5

🤯 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.

Accoda un'attività dall'interfaccia utente

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:

Guarda il video

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.

Commenti