共用方式為


使用 MLflow 追蹤實驗和模型

追蹤 是儲存實驗相關信息的程式。 在本文中,您將瞭解如何使用 MLflow 來追蹤實驗,並在 Azure 機器學習 工作區中執行。

連線到 Azure Machine Learning 時,MLflow API 中提供的某些方法可能無法使用。 如需支援和不支援作業的詳細資訊,請參閱查詢執行和實驗的支援矩陣。 您也可以從 MLflow 和 Azure 機器學習 一文中了解 Azure 機器學習 中支援的 MLflow 功能。

注意

必要條件

  • 安裝 MLflow SDK mlflow 套件和適用於 MLflow 的 azureml-mlflow Azure 機器學習 外掛程式,如下所示:

    pip install mlflow azureml-mlflow
    

    提示

    您可使用 mlflow-skinny 套件,這是輕量型 MLflow 套件,沒有 SQL 儲存體、伺服器、UI 或資料科學相依性。 對於主要需要 MLflow 追蹤和記錄功能的使用者,而不需匯入完整的功能套件,包括部署,建議使用此套件。

  • 建立 Azure Machine Learning 工作區。 若要建立工作區,請參閱 建立您需要開始使用的資源。 檢閱您在工作區中執行 MLflow 作業所需的存取權限

  • 若要執行遠程追蹤,或追蹤在 Azure 機器學習 外部執行的實驗,請將 MLflow 設定為指向 Azure 機器學習 工作區的追蹤 URI。 如需如何將 MLflow 連線至工作區的詳細資訊,請參閱設定適用於 Azure Machine Learning 的 MLflow

設定實驗

MLflow 會在實驗和執行中組織資訊。 執行稱為 Azure 機器學習 中的作業。 根據預設,執行記錄至名為 Default 的自動建立實驗,但您可以設定要追蹤的實驗。

如需互動式定型,例如在 Jupyter 筆記本中,請使用 MLflow 命令 mlflow.set_experiment()。 例如,下列程式碼片段會設定實驗:

experiment_name = 'hello-world-example'
mlflow.set_experiment(experiment_name)

設定執行

Azure 機器學習 追蹤 MLflow 呼叫執行的訓練作業。 使用執行來擷取作業執行的所有處理。

當您以互動方式工作時,只要記錄需要作用中執行的資訊,MLflow 就會開始追蹤您的訓練例程。 例如,如果已啟用 Mlflow 的自動記錄功能,MLflow 追蹤會在您記錄計量或參數時啟動,或啟動定型週期。

不過,明確啟動執行通常很有説明,特別是如果您想要在 [持續時間 ] 字段中擷取實驗的總時間。 若要明確啟動執行,請使用 mlflow.start_run()

無論您是否手動啟動執行,您最終都需要停止執行,讓 MLflow 知道您的實驗執行已完成,而且可以將執行的狀態標示為 [已完成]。 若要停止執行,請使用 mlflow.end_run()

下列程式代碼會手動啟動執行,並在筆記本結尾結束:

mlflow.start_run()

# Your code

mlflow.end_run()

最好手動啟動執行,以免忘記結束它們。 您可以使用內容管理員範例來協助您記住結束執行。

with mlflow.start_run() as run:
    # Your code

當您使用 啟動新的執行mlflow.start_run()時,指定 參數會很有用run_name,稍後會在 Azure 機器學習 使用者介面中轉譯為執行的名稱。 這種做法可協助您更快速地識別執行。

with mlflow.start_run(run_name="hello-world-example") as run:
    # Your code

啟用 MLflow 自動記錄

您可以使用 MLflow 手動記錄計量、參數和檔案,也可以依賴 MLflow 的自動記錄功能。 MLflow 支援的每個機器學習架構都會決定自動追蹤的內容。

若要啟用自動記錄功能,請在您的定型程式碼前面插入下列程式碼:

mlflow.autolog()

在您的工作區中檢視計量和成品

您的工作區中會追蹤 MLflow 記錄中的計量和成品。 您可以在 Azure Machine Learning 工作室 中檢視和存取它們,或透過 MLflow SDK 以程式設計方式存取它們。

若要在工作室中檢視計量和成品:

  1. 在工作區的 [ 作業] 頁面上,選取實驗名稱。

  2. 在實驗詳細數據頁面上,選取 [ 計量] 索引標籤

  3. 選取記錄的計量,以在右側呈現圖表。 您可以藉由套用平滑、變更色彩或繪製單一圖表上的多個計量來自訂圖表。 您也可以重設大小並重新排列版面配置。

  4. 建立想要的檢視之後,請儲存以供日後使用,並使用直接連結與您的小組成員共用。

    計量檢視的螢幕快照,其中顯示從計量建立的計量和圖表清單。

若要透過 MLflow SDK 以程式設計方式存取或查詢計量、參數和成品,請使用 mlflow.get_run()

import mlflow

run = mlflow.get_run("<RUN_ID>")

metrics = run.data.metrics
params = run.data.params
tags = run.data.tags

print(metrics, params, tags)

提示

上述範例只會傳回指定計量的最後一個值。 若要擷取指定計量的所有值,請使用 mlflow.get_metric_history 方法。 如需擷取計量值的詳細資訊,請參閱 從執行取得參數和計量。

若要下載您記錄的成品,例如檔案和模型,請使用 mlflow.artifacts.download_artifacts()

mlflow.artifacts.download_artifacts(run_id="<RUN_ID>", artifact_path="helloworld.txt")

如需如何使用 MLflow 從實驗擷取或比較資訊,以及使用 MLflow 在 Azure 機器學習 中執行的詳細資訊,請參閱查詢和比較實驗與 MLflow