Tenere traccia di esperimenti e modelli con MLflow

Il rilevamento è il processo di salvataggio delle informazioni pertinenti sugli esperimenti. Questo articolo illustra come usare MLflow per tenere traccia degli esperimenti e delle esecuzioni nelle aree di lavoro di Azure Machine Learning.

Alcuni metodi disponibili nell'API MLflow potrebbero non essere disponibili quando si è connessi ad Azure Machine Learning. Per informazioni dettagliate sulle operazioni supportate e non supportate, vedere Matrice di supporto per query su esecuzioni ed esperimenti. È anche possibile ottenere informazioni sulle funzionalità MLflow supportate in Azure Machine Learning dall'articolo MLflow e Azure Machine Learning.

Nota

Prerequisiti

  • Avere una sottoscrizione di Azure con la versione gratuita o a pagamento di Azure Machine Learning.

  • Per eseguire i comandi dell'interfaccia della riga di comando di Azure e Python, installare l'interfaccia della riga di comando di Azure v2 e Azure Machine Learning SDK v2 per Python. L'estensione per l'interfaccia ml della riga di comando di Azure viene installata automaticamente la prima volta che si esegue un comando dell'interfaccia della riga di comando di Azure Machine Learning.

  • Installare il pacchetto MLflow SDK mlflow e il plug-in Azure Machine Learning azureml-mlflow per MLflow come indicato di seguito:

    pip install mlflow azureml-mlflow
    

    Suggerimento

    È possibile usare il pacchetto mlflow-skinny, che è un pacchetto di MLflow leggero senza risorse di archiviazione SQL, server, interfaccia utente o dipendenze di data science. Questo pacchetto è consigliato per gli utenti che necessitano principalmente delle funzionalità di rilevamento e registrazione di MLflow senza importare la suite completa di funzionalità, incluse le distribuzioni.

  • Creare un'area di lavoro di Azure Machine Learning. Per creare un'area di lavoro, vedere Creare risorse necessarie per iniziare. Vedere quali sono le autorizzazioni di accesso necessarie per eseguire le operazioni MLflow nell'area di lavoro.

  • Per eseguire il rilevamento remoto o tenere traccia degli esperimenti in esecuzione all'esterno di Azure Machine Learning, configurare MLflow in modo che punti all'URI di rilevamento dell'area di lavoro di Azure Machine Learning. Per altre informazioni su come connettere MLflow all'area di lavoro, vedere Configurare MLflow per Azure Machine Learning.

Configurare l'esperimento

MLflow organizza le informazioni negli esperimenti e nelle esecuzioni. Le esecuzioni vengono chiamate processi in Azure Machine Learning. Per impostazione predefinita, esegue il log a un esperimento creato automaticamente denominato Default, ma è possibile configurare l'esperimento da tenere traccia.

Per il training interattivo, ad esempio in un notebook Jupyter, usare il comando mlflow.set_experiment() di MLflow. Ad esempio, il frammento di codice seguente configura un esperimento:

experiment_name = 'hello-world-example'
mlflow.set_experiment(experiment_name)

Configurare l'esecuzione

Azure Machine Learning tiene traccia dei processi di training nelle chiamate MLflow eseguite. Usare le esecuzioni per acquisire tutte le elaborazioni eseguite dal processo.

Quando si lavora in modo interattivo, MLflow inizia a tenere traccia della routine di training non appena si registrano le informazioni che richiedono un'esecuzione attiva. Ad esempio, se la funzionalità di assegnazione automatica di Mlflow è abilitata, il rilevamento MLflow inizia quando si registra una metrica o un parametro o si avvia un ciclo di training.

Tuttavia, in genere è utile avviare l'esecuzione in modo esplicito, soprattutto se si vuole acquisire il tempo totale per l'esperimento nel campo Durata . Per avviare l'esecuzione in modo esplicito, usare mlflow.start_run().

Indipendentemente dal fatto che l'esecuzione venga avviata manualmente o meno, alla fine è necessario arrestare l'esecuzione, in modo che MLflow sappia che l'esecuzione dell'esperimento è stata completata e possa contrassegnare lo stato dell'esecuzione come Completed. Per arrestare un'esecuzione, usare mlflow.end_run().

Il codice seguente avvia un'esecuzione manualmente e la termina alla fine del notebook:

mlflow.start_run()

# Your code

mlflow.end_run()

È consigliabile avviare manualmente le esecuzioni in modo da non dimenticare di terminarle. È possibile usare il paradigma del gestore del contesto per ricordare di terminare l'esecuzione.

with mlflow.start_run() as run:
    # Your code

Quando si avvia una nuova esecuzione con mlflow.start_run(), può essere utile specificare il run_name parametro , che in seguito viene convertito nel nome dell'esecuzione nell'interfaccia utente di Azure Machine Learning. Questa procedura consente di identificare l'esecuzione più rapidamente.

with mlflow.start_run(run_name="hello-world-example") as run:
    # Your code

Abilitare la registrazione automatica di MLflow

È possibile registrare manualmente metriche, parametri e file con MLflow ed è anche possibile usare la funzionalità di registrazione automatica di MLflow . Ogni framework di Machine Learning supportato da MLflow determina cosa tenere traccia automaticamente.

Per abilitare la registrazione automatica, inserire il codice seguente prima del codice di training:

mlflow.autolog()

Visualizzare le metriche e gli artefatti nell'area di lavoro

Le metriche e gli artefatti dalla registrazione di MLflow vengono rilevati nell'area di lavoro. È possibile visualizzarli e accedervi in studio di Azure Machine Learning o accedervi a livello di programmazione tramite MLflow SDK.

Per visualizzare metriche e artefatti nello studio:

  1. Nella pagina Processi nell'area di lavoro selezionare il nome dell'esperimento.

  2. Nella pagina dei dettagli dell'esperimento selezionare la scheda Metriche .

  3. Selezionare le metriche registrate per eseguire il rendering dei grafici sul lato destro. È possibile personalizzare i grafici applicando lo smoothing, modificando il colore o tracciando più metriche in un singolo grafico. È anche possibile ridimensionare e riorganizzare il layout.

  4. Dopo aver creato la visualizzazione desiderata, salvarla per usarla in futuro e condividerla con i colleghi usando un collegamento diretto.

    Screenshot della visualizzazione delle metriche che mostra l'elenco delle metriche e i grafici creati dalle metriche.

Per accedere o eseguire query su metriche, parametri e artefatti a livello di codice tramite MLflow SDK, usare mlflow.get_run().

import mlflow

run = mlflow.get_run("<RUN_ID>")

metrics = run.data.metrics
params = run.data.params
tags = run.data.tags

print(metrics, params, tags)

Suggerimento

L'esempio precedente restituisce solo l'ultimo valore di una determinata metrica. Per recuperare tutti i valori di una determinata metrica, usare il mlflow.get_metric_history metodo . Per altre informazioni sul recupero dei valori delle metriche, vedere Ottenere parametri e metriche da un'esecuzione.

Per scaricare gli artefatti registrati, ad esempio file e modelli, usare mlflow.artifacts.download_artifacts().

mlflow.artifacts.download_artifacts(run_id="<RUN_ID>", artifact_path="helloworld.txt")

Per altre informazioni su come recuperare o confrontare informazioni da esperimenti e esecuzioni in Azure Machine Learning usando MLflow, vedere Eseguire query e confrontare esperimenti ed esecuzioni con MLflow.