根據 Azure Machine Learning 事件來觸發應用程式、程序或 CI/CD 工作流程

在本文中,您將瞭解如何根據 Azure 機器學習 事件來設定事件驅動應用程式、進程或 CI/CD 工作流程。 例如,當使用 Azure 事件方格 偵測到特定條件時,失敗通知電子郵件或 ML 管線就會執行。

Azure Machine Learning 可管理機器學習程序的整個生命週期,包括模型定型、模型部署和監視。 使用新式無伺服器架構,您可以利用事件方格來回應 Azure Machine Learning 事件,例如定型執行完成、模型的註冊和部署、偵測到資料漂移等。 接著,您可以在工作區中訂閱和使用事件,例如執行狀態變更、執行完成、模型註冊、模型部署、資料漂移偵測。

何時將事件方格用於事件導向動作:

  • 在執行失敗和執行完成時傳送電子郵件
  • 在註冊模型之後使用 Azure 函式
  • 將來自 Azure Machine Learning 的事件串流至各種端點
  • 偵測到漂移時觸發 ML 管線

重要

本文中標示為 (預覽) 的項目目前處於公開預覽狀態。 此預覽版本會在沒有服務等級協定的情況下提供,不建議用於實際執行工作負載。 可能不支援特定功能,或可能已經限制功能。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款

必要條件

若要使用事件方格,您需要為 Azure 機器學習 工作區建立事件的參與者或擁有者存取權。

事件模型與類型

Azure 事件方格會從來源 (例如 Azure Machine Learning 和其他 Azure 服務) 讀取事件。 這些事件接著會傳送至事件處理常式,例如 Azure 事件中樞、Azure Functions、Logic Apps 等等。 下圖顯示 Event Grid 如何連接來源和處理程式,但不是支援整合的完整清單。

Azure 事件方格 功能模型

如需事件來源和事件處理常式的詳細資訊,請參閱什麼是事件中樞?

Azure Machine Learning 的事件類型

Azure Machine Learning 在機器學習服務生命週期的各個點中提供事件:

事件類型 描述
Microsoft.MachineLearningServices.RunCompleted 在機器學習實驗執行完成時引發
Microsoft.MachineLearningServices.ModelRegistered (預覽) 在工作區中註冊機器學習模型時引發
Microsoft.MachineLearningServices.ModelDeployed (預覽) 當具有一或多個模型的推斷服務部署完成時引發
Microsoft.MachineLearningServices.DatasetDriftDetected (預覽) 當兩個資料集的資料漂移偵測作業完成時引發
Microsoft.MachineLearningServices.RunStatusChanged 執行狀態變更時引發

篩選及訂閱事件

這些事件會透過 Azure 事件方格發佈。 從 Azure 入口網站、PowerShell 或 Azure CLI,您可以指定一或多個事件類型和篩選條件,輕鬆地訂閱事件。

設定事件時,您可以只將篩選條件套用至特定事件資料的觸發程序。 在下列範例中,針對執行狀態變更事件,您可以依執行類型進行篩選。 只有在符合準則時,才會觸發事件。 如需您可以篩選的事件數據詳細資訊,請參閱 Azure 機器學習 事件方格架構

Azure Machine Learning 事件的訂閱受到 Azure 角色型存取控制 (Azure RBAC) 的保護。 只有工作區的參與者和擁有者可以建立、更新、刪除事件訂閱。 可以在事件訂閱的建立期間或之後,將篩選套用至事件訂閱。

  1. 移至 Azure 入口網站,選取新的訂閱或現有的訂閱。

  2. 從左側導覽區域選取 [事件] 項目,然後選取 [+ 事件訂閱]

  3. 選取 [篩選] 索引標籤,向下捲動至 [進階篩選]。 請在 [金鑰] 和 [值] 提供您想要篩選的屬性類型。 您可以在這裏看到當執行類型為管線執行或管線步驟執行時的事件觸發程式。

    篩選事件

  • 依事件類型篩選:事件訂閱可以指定一或多個 Azure Machine Learning 事件類型。

  • 依事件主旨篩選:Azure 事件方格支援基於 [開頭為] 和 [結尾為] 相符的主旨篩選,將具有相符主旨的事件傳遞給訂閱者。 不同的機器學習事件有不同的主旨格式。

    事件類型 主旨格式 範例主旨
    Microsoft.MachineLearningServices.RunCompleted experiments/{ExperimentId}/runs/{RunId} experiments/b1d7966c-f73a-4c68-b846-992ace89551f/runs/my_exp1_1554835758_38dbaa94
    Microsoft.MachineLearningServices.ModelRegistered (預覽) models/{modelName}:{modelVersion} models/sklearn_regression_model:3
    Microsoft.MachineLearningServices.ModelDeployed (預覽) endpoints/{serviceId} endpoints/my_sklearn_aks
    Microsoft.MachineLearningServices.DatasetDriftDetected (預覽) datadrift/{data.DataDriftId}/run/{data.RunId} datadrift/4e694bf5-712e-4e40-b06a-d2a2755212d4/run/my_driftrun1_1550564444_fbbcdc0f
    Microsoft.MachineLearningServices.RunStatusChanged experiments/{ExperimentId}/runs/{RunId} experiments/b1d7966c-f73a-4c68-b846-992ace89551f/runs/my_exp1_1554835758_38dbaa94
  • 進階篩選:Azure 事件方格也支援基於已發佈事件結構描述的進階篩選。 您可以在 Azure Machine Learning 的 Azure 事件方格事件架構中找到 Azure Machine Learning 事件架構的詳細資訊。 針對 Microsoft.MachineLearningServices.ModelRegistered 事件,篩選模型的標記值:

    --advanced-filter data.ModelTags.key1 StringIn ('value1')
    

    若要深入瞭解如何套用篩選,請參閱事件方格的篩選事件

取用 Machine Learning 事件

處理 Machine Learning 事件的應用程式,應該遵循幾個建議做法:

  • 由於可設定多個訂用帳戶以將事件路由至相同的事件處理常式,因此重要的是,不要假設事件來自於特定來源,而要檢查訊息主題以確定其來自預期的機器學習工作區。
  • 同樣地,檢查 eventType 也是必須進行的步驟之一,而且不要假設您收到的所有事件都是您預期的類型。
  • 由於訊息可能會在延遲一段時間後以錯誤順序送達,請使用 [etag] 欄位以了解您的物件資訊是否仍是最新狀態。 使用 [排序器] 欄位以了解任何特定物件上的事件順序。
  • 請忽略您不了解的欄位。 此做法將有助於保持未來可能新增功能的彈性。
  • 失敗或已取消的 Azure Machine Learning 作業不會觸發事件。 例如,如果模型部署失敗,就不會觸發 Microsoft.MachineLearningServices.ModelDeployed。 設計您的應用程式時,請考慮這種失敗模式。 您一律可以使用 Azure Machine Learning SDK、CLI 或入口網站來查看作業的狀態,及瞭解詳細的失敗原因。

Azure 事件方格 可讓客戶建置分離訊息處理程式,Azure 機器學習 事件可觸發此處理程式。 一些值得注意的訊息處理常式範例包括:

  • Azure Functions
  • Azure Logic 應用程式
  • Azure 事件中樞
  • Azure Data Factory 管線
  • 一般 Webhook,可能裝載於 Azure 平臺或其他地方

在 Azure 入口網站中設定

  1. 開啟 Azure 入口網站,移至您的 Azure Machine Learning 工作區。

  2. 從左側欄中選取 [事件],然後選取 [事件訂閱]

    顯示 [事件訂用帳戶] 選取項目的螢幕快照。

  3. 選取要使用的事件類型。

    [建立事件訂閱] 窗體的螢幕快照。

  4. 選取要發佈事件至什麼端點。 在下列螢幕擷取畫面中,選取的端點是 [事件中樞]

    顯示 [建立事件訂用帳戶] 窗格的螢幕快照,並已開啟 [選取事件中樞]。

確認選取項目之後,請選取 [ 建立]。 設定之後,這些事件將會推送至您的端點。

使用 CLI 進行設定

您可以安裝最新的 Azure CLI,或使用 Azure 訂用帳戶中所提供的 Azure Cloud Shell。

若要安裝事件方格擴充功能,從 CLI 使用下列命令:

az extension add --name eventgrid

下列範例示範如何選取 Azure 訂用帳戶,並為 Azure Machine Learning 建立新的事件訂閱:

# Select the Azure subscription that contains the workspace
az account set --subscription "<name or ID of the subscription>"

# Subscribe to the machine learning workspace. This example uses EventHub as a destination. 
az eventgrid event-subscription create --name {eventGridFilterName} \
  --source-resource-id /subscriptions/{subId}/resourceGroups/{RG}/providers/Microsoft.MachineLearningServices/workspaces/{wsName} \
  --endpoint-type eventhub \
  --endpoint /subscriptions/{SubID}/resourceGroups/TestRG/providers/Microsoft.EventHub/namespaces/n1/eventhubs/EH1 \
  --included-event-types Microsoft.MachineLearningServices.ModelRegistered \
  --subject-begins-with "models/mymodelname"

範例

範例:傳送電子郵件警示

使用 Azure Logic Apps 設定所有事件的電子郵件。 自訂條件,並指定收件者,讓跨小組的共同作業與認知得以實現。

  1. 在 Azure 入口網站中,移至您的 Azure Machine Learning 工作區,從左側欄中選取 [事件] 索引標籤。 從這裡選取 [邏輯應用程式]

    顯示 Logic Apps 選取項目的螢幕快照。

  2. 登入邏輯應用程式使用者介面,選取 Machine Learning 服務做為主題類型。

    此螢幕快照顯示 [當資源事件發生時] 對話框,並將機器學習選取為資源類型。

  3. 選取要通知的事件。 例如,下列螢幕擷取畫面中的 [RunCompleted]

    顯示 機器學習 服務作為資源類型的螢幕快照。

  4. 接下來,新增使用此事件的步驟,並搜尋電子郵件。 有數個不同的郵件帳戶可供您用來接收事件。 您也可以設定何時傳送電子郵件警示的條件。

    顯示 [選擇動作] 對話框的螢幕快照,其中包含在搜尋行中輸入的電子郵件。

  5. 選取 [傳送電子郵件] 並填入參數。 您可以在主旨中包含 [事件種類] 和 [主題] 以協助篩選事件。 您也可以在訊息本文中包含執行之工作區頁面的連結。

    若要儲存此動作,選取頁面左側的 [另存新檔]

    顯示 [傳送電子郵件] 對話框的螢幕快照,其中包含從列表右側新增至主旨行的主題和事件類型。

範例:資料漂移觸發重新定型

重要

此範例依賴只有在使用 Azure Machine Learning SDK v1 或適用於 Azure Machine Learning 的 Azure CLI 延伸模組 v1 時才可用的功能 (資料漂移)。 如需詳細資訊,請參閱什麼是 Azure Machine Learning CLI & SDK v2

模型會隨著時間而過時,而且不會在它執行的內容中仍然有用。 有一種方法可以得知重新定型模型的時機,就是偵測資料漂移。

此範例示範如何使用事件方格和 Azure Logic App 來觸發重新定型。 範例會在模型定型和服務資料集之間發生資料漂移時,觸發 Azure Data Factory 管線。

開始之前,請執行下列動作:

在此範例中,會使用簡單的 Data Factory 管線將檔案複製到 blob 存放區,並執行已發佈的 Machine Learning 管線。 如需此案例的詳細資訊,請參閱如何在 Azure Data Factory 中設定 機器學習 步驟。

顯示 Azure Data Factory 中訓練管線的螢幕快照。

  1. 從建立邏輯應用程式開始。 移至 Azure 入口網站,搜尋 [邏輯應用程式],然後選取 [建立]。

    search-logic-app

  2. 填寫所需的資訊。 為了簡化體驗,請使用與您的 Azure Data Factory 管線和 Azure Machine Learning 工作區相同的訂用帳戶和資源群組。

    顯示 [邏輯應用程式建立] 窗格的螢幕快照。

  3. 建立邏輯應用程式之後,請選取 [事件方格資源事件發生時]。

    顯示 Logic Apps 設計工具的螢幕快照,其中 [以一般觸發程式選項開頭],包括 [事件方格資源事件發生時]。

  4. 登入並填入事件的詳細資料。 將 [資源名稱] 設定為工作區名稱。 將 [事件種類] 設定為 [DatasetDriftDetected]

    顯示數據漂移事件類型專案的螢幕快照。

  5. 新增新的步驟,然後搜尋 [Azure Data Factory]。 選取 [建立管線執行]

    此螢幕快照顯示已選取 [建立管線執行] 的 [選擇動作] 窗格。

  6. 登入並指定要執行的已發佈 Azure Data Factory 管線。

    顯示 [建立管線執行] 窗格的螢幕快照,其中包含各種值。

  7. 使用頁面左上角的 [儲存] 按鈕,儲存並建立邏輯應用程式。 若要檢視您的應用程式,請移至 Azure 入口網站 中的工作區,然後選取 [事件]。

    螢幕快照顯示已醒目提示邏輯應用程式的事件。

現在,發生漂移時,會觸發 Data Factory 管線。 在 Azure Machine Learning 工作室中檢視資料漂移執行和機器學習管線的詳細資料。

顯示管線端點的螢幕快照。

下一步

深入瞭解事件方格,並嘗試使用 Azure Machine Learning 事件: