Condividi tramite


Tenere traccia di esperimenti e modelli usando 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 usa 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.

Note

Prerequisiti

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

    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. È consigliabile usare questo pacchetto per gli utenti che necessitano principalmente delle funzionalità di rilevamento e registrazione di MLflow, ma non della 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. Esaminare le autorizzazioni di accesso necessarie per eseguire 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 sono denominate processi in Azure Machine Learning. Per impostazione predefinita, esegue il log a un esperimento creato automaticamente denominato Default, ma è possibile configurare l'esperimento di cui 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 esecuzioni delle chiamate MLflow. 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 autologging di MLflow è abilitata, il monitoraggio di MLflow inizia quando si effettua il log di una metrica o un parametro, o si avvia un ciclo di allenamento.

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 blocco appunti:

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 ricordarsi di terminare l'esecuzione.

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

Quando si avvia una nuova esecuzione usando 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 metriche, parametri e file con MLflow manualmente ed è anche possibile basarsi sulla 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 Azure Machine Learning Studio o accedervi a livello di codice usando 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 metriche registrate per il rendering dei grafici sul lato destro della pagina. È 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 metodo mlflow.get_metric_history. 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 ed esecuzioni in Azure Machine Learning usando MLflow, vedere Eseguire query e confrontare esperimenti ed esecuzioni con MLflow.