YOLO Vision 2026:

Integrazione di MLflow per Ultralytics YOLO#

MLflow experiment tracking with Ultralytics YOLO

Introduzione#

La registrazione degli esperimenti è un aspetto cruciale dei flussi di lavoro di machine learning che consente di tracciare diverse metriche, parametri e artefatti. Aiuta a migliorare la riproducibilità del modello, a eseguire il debug dei problemi e a migliorare le prestazioni del modello. Ultralytics YOLO, noto per le sue capacità di object detection in tempo reale, offre ora l'integrazione con MLflow, una piattaforma open-source per la gestione completa del ciclo di vita del machine learning.

Questa pagina di documentazione è una guida completa alla configurazione e all'utilizzo delle funzionalità di logging di MLflow per il tuo progetto Ultralytics YOLO.

Cos'è MLflow?#

MLflow è una piattaforma open-source sviluppata da Databricks per la gestione del ciclo di vita end-to-end del machine learning. Include strumenti per tracciare gli esperimenti, impacchettare il codice in esecuzioni riproducibili e condividere e distribuire i modelli. MLflow è progettato per funzionare con qualsiasi libreria di machine learning e linguaggio di programmazione.

Caratteristiche#

  • Logging delle metriche: registra le metriche alla fine di ogni epoca e al termine dell'addestramento.
  • Logging dei parametri: registra tutti i parametri utilizzati nell'addestramento.
  • Logging 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 tramite pip:

pip install mlflow

Assicurati che la registrazione di MLflow sia abilitata nelle impostazioni di Ultralytics. Di solito, questo viene controllato dalla chiave delle impostazioni mlflow. Consulta la pagina delle impostazioni per maggiori informazioni.

Aggiorna le impostazioni di MLflow di Ultralytics

All'interno dell'ambiente Python, richiama il metodo update sull'oggetto settings per modificare le tue impostazioni:

from ultralytics import settings

# Update a setting
settings.update({"mlflow": True})

# Reset settings to default values
settings.reset()

Come utilizzare#

Comandi#

  1. Imposta un nome di progetto: puoi impostare il nome del progetto tramite una variabile d'ambiente:

    export MLFLOW_EXPERIMENT_NAME=YOUR_EXPERIMENT_NAME

    Oppure usa l'argomento project=<project> durante l'addestramento di un modello YOLO, ad esempio yolo train project=my_project.

  2. Imposta un nome di esecuzione (Run): in modo simile all'impostazione del nome del progetto, puoi impostare il nome dell'esecuzione tramite una variabile d'ambiente:

    export MLFLOW_RUN=YOUR_RUN_NAME

    Oppure usa l'argomento name=<name> durante l'addestramento di un modello YOLO, ad esempio yolo train project=my_project name=my_name.

  3. Avvia server MLflow locale: per iniziare il tracciamento, usa:

    mlflow server --backend-store-uri runs/mlflow

    Questo avvierà un server locale su http://127.0.0.1:5000 per impostazione predefinita e salverà tutti i log di mlflow nella directory 'runs/mlflow'. Per puntare le tue esecuzioni di addestramento a un server di tracciamento diverso, esporta MLFLOW_TRACKING_URI prima dell'addestramento:

    export MLFLOW_TRACKING_URI=http://127.0.0.1:5000
  4. Mantieni attiva l'esecuzione di MLflow dopo l'addestramento: Per impostazione predefinita, Ultralytics termina automaticamente l'esecuzione di MLflow al termine dell'addestramento. Per mantenere aperta l'esecuzione (ad esempio, per registrare metriche o artefatti aggiuntivi dallo stesso notebook), imposta MLFLOW_KEEP_RUN_ACTIVE su True prima dell'addestramento:

    export MLFLOW_KEEP_RUN_ACTIVE=True

    I valori 1, true, yes, on, y e t attivano questo comportamento (senza distinzione tra maiuscole e minuscole). Qualsiasi altro valore, inclusa una variabile non impostata, mantiene l'impostazione predefinita di chiusura della esecuzione. Ricordati di chiuderla manualmente in seguito con mlflow.end_run().

Registrazione (Logging)#

La registrazione è gestita dalle funzioni di callback on_pretrain_routine_end, on_fit_epoch_end e on_train_end. Queste funzioni vengono chiamate automaticamente durante le rispettive fasi del processo di addestramento e gestiscono la registrazione di parametri, metriche e artefatti.

Esempi#

  1. Registrazione di metriche personalizzate: Puoi aggiungere metriche personalizzate da registrare modificando il dizionario trainer.metrics prima che venga chiamato on_fit_epoch_end.

  2. Visualizza esperimento: Per visualizzare i tuoi log, vai al tuo server MLflow (solitamente http://127.0.0.1:5000) e seleziona il tuo esperimento e la tua esecuzione. MLflow experiment tracking interface for YOLO

  3. Visualizza esecuzione: Le esecuzioni sono singoli modelli all'interno di un esperimento. Clicca su un'esecuzione e visualizza i dettagli dell'esecuzione, inclusi gli artefatti caricati e i pesi del modello. MLflow run details with YOLO artifacts

Disabilitazione di MLflow#

Per disattivare il logging di MLflow:

yolo settings mlflow=False

Conclusione#

L'integrazione della registrazione di MLflow con Ultralytics YOLO offre un modo ottimizzato per tenere traccia dei tuoi esperimenti di machine learning. Ti consente di monitorare le metriche delle prestazioni e gestire efficacemente gli artefatti, aiutando così nello sviluppo e nella distribuzione robusti dei modelli. Per ulteriori dettagli, visita la documentazione ufficiale di MLflow.

FAQ#

  • Per configurare il logging di MLflow con Ultralytics YOLO, devi prima assicurarti che MLflow sia installato. Puoi installarlo usando pip:

    pip install mlflow

    Successivamente, abilita la registrazione di MLflow nelle impostazioni di Ultralytics. Questo può essere controllato tramite la chiave mlflow. Per ulteriori informazioni, consulta la guida alle impostazioni.

    Aggiorna le impostazioni di MLflow di Ultralytics
    from ultralytics import settings
    
    # Update a setting
    settings.update({"mlflow": True})
    
    # Reset settings to default values
    settings.reset()

    Infine, avvia un server MLflow locale per il tracciamento:

    mlflow server --backend-store-uri runs/mlflow
  • Ultralytics YOLO con MLflow supporta la registrazione di varie metriche, parametri e artefatti durante tutto il processo di addestramento:

    • Registrazione delle metriche: Traccia le metriche alla fine di ogni epoca e al completamento dell'addestramento.
    • Logging dei parametri: registra tutti i parametri utilizzati nel processo di addestramento.
    • Logging degli artefatti: salva gli artefatti del modello come pesi e file di configurazione dopo l'addestramento.

    Per informazioni più dettagliate, visita la documentazione di tracciamento di Ultralytics YOLO.

  • Sì, puoi disabilitare il logging di MLflow per Ultralytics YOLO aggiornando le impostazioni. Ecco come puoi farlo usando la CLI:

    yolo settings mlflow=False

    Per ulteriori personalizzazioni e per ripristinare le impostazioni, fai riferimento alla guida alle impostazioni.

  • Per avviare un server MLflow per tracciare i tuoi esperimenti in Ultralytics YOLO, usa il seguente comando:

    mlflow server --backend-store-uri runs/mlflow

    Questo comando avvia un server locale su http://127.0.0.1:5000 per impostazione predefinita. Premi Ctrl+C in quel terminale per arrestarlo.

    Fai riferimento alla sezione dei comandi per ulteriori opzioni di comando.

  • Imposta la variabile d'ambiente MLFLOW_KEEP_RUN_ACTIVE su True prima dell'addestramento:

    export MLFLOW_KEEP_RUN_ACTIVE=True

    Per impostazione predefinita questo è False, quindi Ultralytics chiama mlflow.end_run() una volta completato l'addestramento. Con MLFLOW_KEEP_RUN_ACTIVE=True l'esecuzione rimane aperta così puoi registrare metriche, parametri o artefatti extra dalla stessa sessione Python — chiudila tu stesso con mlflow.end_run() quando hai finito. I valori 1, true, yes, on, y e t attivano 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:

    • Tracciamento avanzato degli esperimenti: traccia e confronta facilmente diverse esecuzioni e i relativi risultati.
    • Miglior riproducibilità del modello: assicurati che i tuoi esperimenti siano riproducibili registrando tutti i parametri e gli artefatti.
    • Monitoraggio delle prestazioni: visualizza le metriche di prestazione nel tempo per prendere decisioni basate sui dati per migliorare i modelli.
    • Flusso di lavoro ottimizzato: automatizza il processo di logging per concentrarti maggiormente sullo sviluppo del modello anziché sul tracciamento manuale.
    • Sviluppo collaborativo: condividi i risultati degli esperimenti con i membri del team per una migliore collaborazione e condivisione delle conoscenze.

    Per uno sguardo approfondito sulla configurazione e sull'utilizzo di MLflow con Ultralytics YOLO, esplora la documentazione Integrazione di MLflow per Ultralytics YOLO.

Commenti