Vai al contenuto

Integrazione ClearML

Clear|MLClear|ML

Informazioni su ClearML

ClearML è una piattaforma MLOps open-source progettata per semplificare il tuo flusso di lavoro di machine learning e farti risparmiare tempo ⏱️.

🔨 Monitora ogni esecuzione di training di YOLOv5 nell'experiment manager.

🔧 Versiona e accedi facilmente ai tuoi dati di training personalizzati con lo strumento integrato ClearML Data Versioning Tool.

🔦 Esegui e monitora da remoto i tuoi training di YOLOv5 utilizzando ClearML Agent

🔬 Ottieni la migliore mAP possibile utilizzando ClearML Hyperparameter Optimization.

🔭 Trasforma il tuo modello YOLOv5 appena addestrato in un'API con pochi comandi utilizzando ClearML Serving.


E molto altro ancora. Sta a te decidere quanti di questi strumenti utilizzare: puoi limitarti all'experiment manager oppure concatenarli tutti in una pipeline eccezionale!

Dashboard degli scalari di ClearML



🦾 Configurazione

Per tenere traccia dei tuoi esperimenti e/o dati, ClearML deve comunicare con un server. Hai 2 opzioni per ottenerne uno:

Iscriviti gratuitamente al servizio in hosting ClearML oppure puoi configurare il tuo server ClearML. Anche il server è open source, quindi anche se hai a che fare con dati sensibili, dovresti essere a posto!

  • Installa il clearml pacchetto python:

    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
    

Questo è tutto! Hai finito 😎


🚀 Training di YOLOv5 con ClearML

Per abilitare il tracciamento degli esperimenti ClearML, è sufficiente installare il pacchetto pip ClearML.

pip install clearml

Ciò abiliterà 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 il project_name oppure task_name, usa il --project e --name argomenti del train.py script, per impostazione predefinita il progetto sarà chiamato YOLOv5 e l'attività Training. NOTA BENE: ClearML utilizza / come delimitatore per i sottoprogetti, quindi fai attenzione quando lo usi / nel nome del tuo progetto!

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

o con nome di progetto e attività personalizzati:

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

Questo acquisirà:

  • Codice sorgente + modifiche non committate
  • 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, precisione, recall, 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 riquadri di delimitazione per epoca
  • Mosaic per epoca
  • Immagini di convalida per epoca

È tanto, vero? 🤯 Ora, possiamo visualizzare tutte queste informazioni nella UI di ClearML per avere una panoramica dei nostri progressi nel training. Aggiungi colonne personalizzate alla visualizzazione a tabella (come ad esempio mAP_0.5) in modo da poter ordinare facilmente in base al 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 se vuoi vedere come funziona!

🔗 Gestione della versione del set di dati

Generalmente, è consigliabile controllare la versione dei dati separatamente dal codice, in modo da poter acquisire facilmente l'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à, in modo da sapere sempre con certezza quali dati sono stati utilizzati in quale esperimento!

Interfaccia dataset ClearML

Prepara il tuo set di dati

Il repository YOLOv5 supporta diversi dataset utilizzando file YAML contenenti le loro informazioni. Per impostazione predefinita, i dataset vengono scaricati nella ../datasets cartella rispetto alla cartella principale del repository. Quindi, se hai scaricato i coco128 dataset utilizzando il link nel file YAML o con gli script forniti da yolov5, si ottiene questa struttura di cartelle:

..
|_ yolov5
|_ datasets
    |_ coco128
        |_ images
        |_ labels
        |_ LICENSE
        |_ README.txt

Ma questo può essere qualsiasi dataset tu voglia. Sentiti libero di usare il tuo, purché tu mantenga questa struttura di cartelle.

Successivamente, ⚠️copia il file YAML corrispondente nella root della cartella del dataset⚠️. Questo file YAML contiene le informazioni di cui ClearML avrà bisogno per utilizzare correttamente il dataset. Puoi anche crearlo tu stesso, ovviamente, basta seguire la struttura degli YAML di esempio.

Fondamentalmente abbiamo bisogno delle seguenti chiavi: path, train, test, val, nc, names.

..
|_ yolov5
|_ datasets
    |_ coco128
        |_ images
        |_ labels
        |_ coco128.yaml  # <---- HERE!
        |_ LICENSE
        |_ README.txt

Carica il tuo dataset

Per inserire questo dataset in ClearML come dataset versionato, vai alla cartella principale del dataset ed esegui il seguente comando:

cd coco128
clearml-data sync --project YOLOv5 --name coco128 --folder .

Il comando clearml-data sync è in realtà un comando abbreviato. Potresti anche eseguire questi comandi uno dopo l'altro:

# Optionally add --parent <parent_dataset_id> 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 close

Esegui l'addestramento usando un dataset ClearML

Ora che hai un set di dati ClearML, puoi usarlo molto semplicemente per addestrare modelli YOLOv5 personalizzati 🚀!

python train.py --img 640 --batch 16 --epochs 3 --data clearml://YOUR_DATASET_ID --weights yolov5s.pt --cache


👀 Ottimizzazione degli iperparametri

Ora che abbiamo versionato i nostri esperimenti e i dati, è il momento di dare un'occhiata a cosa possiamo costruire sopra!

Utilizzando le informazioni del 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 rieseguirlo automaticamente con questi nuovi parametri: questo è fondamentalmente ciò che fa HPO!

Per eseguire l'ottimizzazione degli iperparametri in locale, abbiamo incluso uno script predefinito. Assicurati che un'attività di addestramento sia stata eseguita almeno una volta, in modo che sia nel gestore degli esperimenti ClearML; in pratica, la cloneremo e ne modificheremo gli iperparametri.

Dovrai inserire l'ID di questo template task nello script che si trova in utils/loggers/clearml/hpo.py e poi eseguilo. Puoi modificare task.execute_locally() a task.execute() per inserirlo in una coda ClearML e far lavorare un agente remoto.

# To use optuna, install it first, otherwise you can change the optimizer to just be RandomSearch
pip install optuna
python utils/loggers/clearml/hpo.py

HPO

🤯 Esecuzione remota (avanzata)

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 le GPU cloud. È qui che entra in gioco ClearML Agent. Scopri cosa può fare l'agente qui:

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 agent ClearML fa proprio questo: ascolta una coda per le attività in entrata e, quando ne trova una, ricrea l'ambiente e lo 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 QUEUES_TO_LISTEN_TO [--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 su di esso

🎯 Modifica gli iperparametri in base a ciò che desideri.

⏳ Accoda l'attività a una qualsiasi delle code facendo clic destro su di essa

Accoda un'attività dall'interfaccia utente

Esecuzione remota di un'attività

Ora puoi clonare un'attività come 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!

Ridimensionamento automatico dei worker

ClearML include anche autoscaler! Questo strumento avvierà automaticamente nuove macchine remote nel cloud di tua scelta (AWS, GCP, Azure) e le trasformerà in agent ClearML per te ogni volta che vengono rilevati esperimenti nella coda. Una volta elaborate le attività, l'autoscaler spegnerà automaticamente le macchine remote e tu smetterai di pagare!

Guarda il video introduttivo sugli autoscaler qui sotto.

Guarda il video

Scopri di più

Per ulteriori informazioni sull'integrazione di ClearML con i modelli Ultralytics, consulta la nostra guida all'integrazione di ClearML ed esplora come puoi migliorare il tuo flusso di lavoro MLOps con altri strumenti di monitoraggio degli esperimenti.



📅 Creato 1 anno fa ✏️ Aggiornato 4 mesi fa

Commenti