MLflow エクスペリメントを読む
The mlflow-experiment データソースは、MLflow エクスペリメントの実行のデータを DataFrame にロードするための Spark DataFrameReader API を提供します。Databricks ユーザーは、トレーニング実行結果の分析、エクスペリメント間でのメトリクス比較、およびエクスペリメント履歴に基づくダッシュボード構築に、これを一般的に使用しています。詳細については、「MLflow エクスペリメントを使用したトレーニング実行の整理」を参照してください。
前提条件
MLflowエクスペリメントの実行データを読み取るには、Databricks Runtime 6.0 機械学習以上が必要です。
使い方
以下の例では、Spark DataFrame API を使用してMLflowエクスペリメントデータを読み込み、フィルタリングする方法を示します。
ノートブック エクスペリメントからデータを読み込む
現在のノートブックのエクスペリメントからデータをロードするには、引数なしでload()を呼び出します。
- Python
- Scala
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
- Scala
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
- Scala
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
- Scala
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 に格納されているのではなく、Delta Sharing 経由で共有されている場合は、同じ DataFrameReader API を使用して、
deltasharing形式で共有テーブルを読み取ります。