MLflow-experimenten lezen

De mlflow-experiment gegevensbron biedt een Spark DataFrameReader-API om gegevens van MLflow-experimentuitvoeringen naar een DataFrame te laden. Azure Databricks gebruikers deze vaak gebruiken om resultaten van trainingsuitvoeringen te analyseren, metrische gegevens te vergelijken over experimenten en dashboards te bouwen boven op de experimentgeschiedenis. Zie Trainingsuitvoeringen organiseren met MLflow-experimenten voor meer informatie.

Prerequisites

Voor het lezen van MLflow-experimentuitvoeringsgegevens is Databricks Runtime 6.0 ML en hoger vereist.

Usage

In de volgende voorbeelden ziet u hoe u MLflow-experimentgegevens laadt en filtert met behulp van de Spark DataFrame-API.

Gegevens laden uit het notebook-experiment

Als u gegevens uit het experiment van het huidige notebook wilt laden, roept u load() zonder argumenten aan.

Python

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

Scala

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

Gegevens laden met behulp van experiment-id's

Als u gegevens wilt laden uit een of meer werkruimteexperimenten, geeft u de experiment-id's door als een door komma's gescheiden tekenreeks aan 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)

Gegevens laden met behulp van een experimentnaam

Als u gegevens wilt laden op experimentnaam, moet u de naam oplossen naar een id met behulp van de MLflow-client en vervolgens de id doorgeven aan 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)

Gegevens filteren op basis van metrische gegevens en parameters

Nadat u experimentgegevens hebt geladen, gebruikt u standaard DataFrame-filterexpressies om query's uit te voeren op metrische gegevens en parameters.

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)

Uitvoerschema

Het schema dat door de mlflow-experiment-gegevensbron wordt geretourneerd, ligt vast, ongeacht welk experiment is geladen:

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

Aanvullende bronnen