閱讀 MLflow 實驗

資料來源提供 mlflow-experiment Spark DataFrameReader API,用於將 MLflow 實驗執行資料載入 DataFrame。 Azure Databricks 使用者常用它來分析訓練執行結果、比較實驗間的指標,並在實驗歷史基礎上建立儀表板。 如需詳細資訊,請參閱 使用 MLflow 實驗組織訓練執行。

先決條件

讀取 MLflow 實驗執行資料需要 Databricks Runtime 6.0 ML 及以上版本。

Usage

以下範例展示了如何使用 Spark DataFrame API 載入與過濾 MLflow 實驗資料。

從筆記本實驗載入數據

若要從目前筆記本的實驗載入資料,請在不帶任何引數的情況下呼叫 load()。

Python

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

Scala

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

使用實驗標識碼載入數據

要從一個或多個工作區實驗載入資料,請以逗號分隔字串的方式將實驗 ID 傳遞給 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)

使用實驗名稱載入資料

要依實驗名稱載入資料,請使用 MLflow 用戶端將名稱解析為 ID,然後將 ID 傳給 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)

根據計量和參數篩選數據

載入實驗資料後,使用標準 DataFrame 濾波表達式來跨度量與參數查詢。

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)

輸出結構描述

由 mlflow-experiment 資料來源傳回的結構描述是固定的,無論載入哪個實驗皆然:

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

其他資源