Tenere traccia delle esecuzioni di training di Machine Learning e Deep Learning

Il componente di rilevamento MLflow consente di registrare proprietà, parametri, metriche, tag e artefatti di origine correlati al training di un modello di Machine Learning o Deep Learning. Per iniziare a usare MLflow, provare una delle esercitazioni introduttive su MLflow.

Rilevamento MLflow con esperimenti ed esecuzioni

Il rilevamento MLflow si basa su due concetti, esperimenti ed esecuzioni:

I parametri, le metriche, i tag e gli artefatti dell'API MLflow Tracking vengono eseguiti da un modello. L'API di rilevamento comunica con un server di rilevamento MLflow. Quando si usa Databricks, un server di rilevamento ospitato in Databricks registra i dati. Il server di rilevamento MLflow ospitato include API Python, Java e R.

Per informazioni su come controllare l'accesso agli esperimenti, vedere Condividere esperimenti e Modificare le autorizzazioni per l'esperimento.

Nota

MLflow viene installato nei cluster di Machine Learning di Databricks Runtime. Per usare MLflow in un cluster Databricks Runtime, è necessario installare la mlflow libreria. Per istruzioni sull'installazione di una libreria in un cluster, vedere Installare una libreria in un cluster. I pacchetti specifici da installare per MLflow sono:

  • Per Python selezionare Library Source PyPI (PyPI origine libreria) e immettere mlflow nel campo Package (Pacchetto).
  • Per R selezionare Library Source CRAN (Origine libreria CRAN) e immettere mlflow nel campo Package (Pacchetto ).
  • Per Scala, installare questi due pacchetti:
    • Selezionare Libreria Origine Maven e immettere org.mlflow:mlflow-client:1.11.0 nel campo Coordinate.
    • Selezionare Libreria Source PyPI (PyPI origine libreria) e immettere mlflow nel campo Package (Pacchetto ).

Posizione in cui vengono registrate le esecuzioni di MLflow

Tutte le esecuzioni di MLflow vengono registrate nell'esperimento attivo, che può essere impostato usando uno dei modi seguenti:

Se non è impostato alcun esperimento attivo, le esecuzioni vengono registrate nell'esperimento del notebook.

Per registrare i risultati dell'esperimento in un server MLflow Tracking ospitato in remoto in un'area di lavoro diversa da quella in cui si esegue l'esperimento, impostare l'URI di rilevamento per fare riferimento all'area di lavoro remota con mlflow.set_tracking_uri()e impostare il percorso dell'esperimento nell'area di lavoro remota usando mlflow.set_experiment().

mlflow.set_tracking_uri(<uri-of-remote-workspace>)
mlflow.set_experiment("path to experiment in remote workspace")

Se si eseguono esperimenti in locale e si vogliono registrare i risultati dell'esperimento nel server Databricks MLflow Tracking, specificare l'istanza dell'area di lavoro databricks (DATABRICKS_HOST) e il token di accesso personale di Databricks (DATABRICKS_TOKEN). Successivamente, è possibile impostare l'URI di rilevamento per fare riferimento all'area di lavoro con mlflow.set_tracking_uri()e impostare il percorso dell'esperimento usando mlflow.set_experiment(). Per informazioni dettagliate su dove trovare i valori per le DATABRICKS_HOST variabili di ambiente e DATABRICKS_TOKEN , vedere Eseguire l'autenticazione del token di accesso personale di Azure Databricks.

L'esempio di codice seguente illustra l'impostazione di questi valori:


os.environ["DATABRICKS_HOST"] = "https://dbc-1234567890123456.cloud.databricks.com" # set to your server URI
os.environ["DATABRICKS_TOKEN"] = "dapixxxxxxxxxxxxx"

mlflow.set_tracking_uri("databricks")
mlflow.set_experiment("/your-experiment")

Notebook di esempio di registrazione

Questo notebook illustra come registrare le esecuzioni in un esperimento di notebook e in un esperimento dell'area di lavoro. Solo le esecuzioni di MLflow avviate all'interno di un notebook possono essere registrate nell'esperimento del notebook. Le esecuzioni di MLflow avviate da qualsiasi notebook o dalle API possono essere registrate in un esperimento dell'area di lavoro. Per informazioni sulla visualizzazione delle esecuzioni registrate, vedere Visualizzare l'esperimento del notebook e Visualizzare l'esperimento dell'area di lavoro.

Log MLflow esegue il notebook

Ottenere il notebook

È possibile usare le API MLflow Python, Java o Scala e R per avviare le esecuzioni e registrare i dati di esecuzione. Per informazioni dettagliate, vedere i notebook di esempio di MLflow.

Accedere al server di rilevamento MLflow dall'esterno di Azure Databricks

È anche possibile scrivere e leggere dal server di rilevamento dall'esterno di Azure Databricks, ad esempio usando l'interfaccia della riga di comando di MLflow. Vedere Accedere al server di rilevamento MLflow dall'esterno di Azure Databricks.

Analizzare le esecuzioni di MLflow a livello di codice

È possibile accedere ai dati di esecuzione di MLflow a livello di codice usando le due API dataframe seguenti:

  • Il client Python MLflow search_runs API restituisce un dataframe pandas.
  • L'origine dati dell'esperimento MLflow restituisce un dataframe Apache Spark.

Questo esempio illustra come usare il client Python MLflow per creare un dashboard che visualizza le modifiche nelle metriche di valutazione nel tempo, tiene traccia del numero di esecuzioni avviate da un utente specifico e misura il numero totale di esecuzioni in tutti gli utenti:

Perché le metriche e gli output del training del modello possono variare

Molti degli algoritmi usati in ML hanno un elemento casuale, ad esempio il campionamento o condizioni iniziali casuali all'interno dell'algoritmo stesso. Quando si esegue il training di un modello usando uno di questi algoritmi, i risultati potrebbero non essere uguali a ogni esecuzione, anche se si avvia l'esecuzione con le stesse condizioni. Molte librerie offrono un meccanismo di seeding per correggere le condizioni iniziali per questi elementi stocastici. Tuttavia, potrebbero esserci altre fonti di variazione che non sono controllate dai semi. Alcuni algoritmi sono sensibili all'ordine dei dati e gli algoritmi di Machine Learning distribuiti possono essere interessati anche dal modo in cui i dati vengono partizionati. In genere questa variazione non è significativa e non è importante nel processo di sviluppo del modello.

Per controllare la variazione causata dalle differenze nell'ordinamento e nel partizionamento, usare le funzioni PySpark ripartition e sortWithinPartitions.

Esempi di rilevamento MLflow

I notebook seguenti illustrano come eseguire il training di diversi tipi di modelli e tenere traccia dei dati di training in MLflow e come archiviare i dati di rilevamento in Delta Lake.