次の方法で共有


MLflow システム テーブルリファレンス

Important

MLflow システム テーブルは パブリック プレビュー段階です

mlflow システム テーブルは、MLflow 追跡サービス内で管理されている実験メタデータをキャプチャします。 これらのテーブルを使用すると、特権ユーザーは、リージョン内のすべてのワークスペースで MLflow データに対して Databricks lakehouse ツールを利用できます。 テーブルを使用して、カスタム AI/BI ダッシュボードの構築、SQL アラートの設定、大規模な分析クエリの実行を行うことができます。

mlflowシステム テーブルを使用して、ユーザーは次のような質問に回答できます。

  • 信頼性が最も低い実験はどれですか?
  • さまざまな実験の平均 GPU 使用率は何ですか?

mlflow システム テーブルは、2025 年 9 月 2 日にすべてのリージョンの MLflow データの記録を開始しました。 その日付より前のデータは使用できない場合があります。

使用可能なテーブル

mlflow スキーマには、次の表が含まれています。

  • system.mlflow.experiments_latest: 実験名と論理的な削除イベントを記録します。 このデータは、MLflow UI の 実験ページ に似ています。
  • system.mlflow.runs_latest: 実行ライフサイクル情報、各実行に関連付けられているパラメーターとタグ、およびすべてのメトリックの最小値、最大値、および最新の値の集計された統計を記録します。 このデータは、 実行の検索または実行の詳細ページに似ています。
  • system.mlflow.run_metrics_history: 実行にログオンしたすべてのメトリックの名前、値、タイムスタンプ、およびステップを記録します。これは、実行からの詳細な時系列をプロットするために使用できます。 このデータは、[ 実行の詳細] ページの [メトリック] タブに似ています。

ダッシュボードを使用して実行情報をプロットする例を次に示します。

実行の詳細ダッシュボード

テーブル スキーマ

説明とサンプル データを含むテーブル スキーマを次に示します。

ER 図

system.mlflow.experiments_latest

列名 データの種類 Description Example ヌラブル
account_id 文字列 MLflow 実験を含むアカウントの ID "bd59efba-4444-4444-443f-44444449203" いいえ
update_time timestamp 実験が最後に更新されたシステム時刻 2024-06-27T00:58:57.000+00:00 いいえ
delete_time timestamp MLflow 実験がユーザーによって論理的に削除されたシステム時刻 2024-07-02T12:42:59.000+00:00 イエス
experiment_id 文字列 MLflow 実験の ID "2667956459304720" いいえ
workspace_id 文字列 MLflow 実験を含むワークスペースの ID "6051921418418893" いいえ
name 文字列 ユーザーが指定した実験の名前 "/Users/first.last@databricks.com/myexperiment" いいえ
create_time timestamp 実験が作成されたシステム時刻 2024-06-27T00:58:57.000+00:00 いいえ

system.mlflow.runs_latest

列名 データの種類 Description Example ヌラブル
account_id 文字列 MLflow 実行を含むアカウントの ID "bd59efba-4444-4444-443f-44444449203" いいえ
update_time timestamp 実行が最後に更新されたシステム時刻 2024-06-27T00:58:57.000+00:00 いいえ
delete_time timestamp MLflow 実行がユーザーによって論理的に削除されたシステム時刻 2024-07-02T12:42:59.000+00:00 イエス
workspace_id 文字列 MLflow 実行を含むワークスペースの ID "6051921418418893" いいえ
run_id 文字列 MLflow 実行の ID "7716d750d279487c95f64a75bff2ad56" いいえ
experiment_id 文字列 MLflow 実行を含む MLflow 実験の ID "2667956459304720" いいえ
created_by 文字列 MLflow 実行を作成した Databricks プリンシパルまたはユーザーの名前 "<user>@<___domain-name>" イエス
start_time timestamp MLflow の実行が開始されたときのユーザー指定の時刻 2024-06-27T00:58:57.000+00:00 いいえ
end_time timestamp MLflow の実行が終了したユーザー指定の時刻 2024-07-02T12:42:59.000+00:00 イエス
run_name 文字列 MLflow 実行の名前 "wistful-deer-932""my-xgboost-training-run" いいえ
status 文字列 MLflow 実行の実行状態 "FINISHED" いいえ
params map<string,string> MLflow 実行のキー値パラメーター {"n_layers": "5", "batch_size": "64", "optimizer": "Adam"} いいえ
tags map<string,string> MLflow 実行で設定されたキーと値のタグ {"ready_for_review": "true"} いいえ
aggregated_metrics list<struct<string、double、double、double>> run_metrics_historyのメトリックを要約した集計ビュー [{"metric_name": "training_accuracy", "latest_value": 0.97, "min_value": 0.8, "max_value": 1.0}, ...] いいえ
aggregated_metrics.metric_name 文字列 メトリックのユーザー指定の名前 "training_accuracy" いいえ
aggregated_metrics.latest_value ダブル この時系列 (実行、metric_name) の組み合わせのmetric_nameの最新の値run_metrics_history 0.97 いいえ
aggregated_metrics.max_value ダブル この時系列 (実行、metric_name) の組み合わせのmetric_nameの最大値 (run_metrics_history)。 メトリックに対して NaN 値が記録された場合、値は NaN になります 1.0 いいえ
aggregated_metrics.min_value ダブル この時系列 (実行、metric_name) の組み合わせにおけるmetric_nameの最小値 (run_metrics_history)。 メトリックに対して NaN 値が記録された場合、値は NaN になります 0.8 いいえ

system.mlflow.run_metrics_history

列名 データの種類 Description Example ヌラブル
account_id 文字列 メトリックがログに記録された MLflow 実行を含むアカウントの ID "bd59efba-4444-4444-443f-44444449203" いいえ
insert_time timestamp メトリックが挿入されたシステム時刻 2024-06-27T00:58:57.000+00:00 いいえ
record_id 文字列 同じ値を区別するメトリックの一意識別子 "Ae1mDT5gFMSUwb+UUTuXMQ==" いいえ
workspace_id 文字列 メトリックがログに記録された MLflow 実行を含むワークスペースの ID "6051921418418893" いいえ
experiment_id 文字列 メトリックがログに記録された MLflow 実行を含む MLflow 実験の ID "2667956459304720" いいえ
run_id 文字列 メトリックがログに記録された MLflow 実行の ID "7716d750d279487c95f64a75bff2ad56" いいえ
metric_name 文字列 メトリック名 "training_accuracy" いいえ
metric_time timestamp メトリックが計算されたユーザー指定の時刻 2024-06-27T00:55:54.1231+00:00 いいえ
metric_step bigint メトリックがログに記録されたモデル トレーニングまたはエージェント開発のステップ (エポックなど) 10 いいえ
metric_value ダブル メトリック値 0.97 いいえ

ユーザーとのアクセスの共有

既定では、アカウント管理者のみがシステム スキーマにアクセスできます。 追加のユーザーにテーブルへのアクセス権を付与するには、アカウント管理者が、system.mlflow. スキーマに対する USE アクセス許可とSELECTアクセス許可を付与する必要があります。 「Unity Catalog の権限とセキュリティ保護可能なオブジェクト」を参照してください。

これらのテーブルにアクセスできるユーザーは、アカウント内のすべてのワークスペースのすべての MLflow 実験のメタデータを表示できます。 個々のユーザーではなく特定のグループのテーブル アクセスを構成するには、 Unity カタログのベスト プラクティスを参照してください。

すべてのユーザーにテーブルへのアクセスを許可するよりも詳細な制御が必要な場合は、カスタム条件を持つ 動的ビュー を使用して、グループに特定のアクセス権を付与できます。 たとえば、特定の実験 ID のセットからのレコードのみを表示するビューを作成できます。 カスタム ビューを構成した後、ユーザーにビューの名前を付けて、システム テーブルではなく動的ビューに対して直接クエリを実行できるようにします。

MLflow 実験のアクセス許可Unity カタログのアクセス許可と直接同期することはできません。

MLflow メタデータのユース ケースの例

次のセクションでは、MLflow システム テーブルを使用して、MLflow の実験と実行に関する質問に回答する方法の例を示します。

実験の信頼性を低くするために SQL アラートを構成する

Databricks SQL アラート (ベータ) を使用すると、定期的に定期的なクエリをスケジュールし、特定の制約が満たされなくなった場合に通知を受け取ることができます。

この例では、ワークスペース内で最も頻繁に実行される実験を調べて、信頼性が低く、特別な注意が必要な可能性があるかどうかを判断するアラートを作成します。 クエリでは、 runs_latest テーブルを使用して、完了としてマークされた実験ごとの実行数を、実行の合計数で割って計算します。

SQL アラート機能は現在ベータ版であり、 従来のアラート も使用できます。

  1. サイドバー で [アラート] アイコン の [アラート] をクリックし、[ アラートの作成] をクリックします。

  2. 次のクエリをコピーしてクエリ エディターに貼り付けます。

     SELECT
       experiment_id,
       AVG(CASE WHEN status = 'FINISHED' THEN 1.0 ELSE 0.0 END) AS success_ratio,
       COUNT(status) AS run_count
     FROM system.mlflow.runs_latest
     WHERE status IS NOT NULL
     GROUP BY experiment_id
     ORDER BY run_count DESC
     LIMIT 20;
    
  3. [ 条件 ] フィールドで、条件を MIN success_ratio < 0.9に設定します。 これにより、上位 20 件の実験 (実行数別) のいずれかが成功率が 90%未満の場合にアラートがトリガーされます。

さらに、条件のテスト、スケジュールの設定、通知の構成を行うことができます。 アラートの構成の詳細については、 SQL アラートの設定を参照してください。 クエリを使用した構成の例を次に示します。

SQL アラートの構成

サンプル クエリ

次のサンプル クエリを使用して、 Databricks SQL を使用してアカウントの MLflow アクティビティに関する情報を取得できます。 Spark で Python ノートブックなどのツールを利用することもできます。

から実行情報を取得する runs_latest

SELECT
  run_name,
  date(start_time) AS start_date,
  status,
  TIMESTAMPDIFF(MINUTE, start_time, end_time) AS run_length_minutes
FROM system.mlflow.runs_latest
WHERE
  experiment_id = :experiment_id
  AND run_id = :run_id
LIMIT 1

これにより、指定された実行に関する情報が返されます。

クエリ結果の実行情報

experiments_latestから実験と実行情報を取得するruns_latest

SELECT
  runs.run_name,
  experiments.name,
  date(runs.start_time) AS start_date,
  runs.status,
  TIMESTAMPDIFF(MINUTE, runs.start_time, runs.end_time) AS run_length_minutes
FROM system.mlflow.runs_latest runs
  JOIN system.mlflow.experiments_latest experiments ON runs.experiment_id = experiments.experiment_id
  WHERE
    runs.experiment_id = :experiment_id
    AND runs.run_id = :run_id
LIMIT 1

特定の実行の概要統計を取得する run_metrics_history

SELECT
  metric_name,
  count(metric_time) AS num_data_points,
  ROUND(avg(metric_value), 1) AS avg,
  ROUND(max(metric_value), 1) AS max,
  ROUND(min(metric_value), 1) AS min,
  ROUND(PERCENTILE_CONT(0.25) WITHIN GROUP (ORDER BY metric_value), 1) AS pct_25,
  ROUND(PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY metric_value), 1) AS median,
  ROUND(PERCENTILE_CONT(0.75) WITHIN GROUP (ORDER BY metric_value), 1) AS pct_75
FROM
  system.mlflow.run_metrics_history
WHERE
  run_id = :run_id
GROUP BY
  metric_name, run_id
LIMIT 100

これにより、特定の run_idのメトリックの概要が返されます。

クエリ結果の実行の概要メトリック

実験と実行のダッシュボード

MLflow システム テーブル データの上に ダッシュボード を構築して、MLflow 実験を分析し、ワークスペース全体から実行することができます。

詳細については、システム テーブルの MLflow メタデータを使用したダッシュボードの構築に関するページを参照してください。