使用 MLflow 追蹤實驗和模型
追蹤 是儲存實驗相關信息的程式。 在本文中,您將瞭解如何使用 MLflow 來追蹤實驗,並在 Azure 機器學習 工作區中執行。
連線到 Azure Machine Learning 時,MLflow API 中提供的某些方法可能無法使用。 如需支援和不支援作業的詳細資訊,請參閱查詢執行和實驗的支援矩陣。 您也可以從 MLflow 和 Azure 機器學習 一文中了解 Azure 機器學習 中支援的 MLflow 功能。
注意
- 若要追蹤在 Azure Databricks 上執行的實驗,請參閱使用 MLflow 和 Azure 機器學習 追蹤 Azure Databricks ML 實驗。
- 若要追蹤在 Azure Synapse Analytics 上執行的實驗,請參閱使用 MLflow 和 Azure 機器學習 追蹤 Azure Synapse Analytics ML 實驗。
必要條件
擁有 Azure 訂用帳戶,其中包含免費或付費版本的 Azure 機器學習。
若要執行 Azure CLI 和 Python 命令,請安裝 Azure CLI v2 和適用於 Python 的 Azure 機器學習 SDK v2。
ml
Azure CLI 的擴充功能會在您第一次執行 Azure 機器學習 CLI 命令時自動安裝。
安裝 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 以程式設計方式存取它們。
若要在工作室中檢視計量和成品:
在工作區的 [ 作業] 頁面上,選取實驗名稱。
在實驗詳細數據頁面上,選取 [ 計量] 索引標籤 。
選取記錄的計量,以在右側呈現圖表。 您可以藉由套用平滑、變更色彩或繪製單一圖表上的多個計量來自訂圖表。 您也可以重設大小並重新排列版面配置。
建立想要的檢視之後,請儲存以供日後使用,並使用直接連結與您的小組成員共用。
若要透過 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。