Ultralytics YOLO27: Iscriviti alla lista d'attesa.
Get Started

Integrazione di MLflow con Ultralytics YOLO#

MLflow experiment tracking with 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 mlflow

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

Aggiorna le impostazioni di MLflow di Ultralytics

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#

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

    export MLFLOW_EXPERIMENT_NAME=YOUR_EXPERIMENT_NAME

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

  2. 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_NAME

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

  3. Avvia un server MLflow locale: senza MLFLOW_TRACKING_URI, le esecuzioni vengono registrate nell'archivio locale predefinito di MLflow nella directory in cui esegui l'addestramento (mlflow.db con MLflow 3.7 e versioni successive, a meno che la directory non contenga già una cronologia mlruns/, mlruns/ nelle versioni precedenti). Per visualizzarle, esegui questo comando dalla stessa directory:

    mlflow ui

    Per impostazione predefinita, verrà avviato un server locale all'indirizzo http://127.0.0.1:5000. Per indirizzare 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, con stato FAILED se l'addestramento ha generato un errore prima che l'esecuzione venisse chiusa. 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 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_train_epoch_end, on_fit_epoch_end e on_train_end, le funzioni di callback. Queste funzioni vengono chiamate automaticamente durante le rispettive fasi del processo di addestramento e gestiscono la registrazione di parametri, metriche e artefatti. La callback teardown termina un'esecuzione lasciata aperta da un addestramento non riuscito.

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. 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. MLflow experiment tracking interface for YOLO

  3. 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. MLflow run details with YOLO artifacts

Disattivare MLflow#

Per disattivare la registrazione di MLflow:

yolo settings mlflow=False

Conclusione#

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 mlflow

    Poi, 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 Ultralytics
    from ultralytics import settings
    
    # Aggiorna un'impostazione
    settings.update({"mlflow": True})
    
    # Ripristina le impostazioni ai valori predefiniti
    settings.reset()

    Infine, dopo l'addestramento, visualizza le tue esecuzioni avviando un server MLflow locale dalla directory in cui hai eseguito l'addestramento:

    mlflow ui
  • Ultralytics 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=False

    Per ulteriori opzioni di personalizzazione e per ripristinare le impostazioni, consulta la guida alle impostazioni.

  • Per visualizzare i tuoi esperimenti Ultralytics YOLO in un server MLflow locale, esegui il comando seguente dalla directory in cui hai eseguito l'addestramento:

    mlflow ui

    Per impostazione predefinita, questo comando avvia un server locale su http://127.0.0.1:5000. Premi Ctrl+C nel terminale per arrestarlo.

    Consulta la sezione dei comandi per altre opzioni.

  • Prima del training, imposta la variabile d'ambiente MLFLOW_KEEP_RUN_ACTIVE su True:

    export MLFLOW_KEEP_RUN_ACTIVE=True

    Per impostazione predefinita, il valore è False, quindi Ultralytics chiama mlflow.end_run() al termine del training. Con MLFLOW_KEEP_RUN_ACTIVE=True, l'esecuzione rimane aperta, così puoi registrare altre metriche, parametri o artefatti dalla stessa sessione Python: al termine, chiudila tu 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:

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

Commenti