Odczyt eksperymentów MLflow

Źródło danych mlflow-experiment udostępnia interfejs API Spark DataFrameReader do ładowania danych uruchomień eksperymentów MLflow do obiektu DataFrame. Azure Databricks użytkownicy często używają go do analizowania wyników przebiegu trenowania, porównywania metryk między eksperymentami i tworzenia pulpitów nawigacyjnych na podstawie historii eksperymentów. Aby uzyskać więcej informacji, zobacz Organizowanie przebiegów trenowania za pomocą eksperymentów MLflow.

Prerequisites

Odczytywanie danych przebiegu eksperymentu MLflow wymaga środowiska Databricks Runtime 6.0 ML lub nowszego.

Usage

W poniższych przykładach pokazano, jak ładować i filtrować dane eksperymentu MLflow przy użyciu interfejsu API ramki danych platformy Spark.

Ładowanie danych z eksperymentu notatnika

Aby załadować dane z eksperymentu w bieżącym notatniku, wywołaj load() bez argumentów.

Python

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

Scala

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

Ładowanie danych przy użyciu identyfikatorów eksperymentów

Aby załadować dane z co najmniej jednego eksperymentu w obszarze roboczym, przekaż identyfikatory eksperymentów w postaci ciągu rozdzielonego przecinkami do 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)

Ładowanie danych przy użyciu nazwy eksperymentu

Aby załadować dane na podstawie nazwy eksperymentu, należy przy użyciu klienta MLflow przekształcić nazwę w identyfikator, a następnie przekazać ten identyfikator do 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)

Filtrowanie danych na podstawie metryk i parametrów

Po załadowaniu danych eksperymentu użyj standardowych wyrażeń filtru ramki danych do wykonywania zapytań dotyczących metryk i parametrów.

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)

Schemat danych wyjściowych

Schemat zwracany przez mlflow-experiment źródło danych jest stały niezależnie od załadowanego eksperymentu:

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

Dodatkowe zasoby