共用方式為


使用 MLflow 執行來查看訓練結果

本文說明如何使用 MLflow 執行來檢視和分析模型定型實驗的結果,以及如何管理和組織執行。 如需 MLflow 實驗的詳細資訊,請參閱 透過 MLflow 實驗組織訓練執行

MLflow 執行對應於模型程式碼的單次執行。 每次執行都會記錄啟動執行的筆記本、執行過程中所創建的任何模型、以鍵值對形式保存的模型參數和指標、執行元數據的標籤,以及執行過程中創建的任何產物或輸出檔案等資訊。

所有 MLflow 執行皆會記錄到作用中的實驗。 如果您尚未明確將實驗設定為啟用狀態,則執行結果會被記錄到預設的筆記本實驗中。

檢視執行詳細數據

您可以從其實驗詳細數據頁面,或直接從建立執行的筆記本存取執行。

從[實驗詳細數據] 頁面,按一下運行表中的運行名稱。

從實驗詳細數據頁面開啟實驗執行。

從筆記本中,點擊實驗執行側邊欄中的執行名稱。

從筆記本開啟實驗運行。

執行畫面 會顯示執行標識碼、用於執行的參數、執行所產生的計量,以及執行的詳細數據,包括來源筆記本的連結。 從執行儲存的成品可在 [成品] 索引卷標 中取得。

檢視執行

預測的程式碼片段

如果您從執行中記錄模型,模型會出現在 [Artifacts] 索引標籤中,以及說明如何在 Spark 和 Pandas DataFrame 上載入和使用模型進行預測的代碼段。

預測程式碼片段

檢視用於運行的筆記本

若要檢視建立執行的筆記本的版本

  • 在 [實驗詳細數據] 頁面上,按兩下 [來源] 資料行 中的連結。
  • 在 [執行] 頁面上,按下 [來源] 旁的連結。
  • 從筆記本的 [實驗執行] 側邊欄中,按下該實驗執行的方塊中的 [筆記本]筆記本版本圖示 圖示。

與運行相關聯的筆記本版本會出現在主視窗中,並有一個顯示運行日期和時間的高亮顯示欄。

將標記新增至執行

標籤是索引鍵/值組,您可稍後建立和用來搜尋執行

  1. 在 [執行] 頁面的 [詳細數據] 數據表中,按兩下 [卷標旁的 [新增]。

    標籤數據表

  2. [新增/編輯標籤] 對話框隨即開啟。 在 [金鑰] 欄位中,輸入金鑰的名稱,然後點擊 [新增標籤]。

    新增標籤。

  3. 在 [] 字段中,輸入標籤的值。

  4. 點擊加號以儲存您剛才輸入的鍵值對。

    加號以儲存鍵值對。

  5. 若要新增其他標籤,請重複步驟 2 到 4。

  6. 完成時,按一下 儲存標籤

編輯或刪除執行的標記

  1. 在 [執行] 頁面上的 [詳細數據] 數據表中,按兩下 [鉛筆圖示]。 現有標籤旁。

    標籤數據表

  2. [新增/編輯標籤] 對話框隨即開啟。

    1. 若要刪除標記,請按下該標籤上的 X。

      刪除標籤。

    2. 若要編輯標籤,請從下拉功能表中選取索引鍵,然後編輯 [值] 字段中的值。 按一下加號以儲存您的變更。

      編輯標籤。

  3. 完成時,按一下 儲存標籤

重現執行的軟體環境

您可以按下執行頁面右上角的 [重現執行環境],以重現該次執行的準確軟體環境。 下列對話方塊隨即顯示:

重現執行對話方塊

當您按下 [確認] 時,使用預設設定:

  • 筆記本會被複製到對話方塊中顯示的位置。
  • 如果原始叢集仍然存在,則複製的筆記本會連結至原始叢集,並啟動叢集。
  • 如果原始叢集已不存在,則會建立並啟動具有相同組態的新叢集,包括任何已安裝的程式庫。 筆記本會連結至您所使用的最後一個叢集。

您可以為複製的筆記本選擇不同的位置,並檢查叢集設定和已安裝的函式庫。

  • 若要選擇不同的資料夾來儲存複製的筆記本,請按下 [編輯資料夾]
  • 若要查看叢集規格,請按下 [檢視規格]。若要只複製筆記本而非叢集,請取消選取此選項。
  • 如果原始叢集已不存在,您可以按下 [檢視連結庫]來查看原始叢集上安裝的連結庫。 如果原始叢集仍然存在,此區段會呈現灰色。

重新命名執行

若要重新命名執行,請按下執行頁面右上角的 kebab 選單 Kebab 選單 按鈕(位於 [許可權] 按鈕旁),然後選取 [重新命名]。

從執行頁面重新命名一次執行。

選取要顯示的欄位

若要控制實驗詳細資料頁面上的執行記錄表中顯示的欄,請按下 [欄],並從下拉選單中選取。

篩選執行

您可以根據參數或指標值,在實驗詳細資料頁面上的資料表中搜尋運行記錄。 您也可依標記搜尋執行。

  • 要搜尋符合包含參數和計量值的表達式的執行,請在搜尋欄位輸入查詢,然後按 Enter。 一些查詢語法範例如下:

    metrics.r2 > 0.3

    params.elasticNetParam = 0.5

    params.elasticNetParam = 0.5 AND metrics.avg_areaUnderROC > 0.3

    MIN(metrics.rmse) <= 1

    MAX(metrics.memUsage) > 0.9

    LATEST(metrics.memUsage) = 0 AND MIN(metrics.rmse) <= 1

    根據預設,計量值會根據上次記錄的值進行篩選。 使用 MINMAX 可讓您分別根據最小或最大度量值來搜尋運行。 只有在 2024 年 8 月之後記錄的運行,才會顯示最小和最大計量值。

  • 若要依標記搜尋執行,請輸入以下格式的標籤:tags.<key>="<value>"。 字串值必須以引號括住,如下所示。

    tags.estimator_name="RandomForestRegressor"

    tags.color="blue" AND tags.size=5

    索引鍵和值都可以包含空格。 如果索引鍵包含空格,您必須將其括在反引號中,如下所示。

    tags.`my custom tag` = "my value"
    

您也可以根據運行的狀態(作用中或已刪除)、創建時間,以及所使用的資料集來篩選運行。 若要這樣做,請分別從 時間創建狀態數據集 下拉功能表中選取。

篩選執行

下載執行

您可以從 [實驗詳細資料] 頁面下載執行,如下所示:

  1. 單擊 Kebab 功能表 開啟 kebab 功能表。

    Kebab 功能表,並在 [實驗] 頁面上下載選項。

  2. 若要下載 CSV 格式的檔案,其中包含顯示的所有回合(最多 100 個),請選取 [下載 <n> 執行]。 MLflow 會建立並下載一個文件,每列代表一個執行,並包含每個執行的以下字段:

    Start Time, Duration, Run ID, Name, Source Type, Source Name, User, Status, <parameter1>, <parameter2>, ..., <metric1>, <metric2>, ...
    
  3. 如果您要下載超過 100 個運行記錄,或希望透過程式下載運行記錄,請選擇 [下載所有運行記錄。 隨即開啟對話框,其中顯示您可以在筆記本中複製或開啟的代碼段。 在筆記本數據格中執行此程式代碼之後,請選取 [從數據格輸出下載所有數據列

刪除執行

您可以遵循下列步驟,從實驗詳細資訊頁面刪除執行紀錄:

  1. 在實驗中,點擊執行項目左側的複選框,以選取一或多個回合。
  2. 按一下刪除
  3. 如果執行是父系執行,請決定是否也想要刪除子系執行。 預設會選取此選項。
  4. 按一下 [刪除] 以確認。 已刪除的執行會儲存 30 天。 若要顯示已刪除的執行,請在 [狀態] 欄位中選取 [已刪除]

根據建立時間執行大量刪除

您可使用 Python 來大量刪除在 UNIX 時間戳記之前或之上建立的實驗執行。 使用 Databricks Runtime 14.1 或更新版本,您可呼叫 mlflow.delete_runs API 來刪除執行,並傳回已刪除的執行數目。

以下是 mlflow.delete_runs 參數:

  • experiment_id:包含要刪除的執行的實驗的識別碼。
  • max_timestamp_millis:以毫秒為單位的建立時間戳記上限,自 UNIX Epoch 以來用於刪除執行。 只會刪除在此時間戳記之前或之上建立的執行。
  • max_runs: 選用。 正整數,表示要刪除的執行數目上限。 max_runs 允許的最大值為 10000。 如果未指定,max_runs 會預設為 10000。
import mlflow

# Replace <experiment_id>, <max_timestamp_ms>, and <max_runs> with your values.
runs_deleted = mlflow.delete_runs(
  experiment_id=<experiment_id>,
  max_timestamp_millis=<max_timestamp_ms>,
  max_runs=<max_runs>
)
# Example:
runs_deleted = mlflow.delete_runs(
  experiment_id="4183847697906956",
  max_timestamp_millis=1711990504000,
  max_runs=10
)

使用 Databricks Runtime 13.3 LTS 或更早版本,您可在 Azure Databricks Notebook 中執行下列用戶端程式碼。

from typing import Optional

def delete_runs(experiment_id: str,
                max_timestamp_millis: int,
                max_runs: Optional[int] = None) -> int:
    """
    Bulk delete runs in an experiment that were created prior to or at the specified timestamp.
    Deletes at most max_runs per request.

    :param experiment_id: The ID of the experiment containing the runs to delete.
    :param max_timestamp_millis: The maximum creation timestamp in milliseconds
                                 since the UNIX epoch for deleting runs. Only runs
                                 created prior to or at this timestamp are deleted.
    :param max_runs: Optional. A positive integer indicating the maximum number
                     of runs to delete. The maximum allowed value for max_runs
                     is 10000. If not specified, max_runs defaults to 10000.
    :return: The number of runs deleted.
    """
    from mlflow.utils.databricks_utils import get_databricks_host_creds
    from mlflow.utils.request_utils import augmented_raise_for_status
    from mlflow.utils.rest_utils import http_request

    json_body = {"experiment_id": experiment_id, "max_timestamp_millis": max_timestamp_millis}
    if max_runs is not None:
        json_body["max_runs"] = max_runs
    response = http_request(
        host_creds=get_databricks_host_creds(),
        endpoint="/api/2.0/mlflow/databricks/runs/delete-runs",
        method="POST",
        json=json_body,
    )
    augmented_raise_for_status(response)
    return response.json()["runs_deleted"]

如需參數和傳回值規格,請參閱 Azure Databricks 實驗 API 檔,以根據建立時間 刪除執行。

恢復執行

您可以從用戶介面(UI)還原先前刪除的執行,如下所示:

  1. 在 [實驗] 頁面上,於 [狀態] 欄位中,選取 [已刪除] 以顯示已刪除的執行紀錄。
  2. 在執行左側的複選框中點擊,選取一或多個執行。
  3. 點選 [還原]
  4. 按一下 還原 以確認。 當您在 [狀態] 欄位中選取 [Active] 時,現在會顯示還原的執行。

根據刪除時間執行批量還原

您也可以使用 Python 大量地還原在 UNIX 時間戳或之後被刪除的實驗執行記錄。 使用 Databricks Runtime 14.1 或更新版本,您可以呼叫 mlflow.restore_runs API 來還原執行,並傳回還原的執行數目。

以下是 mlflow.restore_runs 參數:

  • experiment_id:包含要還原之執行之實驗的標識碼。
  • min_timestamp_millis:以毫秒為單位的刪除時間戳記下限,自 UNIX Epoch 以來用於還原執行。 只有在此時間戳記或之後刪除的執行才會還原。
  • max_runs: 選用。 正整數,表示要還原的執行數目上限。 max_runs 允許的最大值為 10000。 如果未指定,max_runs 會預設為 10000。
import mlflow

# Replace <experiment_id>, <min_timestamp_ms>, and <max_runs> with your values.
runs_restored = mlflow.restore_runs(
  experiment_id=<experiment_id>,
  min_timestamp_millis=<min_timestamp_ms>,
  max_runs=<max_runs>
)
# Example:
runs_restored = mlflow.restore_runs(
  experiment_id="4183847697906956",
  min_timestamp_millis=1711990504000,
  max_runs=10
)

使用 Databricks Runtime 13.3 LTS 或更早版本,您可在 Azure Databricks Notebook 中執行下列用戶端程式碼。

from typing import Optional

def restore_runs(experiment_id: str,
                 min_timestamp_millis: int,
                 max_runs: Optional[int] = None) -> int:
    """
    Bulk restore runs in an experiment that were deleted at or after the specified timestamp.
    Restores at most max_runs per request.

    :param experiment_id: The ID of the experiment containing the runs to restore.
    :param min_timestamp_millis: The minimum deletion timestamp in milliseconds
                                 since the UNIX epoch for restoring runs. Only runs
                                 deleted at or after this timestamp are restored.
    :param max_runs: Optional. A positive integer indicating the maximum number
                     of runs to restore. The maximum allowed value for max_runs
                     is 10000. If not specified, max_runs defaults to 10000.
    :return: The number of runs restored.
    """
    from mlflow.utils.databricks_utils import get_databricks_host_creds
    from mlflow.utils.request_utils import augmented_raise_for_status
    from mlflow.utils.rest_utils import http_request
    json_body = {"experiment_id": experiment_id, "min_timestamp_millis": min_timestamp_millis}
    if max_runs is not None:
        json_body["max_runs"] = max_runs
    response = http_request(
        host_creds=get_databricks_host_creds(),
        endpoint="/api/2.0/mlflow/databricks/runs/restore-runs",
        method="POST",
        json=json_body,
    )
    augmented_raise_for_status(response)
    return response.json()["runs_restored"]

如需參數和傳回值規格,請參閱 Azure Databricks 實驗 API 文件,以取得根據刪除時間 還原執行。

比較執行

您可從單一實驗或多個實驗比較執行。 「比較執行」頁面會以表格形式呈現所選擇的執行資訊。 您也可以建立執行結果的視覺效果,以及執行資訊、執行參數和計量的數據表。 請參閱 使用圖形和圖表比較 MLflow 執行

ParametersMetrics 數據表會顯示所有選取回合的執行參數和計量。 這些表格中的欄是由上方的 執行詳情 表格識別。 為了簡單起見,您可以透過點擊 只顯示差異按鈕來隱藏所有選取回合中完全相同的參數和指標。

比較執行狀態頁面檔案表

比較單一實驗的執行

  1. 在 [實驗詳細數據] 頁面中,點選各執行左側的複選框以選擇兩個或多個執行,或點選數據欄最上面的方塊以選擇所有執行。
  2. 按一下 [比較]。 [比較 <N> 執行] 畫面隨即出現。

比較多個實驗的執行

  1. 在 [實驗] 頁面上,按兩下實驗名稱左側方塊,選取您要比較的實驗。
  2. 按下 [比較 (n) (n] 是您選取的實驗數目)。 隨即出現畫面,其中顯示您選取的實驗的所有執行。
  3. 點選執行項目左邊的複選框以選取兩個或更多的執行項目,或勾選欄頂端的方框以選取所有的執行項目。
  4. 按一下 [比較]。 [比較 <N> 執行] 畫面隨即出現。

在工作區之間複製執行

若要透過 Databricks 工作區匯入或匯出 MLflow 執行,您可使用社群導向的開放原始碼專案 MLflow Export-Import