Microsoft Fabric 中的機器學習實驗
機器學習實驗是組織和控制的主要單位,用於所有相關的機器學習執行。 執行會對應至模型程式碼的單一執行。 在 MLflow 中,追蹤是以實驗和執行為基礎。
機器學習實驗可讓資料科學家在執行其機器學習程式碼時記錄參數、程式碼版本、計量和輸出檔案。 實驗還可讓您視覺化、搜尋和比較執行,以及下載執行檔案和中繼資料,以便在其他工具中分析。
在本文中,您將深入了解資料科學家如何與機器學習實驗互動,並使用機器學習實驗來組織其開發程序,以及追蹤多個執行。
必要條件
- Power BI Premium 訂用帳戶。 如果您沒有 Power BI Premium,請參閱如何購買 Power BI Premium。
- 具有指派的 Premium 容量的 Power BI 工作區。
建立實驗
您可以直接從 Power BI 使用者介面 (UI) 中的資料科學首頁或透過撰寫可使用 MLflow API 的程式碼,來建立機器學習實驗。
使用 UI 建立實驗
若要從 UI 建立機器學習實驗:
建立實驗之後,您可以開始新增執行來追蹤執行計量和參數。
使用 MLflow API 建立實驗
您也可以使用 mlflow.create_experiment()
或 mlflow.set_experiment()
API 直接根據您的製作體驗建立機器學習實驗。 在下列程式碼中,以您的實驗的名稱取代 <EXPERIMENT_NAME>
。
import mlflow
# This will create a new experiment with the provided name.
mlflow.create_experiment("<EXPERIMENT_NAME>")
# This will set the given experiment as the active experiment.
# If an experiment with this name does not exist, a new experiment with this name is created.
mlflow.set_experiment("<EXPERIMENT_NAME>")
管理實驗內的執行
機器學習實驗包含一組執行,可簡化追蹤和比較。 在實驗中,資料科學家可以瀏覽各種執行,並探索基礎參數和計量。 資料科學家也可以比較機器學習實驗內的執行,以識別哪些參數子集會產生所需的模型效能。
追蹤執行
機器學習執行會對應至模型程式碼的單一執行。
每個執行都包含下列資訊:
- 來源:建立執行的筆記本的名稱。
- 已註冊的版本:表示執行是否儲存為機器學習模型。
- 開始日期:執行的開始時間。
- 狀態:執行的進度。
- 超參數:超參數儲存為索引鍵/值組。 索引鍵和值都是字串。
- 計量:執行儲存為索引鍵/值組的計量。 值為數值。
- 輸出檔案:任何格式的輸出檔案。 例如,您可以記錄影像、環境、模型和資料檔案。
檢視最近的執行
您也可以直接從工作區清單檢視,來檢視實驗的最近執行。 此檢視可讓您追蹤最近的活動、快速跳至相關的 Spark 應用程式,並根據執行狀態套用篩選。
比較和篩選執行
若要比較和評估機器學習執行的品質,您可以比較實驗內所選執行之間的參數、計量和中繼資料。
以視覺化方式比較執行
您可以在現有實驗內以視覺化方式比較和篩選執行。 視覺比較可讓您輕鬆地在多個執行之間瀏覽,並加以排序。
若要比較執行:
- 選取包含多個執行的現有機器學習實驗。
- 選取 [檢視] 索引標籤,然後移至 [執行清單] 檢視。 或者,您也可以直接從 [執行詳細資料] 檢視選取 [檢視執行清單] 選項。
- 展開 [自訂資料行] 窗格,以自訂資料表中的資料行。 在這裡,您可以選取您想要查看的屬性、計量和超參數。
- 展開 [篩選] 窗格,根據特定選取的準則縮小結果範圍。
- 選取多個執行,以在 [計量比較] 窗格中比較其結果。 在此窗格中,您可以變更圖表標題、視覺效果類型、X 軸、Y 軸等等,進而自訂圖表。
使用 MLflow API 比較執行
資料科學家也可以使用 MLflow 來查詢和搜尋實驗內的執行。 您可以瀏覽 MLflow 文件,以探索更多 MLflow API,用於搜尋、篩選和比較執行。
取得所有執行
您可以使用 MLflow 搜尋 API mlflow.search_runs()
來取得實驗中的所有執行,方法是在下列程式碼中,以您的實驗名稱取代 <EXPERIMENT_NAME>
,或以您的實驗 ID 取代 <EXPERIMENT_ID>
:
import mlflow
# Get runs by experiment name:
mlflow.search_runs(experiment_names=["<EXPERIMENT_NAME>"])
# Get runs by experiment ID:
mlflow.search_runs(experiment_ids=["<EXPERIMENT_ID>"])
提示
您可以透過向 experiment_ids
參數提供實驗 ID 清單,來搜尋多個實驗。 同樣地,向 experiment_names
參數提供實驗名稱的清單,可讓 MLflow 搜尋多個實驗。 如果您想要比較不同實驗中的執行,這可能會很有用。
順序和限制執行
使用 search_runs
中的參數 max_results
來限制傳回的執行數目。 參數 order_by
可讓您列出要排序的資料行,而且可以包含選用的 DESC
或 ASC
值。 例如,下列範例會傳回實驗中的最後一個執行。
mlflow.search_runs(experiment_ids=[ "1234-5678-90AB-CDEFG" ], max_results=1, order_by=["start_time DESC"])
比較 Fabric 筆記本內的執行
您可以使用 Fabric 筆記本內的 MLFlow 製作小工具來追蹤每個筆記本資料格內產生的 MLflow 執行。 小工具可讓您追蹤執行、相關聯的計量、參數和屬性,直至個別資料格層級。
若要取得視覺比較,您也可以切換至 [執行比較] 檢視。 此檢視會以圖形方式呈現資料,協助快速識別不同執行中的模式或偏差。
將執行儲存為機器學習模型
一旦執行產生所需的結果,您可以選取 [另存為 ML 模型],將執行儲存為增強模型追蹤和模型部署的模型。