MLflow-Experimente lesen

Die mlflow-experiment Datenquelle stellt eine Spark DataFrameReader-API zum Laden von Daten zu MLflow-Experimentausführungen in einen DataFrame bereit. Azure Databricks Benutzer verwenden sie häufig, um Die Ergebnisse der Trainingsausführung zu analysieren, Metriken über Experimente hinweg zu vergleichen und Dashboards über den Experimentverlauf zu erstellen. Weitere Informationen finden Sie unter Organisieren von Trainingsläufen mit MLflow-Experimenten.

Voraussetzungen

Zum Lesen von MLflow-Experimentausführungsdaten sind Databricks Runtime 6.0 ML und höher erforderlich.

Usage

Die folgenden Beispiele zeigen, wie MLflow-Experimentdaten mithilfe der Spark DataFrame-API geladen und gefiltert werden.

Laden von Daten aus dem Notizbuchexperiment

Rufen Sie ohne Argumente auf load() , um Daten aus dem Experiment des aktuellen Notizbuchs zu laden.

Python

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

Scala

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

Daten mit Experiment-IDs laden

Um Daten aus einem oder mehreren Arbeitsbereichsexperimenten zu laden, übergeben Sie die Experiment-IDs als durch Trennzeichen getrennte Zeichenfolge an 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)

Laden von Daten mithilfe eines Experimentnamens

Um Daten nach Experimentnamen zu laden, lösen Sie den Namen mithilfe des MLflow-Clients in eine ID auf, und übergeben Sie dann die ID an 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)

Filtern von Daten basierend auf Metriken und Parametern

Verwenden Sie nach dem Laden von Experimentdaten standardmäßige DataFrame-Filterausdrücke, um Metriken und Parameter abzufragen.

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)

Ausgabeschema

Das von der Datenquelle mlflow-experiment zurückgegebene Schema ist unabhängig vom geladenen Experiment fest:

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

Weitere Ressourcen