Integrazione di MLflow con Ultralytics YOLO#
Introduzione#
La registrazione degli esperimenti è un aspetto cruciale dei flussi di lavoro di apprendimento automatico e consente di tenere traccia di diverse metriche, parametri e artefatti. Aiuta a migliorare la riproducibilità dei modelli, a eseguire il debug dei problemi e a migliorare le prestazioni dei modelli. Ultralytics YOLO, noto per le sue capacità di rilevamento degli oggetti in tempo reale, offre ora l’integrazione con MLflow, una piattaforma open source per la gestione completa del ciclo di vita dell’apprendimento automatico.
Questa pagina della documentazione è una guida completa alla configurazione e all'uso delle funzionalità di registrazione di MLflow per il tuo progetto Ultralytics YOLO.
Che cos'è MLflow?#
MLflow è una piattaforma open source sviluppata da Databricks per gestire l'intero ciclo di vita dell'apprendimento automatico. Include strumenti per monitorare gli esperimenti, preparare il codice per esecuzioni riproducibili e condividere e distribuire modelli. MLflow è progettato per funzionare con qualsiasi libreria di apprendimento automatico e linguaggio di programmazione.
Funzionalità#
- Registrazione delle metriche: registra i tassi di apprendimento, le perdite di addestramento e le metriche di convalida al termine di ogni epoca.
- Registrazione dei parametri: registra tutti i parametri usati durante l'addestramento.
- Registrazione degli artefatti: registra gli artefatti del modello, inclusi pesi e file di configurazione, al termine dell'addestramento.
Configurazione e prerequisiti#
Assicurati che MLflow sia installato. In caso contrario, installalo con pip:
pip install mlflowAssicurati che la registrazione di MLflow sia attiva nelle impostazioni di Ultralytics. In genere è controllata dalla chiave di impostazione mlflow. Per ulteriori informazioni, consulta la pagina delle impostazioni.
Nell'ambiente Python, richiama il metodo update sull'oggetto settings per modificare le impostazioni:
from ultralytics import settings
# Aggiorna un'impostazione
settings.update({"mlflow": True})
# Ripristina le impostazioni ai valori predefiniti
settings.reset()Modalità d'uso#
Comandi#
-
Imposta il nome del progetto: puoi impostare il nome del progetto tramite una variabile d'ambiente:
export MLFLOW_EXPERIMENT_NAME=YOUR_EXPERIMENT_NAMEIn alternativa, durante l'addestramento di un modello YOLO puoi usare l'argomento
project=<project>, ad esempioyolo train project=my_project. -
Imposta il nome dell'esecuzione: come per il nome del progetto, puoi impostare il nome dell'esecuzione tramite una variabile d'ambiente:
export MLFLOW_RUN=YOUR_RUN_NAMEIn alternativa, durante l'addestramento di un modello YOLO puoi usare l'argomento
name=<name>, ad esempioyolo train project=my_project name=my_name. -
Avvia un server MLflow locale: per iniziare il monitoraggio, usa:
mlflow server --backend-store-uri runs/mlflowPer impostazione predefinita, verrà avviato un server locale su
http://127.0.0.1:5000e tutti i log di mlflow verranno salvati nella directory 'runs/mlflow'. Per indirizzare le esecuzioni di addestramento a un altro server di monitoraggio, esportaMLFLOW_TRACKING_URIprima dell'addestramento:export MLFLOW_TRACKING_URI=http://127.0.0.1:5000 -
Mantieni attiva l'esecuzione MLflow dopo l'addestramento: per impostazione predefinita, Ultralytics termina automaticamente l'esecuzione MLflow al termine dell'addestramento. Per mantenerla aperta (ad esempio, per registrare altre metriche o artefatti dallo stesso notebook), imposta
MLFLOW_KEEP_RUN_ACTIVEsuTrueprima dell'addestramento:export MLFLOW_KEEP_RUN_ACTIVE=TrueI valori
1,true,yes,on,yetabilitano questo comportamento (senza distinzione tra maiuscole e minuscole). Qualsiasi altro valore, inclusa una variabile non impostata, mantiene il comportamento predefinito di chiusura dell'esecuzione. Ricordati di chiuderla manualmente in seguito conmlflow.end_run().
Registrazione#
La registrazione è gestita dalle funzioni di callback on_pretrain_routine_end, on_train_epoch_end, on_fit_epoch_end e on_train_end callback functions. Queste funzioni vengono chiamate automaticamente durante le rispettive fasi del processo di training e gestiscono la registrazione di parametri, metriche e artefatti.
Esempi#
-
Registrazione di metriche personalizzate: puoi aggiungere metriche personalizzate da registrare modificando il dizionario
trainer.metricsprima della chiamata aon_fit_epoch_end. -
Visualizzare l'esperimento: per visualizzare i log, accedi al tuo server MLflow (di solito
http://127.0.0.1:5000) e seleziona l'esperimento e l'esecuzione.
-
Visualizzare un'esecuzione: le esecuzioni sono singoli modelli all'interno di un esperimento. Fai clic su un'esecuzione per visualizzarne i dettagli, inclusi gli artefatti caricati e i pesi del modello.

Disattivare MLflow#
Per disattivare la registrazione di MLflow:
yolo settings mlflow=FalseConclusione#
L'integrazione della registrazione di MLflow con Ultralytics YOLO offre un modo semplice per tenere traccia dei tuoi esperimenti di machine learning. Ti permette di monitorare le metriche delle prestazioni e gestire efficacemente gli artefatti, favorendo così lo sviluppo e la distribuzione affidabili dei modelli. Per ulteriori dettagli, visita la documentazione ufficiale di MLflow.
Domande frequenti#
Per configurare la registrazione di MLflow con Ultralytics YOLO, devi prima assicurarti che MLflow sia installato. Puoi installarlo con pip:
pip install mlflowPoi, abilita la registrazione di MLflow nelle impostazioni di Ultralytics. Puoi controllarla con la chiave
mlflow. Per ulteriori informazioni, consulta la guida alle impostazioni.Aggiorna le impostazioni di MLflow di Ultralyticsfrom ultralytics import settings # Aggiorna un'impostazione settings.update({"mlflow": True}) # Ripristina le impostazioni ai valori predefiniti settings.reset()Infine, avvia un server MLflow locale per il tracciamento:
mlflow server --backend-store-uri runs/mlflowUltralytics YOLO con MLflow supporta la registrazione di varie metriche, parametri e artefatti durante tutto il processo di training:
- Registrazione delle metriche: tiene traccia delle metriche alla fine di ogni epoca e al completamento del training.
- Registrazione dei parametri: registra tutti i parametri utilizzati nel processo di training.
- Registrazione degli artefatti: salva gli artefatti del modello, come i pesi e i file di configurazione, al termine del training.
Per informazioni più dettagliate, visita la documentazione sul tracking di Ultralytics YOLO.
Sì, puoi disattivare la registrazione di MLflow per Ultralytics YOLO aggiornando le impostazioni. Ecco come fare con la CLI:
yolo settings mlflow=FalsePer ulteriori opzioni di personalizzazione e per ripristinare le impostazioni, consulta la guida alle impostazioni.
Per avviare un server MLflow per tracciare i tuoi esperimenti con Ultralytics YOLO, usa il comando seguente:
mlflow server --backend-store-uri runs/mlflowPer impostazione predefinita, questo comando avvia un server locale su
http://127.0.0.1:5000. PremiCtrl+Cnel terminale per arrestarlo.Consulta la sezione dei comandi per altre opzioni.
Prima del training, imposta la variabile d'ambiente
MLFLOW_KEEP_RUN_ACTIVEsuTrue:export MLFLOW_KEEP_RUN_ACTIVE=TruePer impostazione predefinita, il valore è
False, quindi Ultralytics chiamamlflow.end_run()al termine del training. ConMLFLOW_KEEP_RUN_ACTIVE=True, l'esecuzione rimane aperta, così puoi registrare altre metriche, parametri o artefatti dalla stessa sessione Python: al termine, chiudila tu conmlflow.end_run(). I valori1,true,yes,on,yetabilitano questo comportamento (senza distinzione tra maiuscole e minuscole).L'integrazione di MLflow con Ultralytics YOLO offre diversi vantaggi per la gestione dei tuoi esperimenti di machine learning:
- Tracking degli esperimenti avanzato: tieni traccia facilmente delle diverse esecuzioni e dei relativi risultati e confrontali.
- Maggiore riproducibilità dei modelli: assicurati che i tuoi esperimenti siano riproducibili registrando tutti i parametri e gli artefatti.
- Monitoraggio delle prestazioni: visualizza le metriche delle prestazioni nel tempo per prendere decisioni basate sui dati e migliorare i modelli.
- Workflow semplificato: automatizza il processo di registrazione per dedicarti maggiormente allo sviluppo dei modelli anziché al tracking manuale.
- Sviluppo collaborativo: condividi i risultati degli esperimenti con i membri del team per collaborare e condividere conoscenze in modo più efficace.
Per approfondire la configurazione e l'uso di MLflow con Ultralytics YOLO, consulta la documentazione Integrazione di MLflow per Ultralytics YOLO.