Leggere esperimenti MLflow

L'origine dati mlflow-experiment offre un'API Spark DataFrameReader per caricare i dati delle esecuzioni degli esperimenti MLflow in un DataFrame. Gli utenti di Azure Databricks lo usano comunemente per analizzare i risultati delle esecuzioni di addestramento, confrontare le metriche tra gli esperimenti e creare dashboard basate sulla cronologia degli esperimenti. Per altre informazioni, vedi Organizzare le esecuzioni di training con gli esperimenti di MLflow.

Prerequisiti

La lettura dei dati di esecuzione dell'esperimento MLflow richiede Databricks Runtime 6.0 ML e versioni successive.

Usage

Gli esempi seguenti illustrano come caricare e filtrare i dati dell'esperimento MLflow usando l'API DataFrame Spark.

Caricare dati dall'esperimento del notebook

Per caricare i dati dall'esperimento del notebook corrente, chiama load() senza argomenti.

Pitone

df = spark.read.format("mlflow-experiment").load()
display(df)

Scala

val df = spark.read.format("mlflow-experiment").load()
display(df)

Caricare i dati usando gli ID esperimenti

Per caricare i dati da uno o più esperimenti dell'area di lavoro, passare gli ID esperimento come stringa delimitata da virgole a load().

Pitone

df = spark.read.format("mlflow-experiment").load("3270527066281272")
display(df)

Scala

val df = spark.read.format("mlflow-experiment").load("3270527066281272,953590262154175")
display(df)

Caricare i dati usando un nome di esperimento

Per caricare i dati in base al nome dell'esperimento, risolvere il nome in un ID usando il client MLflow, quindi passare l'ID a load().

Pitone

expId = mlflow.get_experiment_by_name("/Shared/diabetes_experiment/").experiment_id
df = spark.read.format("mlflow-experiment").load(expId)
display(df)

Scala

val expId = mlflow.getExperimentByName("/Shared/diabetes_experiment/").get.getExperimentId
val df = spark.read.format("mlflow-experiment").load(expId)
display(df)

Filtrare i dati in base a metriche e parametri

Dopo il caricamento dei dati dell'esperimento, usare espressioni di filtro dataframe standard per eseguire query tra metriche e parametri.

Pitone

df = spark.read.format("mlflow-experiment").load("3270527066281272")
filtered_df = df.filter("metrics.loss < 0.01 AND params.learning_rate > '0.001'")
display(filtered_df)

Scala

val df = spark.read.format("mlflow-experiment").load("3270527066281272")
val filtered_df = df.filter("metrics.loss < 1.85 AND params.num_epochs > '30'")
display(filtered_df)

Schema di output.

Lo schema restituito dall'origine mlflow-experiment dati viene corretto indipendentemente dal caricamento dell'esperimento:

root
|-- run_id: string
|-- experiment_id: string
|-- metrics: map
|    |-- key: string
|    |-- value: double
|-- params: map
|    |-- key: string
|    |-- value: string
|-- tags: map
|    |-- key: string
|    |-- value: string
|-- start_time: timestamp
|-- end_time: timestamp
|-- status: string
|-- artifact_uri: string

Risorse aggiuntive