這很重要
MLflow 系統數據表處於 公開預覽狀態。
mlflow系統數據表會擷取在 MLflow 追蹤服務內管理的實驗中繼資料。 這些數據表可讓特殊許可權使用者在區域內所有工作區的 MLflow 數據上利用 Databricks 湖屋工具。 您可以使用這些資料表來建置自訂 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:記錄執行上記錄的所有度量的名稱、值、時間戳記和步驟,可用來繪製執行的詳細時間序列。 此資料類似於 執行詳細資料頁面上的計量索引標籤。
以下是使用儀表板繪製執行資訊的範例:
資料表結構描述
以下是包含說明和範例資料的表格結構描述。
system.mlflow.experiments_latest
| 欄位名稱 | 數據類型 | Description | Example | 可空值 |
|---|---|---|---|---|
account_id |
字串 | 包含 MLflow 實驗之帳戶識別碼 | "bd59efba-4444-4444-443f-44444449203" |
否 |
update_time |
時間戳記 | 上次更新實驗的系統時間 | 2024-06-27T00:58:57.000+00:00 |
否 |
delete_time |
時間戳記 | 使用者虛刪除 MLflow 實驗的系統時間 | 2024-07-02T12:42:59.000+00:00 |
Yes |
experiment_id |
字串 | MLflow 實驗的識別碼 | "2667956459304720" |
否 |
workspace_id |
字串 | 包含 MLflow 實驗的工作區識別碼 | "6051921418418893" |
否 |
name |
字串 | 使用者提供的實驗名稱 | "/Users/first.last@databricks.com/myexperiment" |
否 |
create_time |
時間戳記 | 建立實驗的系統時間 | 2024-06-27T00:58:57.000+00:00 |
否 |
system.mlflow.runs_latest
| 欄位名稱 | 數據類型 | Description | Example | 可空值 |
|---|---|---|---|---|
account_id |
字串 | 包含 MLflow 執行之帳戶識別碼 | "bd59efba-4444-4444-443f-44444449203" |
否 |
update_time |
時間戳記 | 上次更新執行的系統時間 | 2024-06-27T00:58:57.000+00:00 |
否 |
delete_time |
時間戳記 | 使用者虛刪除 MLflow 執行的系統時間 | 2024-07-02T12:42:59.000+00:00 |
Yes |
workspace_id |
字串 | 包含 MLflow 執行的工作區識別碼 | "6051921418418893" |
否 |
run_id |
字串 | MLflow 執行的識別碼 | "7716d750d279487c95f64a75bff2ad56" |
否 |
experiment_id |
字串 | 包含 MLflow 執行的 MLflow 實驗識別碼 | "2667956459304720" |
否 |
created_by |
字串 | 建立 MLflow 執行的 Databricks 主體或使用者名稱 | "<user>@<domain-name>" |
Yes |
start_time |
時間戳記 | 使用者指定的 MLflow 執行啟動時間 | 2024-06-27T00:58:57.000+00:00 |
否 |
end_time |
時間戳記 | MLflow 執行結束時使用者指定的時間 | 2024-07-02T12:42:59.000+00:00 |
Yes |
run_name |
字串 | MLflow 執行的名稱 |
"wistful-deer-932"、"my-xgboost-training-run" |
否 |
status |
字串 | MLflow 執行的執行狀態 | "FINISHED" |
否 |
params |
對應<字串, 字串> | MLflow 執行的索引鍵值參數 | {"n_layers": "5", "batch_size": "64", "optimizer": "Adam"} |
否 |
tags |
對應<字串, 字串> | MLflow 執行上設定的索引鍵值標籤 | {"ready_for_review": "true"} |
否 |
aggregated_metrics |
清單<結構<字串、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 |
雙倍 | 此 (run, 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 執行之帳戶識別碼 | "bd59efba-4444-4444-443f-44444449203" |
否 |
insert_time |
時間戳記 | 插入度量的系統時間 | 2024-06-27T00:58:57.000+00:00 |
否 |
record_id |
字串 | 指標的唯一識別碼,用於區分相同值 | "Ae1mDT5gFMSUwb+UUTuXMQ==" |
否 |
workspace_id |
字串 | 包含計量記錄之 MLflow 執行的工作區識別碼 | "6051921418418893" |
否 |
experiment_id |
字串 | MLflow 實驗的識別碼,其中包含記錄計量之 MLflow 執行 | "2667956459304720" |
否 |
run_id |
字串 | 記錄計量之 MLflow 執行的識別碼 | "7716d750d279487c95f64a75bff2ad56" |
否 |
metric_name |
字串 | 指標名稱 | "training_accuracy" |
否 |
metric_time |
時間戳記 | 使用者在計算度量時指定的時間 | 2024-06-27T00:55:54.1231+00:00 |
否 |
metric_step |
Bigint | 記錄指標的模型訓練或代理程式開發的步驟 (例如,紀元) | 10 |
否 |
metric_value |
雙倍 | 指標值 | 0.97 |
否 |
與使用者共用存取權
依預設,只有帳戶管理員才能存取系統結構描述。 若要授予其他使用者資料表的存取權,帳戶管理員必須授與結構描述的 SELECT USE 和system.mlflow.許可權。 請參閱 Unity Catalog 使用權限與可保護物件。
任何有權存取這些數據表的使用者都可以檢視帳戶中所有工作區所有 MLflow 實驗的中繼資料。 若要設定指定群組的資料表存取權,而不是個別使用者,請參閱 Unity 目錄最佳做法。
如果您需要比授與所有使用者存取資料表更精細的控制,則可以使用具有自訂準則的 動態檢視 來授與群組特定存取權。 例如,您可以建立一個檢視,只顯示一組特定實驗 ID 的記錄。 配置自訂視圖之後,請將視圖的名稱提供給使用者,以便他們可以直接查詢動態視圖,而不是系統表格。
備註
您無法直接將 MLflow 實驗許可權 與 Unity 目錄許可權同步處理。
MLflow 中繼資料的範例使用案例
下列各節提供如何使用 MLflow 系統數據表來回答 MLflow 實驗和執行相關問題的範例。
設定 SQL 警示以取得低實驗可靠性
使用 Databricks SQL 警示 (公開預覽版),您可以排程定期週期性查詢,並在不再符合特定條件約束時收到通知。
此範例會建立警示,以檢查工作區內最常執行的實驗,以判斷它們是否遇到低可靠性,且可能需要特別注意。 查詢會使用資料 runs_latest 表來計算每個標示為已完成的實驗執行次數,除以執行總數。
備註
SQL 警示功能目前處於公開預覽階段,您也可以使用 舊有警示 。
按一下側邊欄中的
,然後按一下 建立警示。在查詢編輯器中複製並貼上下列查詢。
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;在 條件 欄位中,將條件設定為
MIN success_ratio < 0.9。 如果前 20 個實驗中的任何一個 (依執行次數) 的成功率低於 90%,則會觸發警示。
此外,您還可以測試條件、設定排程和配置通知。 如需設定警示的詳細資訊,請參閱 設定 SQL 警示。 以下是使用查詢的設定範例。
範例查詢
您可以使用下列範例查詢,使用 Databricks SQL 取得帳戶中 MLflow 活動的相關資訊。 您也可以將 Python 筆記本等工具與 Spark 結合使用。
從 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 中繼資料建置儀錶板