MLflow experiment | Databricks on AWS [2022/11/9時点]の翻訳です。
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
MLflowエクスペリメントデータソースは、MLflowエクスペリメントのランデータをロードするための標準APIを提供します。ノートブックエクスペリメントから、あるいはエクスペリメント名、エクスペリメントIDを用いてデータをロードすることができます。
要件
Databricks機械学習ランタイム6.0以降。
ノートブックエクスペリメントからデータのロード
ノートブックエクスペリメントからデータをロードするには、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を指定します。
Python
df = spark.read.format("mlflow-experiment").load("3270527066281272")
display(df)
Scala
val df = spark.read.format("mlflow-experiment").load("3270527066281272,953590262154175")
display(df)
エクスペリメント名によるデータのロード
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)
メトリクスとパラメーターに基づくデータのフィルタリング
このセクションのサンプルでは、エクスペリメントからデータをロードした後にどの様にフィルタリングできるのかを示しています。
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)
スキーマ
データソースによって返却されるデータフレームのスキーマは以下の様になります。
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