共用方式為


Microsoft Fabric 中的機器學習實驗

機器學習實驗是組織和控制的主要單位,用於所有相關的機器學習執行。 執行會對應至模型程式碼的單一執行。 在 MLflow 中,追蹤是以實驗和執行為基礎。

機器學習實驗可讓資料科學家在執行其機器學習程式碼時記錄參數、程式碼版本、計量和輸出檔案。 實驗還可讓您視覺化、搜尋和比較執行,以及下載執行檔案和中繼資料,以便在其他工具中分析。

在本文中,您將深入了解資料科學家如何與機器學習實驗互動,並使用機器學習實驗來組織其開發程序,以及追蹤多個執行。

必要條件

  • Power BI Premium 訂用帳戶。 如果您沒有 Power BI Premium,請參閱如何購買 Power BI Premium
  • 具有指派的 Premium 容量的 Power BI 工作區。

建立實驗

您可以直接從網狀架構使用者介面 (UI) 或撰寫使用 MLflow API 的程式代碼來建立機器學習實驗。

使用 UI 建立實驗

若要從 UI 建立機器學習實驗:

  1. 建立新的工作區,或選取現有的工作區。
  2. 您可以透過工作區或使用 Create 建立新專案。
    1. 工作區
      1. 選取您的工作區。
      2. 選擇 [新增專案]
      3. 在 [分析及定型數據] 底 下,選取 [實驗]。 顯示工作區中選擇「實驗」時的螢幕截圖。
    2. 建立按鈕:
      1. 選取 建立,您可以在垂直功能表中找到 ... [建立] 按鈕的螢幕快照。
      2. 在 [數據科學]底下,選取 [實驗]。 螢幕快照,顯示選取 [建立] 後選取 [實驗] 的位置。
  3. 提供實驗名稱,然後選取 [建立]。 此動作會在工作區內建立空白實驗。

建立實驗之後,您可以開始新增執行來追蹤執行計量和參數。

使用 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 應用程式,並根據執行狀態套用篩選。

機器學習最近執行的螢幕快照。

比較和篩選執行

若要比較和評估機器學習執行的品質,您可以比較實驗內所選執行之間的參數、計量和中繼資料。

套用標籤於執行序

實驗執行中的 MLflow 標記可讓使用者將自定義的元數據以鍵值對的形式新增至他們的執行。 這些標籤有助於根據特定屬性分類、篩選和搜尋實驗運行,讓您更輕鬆地管理和分析 MLflow 平台內的實驗。 使用者可以利用標籤為實驗過程加上標記,並提供模型類型、參數或任何相關標識碼措施等資訊,以增強實驗的整體組織和可追蹤性。

此代碼段會啟動 MLflow 執行、記錄一些參數和度量,以及新增標記來分類並提供執行的額外背景。

import mlflow
import mlflow.sklearn
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.datasets import fetch_california_housing

# Autologging
mlflow.autolog()

# Load the California housing dataset
data = fetch_california_housing(as_frame=True)
X = data.data
y = data.target

# Split the data
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Start an MLflow run
with mlflow.start_run() as run:

    # Train the model
    model = LinearRegression()
    model.fit(X_train, y_train)

    # Predict and evaluate
    y_pred = model.predict(X_test)
    
    # Add tags
    mlflow.set_tag("model_type", "Linear Regression")
    mlflow.set_tag("dataset", "California Housing")
    mlflow.set_tag("developer", "Bob")

套用標記後,您可以直接從內嵌的 MLflow 小工具或執行詳情頁面觀看結果。

顯示在詳細頁面中被套用於執行的標籤的螢幕截圖。

警告

警告:將標籤套用至 Fabric 中 MLflow 實驗執行的限制

  • 非空白標記:標籤名稱或值不可以是空的。 如果您嘗試套用具有空名稱或值的標籤,作業將會失敗。
  • 標籤名稱:標籤名稱長度最多可達 250 個字元。
  • 標籤值:標籤值長度最多可達 5000 個字元。
  • 限制標記名稱:不支援以特定前置詞開頭的標籤名稱。 具體來說,開頭為 synapsemlmlflowtrident 的標籤名稱會受到限制,因此不接受。

以視覺化方式比較執行

您可以在現有實驗內以視覺化方式比較和篩選執行。 視覺比較可讓您輕鬆地在多個執行之間瀏覽,並加以排序。

顯示執行清單和圖表檢視的螢幕擷取畫面。

若要比較執行:

  1. 選取包含多個執行的現有機器學習實驗。
  2. 選取 [檢視] 索引標籤,然後移至 [執行清單] 檢視。 或者,您也可以直接從 [執行詳細資料] 檢視選取 [檢視執行清單] 選項。
  3. 展開 [自訂資料行] 窗格,以自訂資料表中的資料行。 在這裡,您可以選取您想要查看的屬性、計量、標籤和超參數。
  4. 展開 [篩選] 窗格,根據特定選取的準則縮小結果範圍。
  5. 選取多個執行,以在 [計量比較] 窗格中比較其結果。 在此窗格中,您可以變更圖表標題、視覺效果類型、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 搜尋多個實驗。 如果您想要比較不同實驗中的執行,這可能會很有用。

順序和限制執行

使用 max_results 中的參數 search_runs 來限制傳回的執行數目。 參數 order_by 可讓您列出要排序的資料行,而且可以包含選用的 DESCASC 值。 例如,下列範例會傳回實驗中的最後一個執行。

mlflow.search_runs(experiment_ids=[ "1234-5678-90AB-CDEFG" ], max_results=1, order_by=["start_time DESC"])

比較 Fabric 筆記本內的執行

您可以使用 Fabric 筆記本內的 MLFlow 製作小工具來追蹤每個筆記本資料格內產生的 MLflow 執行。 小工具可讓您追蹤執行、相關聯的計量、參數和屬性,直至個別資料格層級。

若要取得視覺比較,您也可以切換至 [執行比較] 檢視。 此檢視會以圖形方式呈現資料,協助快速識別不同執行中的模式或偏差。

顯示如何使用 MLFlow 製作小工具的螢幕擷取畫面。

將執行儲存為機器學習模型

一旦執行產生所需的結果,您可以選取 [另存為 ML 模型],將執行儲存為增強模型追蹤和模型部署的模型。

顯示在何處選取 [建立新模型] 的螢幕擷取畫面。

監視 ML 實驗 (預覽)

ML 實驗會直接整合到監視器中。 這項功能的設計目的是讓您更深入地瞭解 Spark 應用程式和其產生的 ML 實驗,讓您更輕鬆地管理和偵錯這些程式。

從監視器追蹤執行

使用者可以直接從監視器追蹤實驗運行,並獲得其所有活動的統一檢視。 這項整合包括篩選選項,讓使用者專注於過去 30 天內或其他指定期間內建立的實驗或執行。

顯示 [監視] 索引標籤中檢視執行位置的螢幕快照。

ML 實驗會直接整合到監視器中,您可以在其中選取特定的 Spark 應用程式並存取專案快照集。 在這裡,您將找到該應用程式所產生的所有實驗和執行清單。