Ultralytics YOLO27:

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 tenere traccia di varie 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 del machine learning.

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

Che cos'è MLflow?#

MLflow è una piattaforma open source sviluppata da Databricks per la gestione end-to-end del ciclo di vita del machine learning. Include strumenti per il monitoraggio degli esperimenti, la pacchettizzazione del codice in esecuzioni riproducibili e la condivisione e la distribuzione dei modelli. MLflow è progettato per funzionare con qualsiasi libreria di machine learning e linguaggio di programmazione.

Funzionalità#

  • Registrazione delle metriche: registra le metriche al termine di ogni epoca e al termine dell'addestramento.
  • Registrazione dei parametri: registra tutti i parametri utilizzati nell'addestramento.
  • Registrazione degli artefatti: registra gli artefatti del modello, inclusi i pesi e i file di configurazione, al termine dell'addestramento.

Configurazione e prerequisiti#

Assicurati che MLflow sia installato. In caso contrario, installalo usando pip:

pip install mlflow

Assicurati che la registrazione di MLflow sia abilitata nelle impostazioni di Ultralytics. Di solito, ciò è controllato dalla chiave mlflow delle impostazioni. Consulta la pagina delle impostazioni per ulteriori informazioni.

Aggiornamento delle impostazioni MLflow di Ultralytics

Nell'ambiente Python, chiama il metodo update sull'oggetto settings per modificare le impostazioni:

from ultralytics import settings

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

# Reset settings to default values
settings.reset()

Come utilizzarlo#

Comandi#

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

    export MLFLOW_EXPERIMENT_NAME=YOUR_EXPERIMENT_NAME

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

  2. Impostazione del nome di un'esecuzione: analogamente all'impostazione del nome di un progetto, puoi impostare il nome dell'esecuzione tramite una variabile d'ambiente:

    export MLFLOW_RUN=YOUR_RUN_NAME

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

  3. Avvio del server MLflow locale: per iniziare il monitoraggio, usa:

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

    Per impostazione predefinita, questo avvierà un server locale all'indirizzo http://127.0.0.1:5000 e salverà tutti i log di mlflow nella directory 'runs/mlflow'. Per indirizzare le esecuzioni di addestramento a un server di monitoraggio diverso, esporta MLFLOW_TRACKING_URI prima dell'addestramento:

    export MLFLOW_TRACKING_URI=http://127.0.0.1:5000
  4. Mantenimento dell'esecuzione MLflow attiva dopo l'addestramento: per impostazione predefinita, Ultralytics termina automaticamente l'esecuzione MLflow al termine dell'addestramento. Per mantenere aperta l'esecuzione (ad esempio, per registrare ulteriori metriche o artefatti 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 abilitano 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 con mlflow.end_run().

Registrazione#

La registrazione è gestita da on_pretrain_routine_end, on_fit_epoch_end e on_train_end, le funzioni callback. 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 della chiamata a on_fit_epoch_end.

  2. Visualizza esperimento: per visualizzare i tuoi log, vai al tuo server MLflow (di solito 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. Fai clic su un'esecuzione per visualizzarne i dettagli, inclusi gli artefatti caricati e i pesi del modello. MLflow run details with YOLO artifacts

Disabilitazione di MLflow#

Per disattivare la registrazione di MLflow:

yolo settings mlflow=False

Conclusioni#

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

FAQ#

  • Per configurare la registrazione di MLflow con Ultralytics YOLO, devi innanzitutto assicurarti che MLflow sia installato. Puoi installarlo usando pip:

    pip install mlflow

    Successivamente, abilita la registrazione di MLflow nelle impostazioni di Ultralytics. Puoi controllarla usando la chiave mlflow. Per ulteriori informazioni, consulta la guida alle impostazioni.

    Aggiornamento delle impostazioni 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 monitoraggio:

    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: tiene traccia delle metriche al termine di ogni epoca e al completamento dell'addestramento.
    • Registrazione dei parametri: registra tutti i parametri utilizzati nel processo di addestramento.
    • Registrazione degli artefatti: salva gli artefatti del modello, come i pesi e i file di configurazione, dopo l'addestramento.

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

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

    yolo settings mlflow=False

    Per ulteriori personalizzazioni e per reimpostare le impostazioni, consulta la guida alle impostazioni.

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

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

    Questo comando avvia per impostazione predefinita un server locale all'indirizzo http://127.0.0.1:5000. Premi Ctrl+C nel terminale per arrestarlo.

    Consulta la sezione sui comandi per altre 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, il valore è False, quindi Ultralytics chiama mlflow.end_run() al termine dell'addestramento. Con MLFLOW_KEEP_RUN_ACTIVE=True l'esecuzione rimane aperta, così puoi registrare metriche, parametri o artefatti aggiuntivi dalla stessa sessione Python; al termine, chiudila con mlflow.end_run(). I valori 1, true, yes, on, y e t abilitano 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:

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

    Per un'analisi approfondita della configurazione e dell'utilizzo di MLflow con Ultralytics YOLO, consulta la documentazione Integrazione di MLflow per Ultralytics YOLO.

Commenti