mlflow-experiment データ ソースには、MLflow 実験の実行データを DataFrame に読み込むための Spark DataFrameReader API が用意されています。 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 を使用してデータを読み込む
1 つ以上のワークスペース実験からデータを読み込むには、実験 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
その他のリソース
-
Apache Spark DataFrames を使用した OpenSharing 共有テーブルの読み取り: データが MLflow に格納されるのではなく、差分共有によって共有されている場合は、
deltasharing形式を使用して、同じ DataFrameReader API で共有テーブルを読み取ります。