Läs MLflow-experiment

Datakällan mlflow-experiment tillhandahåller ett Spark DataFrameReader-API för att läsa in data från MLflow-experimentkörningar i en DataFrame. Azure Databricks-användare använder ofta tjänsten för att analysera resultat från träningskörningar, jämföra mätvärden mellan experiment och skapa instrumentpaneler baserade på experimenthistoriken. Mer information finns i Ordna träningskörningar med MLflow-experiment.

Förutsättningar

För att läsa MLflow-experimentkörningsdata krävs Databricks Runtime 6.0 ML och senare.

Usage

I följande exempel visas hur du läser in och filtrerar MLflow-experimentdata med hjälp av Spark DataFrame-API:et.

Läsa in data från notebook-experimentet

Om du vill läsa in data från den aktuella notebook-filens experiment anropar du load() utan argument.

Python

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

Scala

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

Läsa in data med hjälp av experiment-ID:t

Om du vill läsa in data från ett eller flera arbetsyteexperiment skickar du experiment-ID:t som en kommaavgränsad sträng till load().

Python

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

Scala

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

Läsa in data med hjälp av ett experimentnamn

Om du vill läsa in data efter experimentnamn löser du namnet till ett ID med hjälp av MLflow-klienten och skickar sedan ID:t till load().

Python

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)

Filtrera data baserat på mått och parametrar

När du har läst in experimentdata använder du standarduttryck för DataFrame-filter för att fråga efter mått och parametrar.

Python

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)

Utdataschema

Schemat som returneras av mlflow-experiment datakällan är fast oavsett vilket experiment som läses in:

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

Ytterligare resurser