根據 Azure Machine Learning 事件來觸發應用程式、程序或 CI/CD 工作流程
在本文中,您將了解如何根據 Azure Machine Learning 事件來設定事件驅動應用程式、程序或 CI/CD 工作流程。 例如,使用 Azure 事件方格偵測到特定情況時,失敗通知電子郵件或 ML 管線就會執行。
Azure Machine Learning 可管理機器學習程序的整個生命週期,包括模型定型、模型部署和監視。 使用新式無伺服器架構,您可以利用事件方格來回應 Azure Machine Learning 事件,例如定型執行完成、模型的註冊和部署、偵測到資料漂移等。 接著,您可以在工作區中訂閱和使用事件,例如執行狀態變更、執行完成、模型註冊、模型部署、資料漂移偵測。
何時將事件方格用於事件導向動作:
- 在執行失敗和執行完成時傳送電子郵件
- 在註冊模型之後使用 Azure 函式
- 將來自 Azure Machine Learning 的事件串流至各種端點
- 偵測到漂移時觸發 ML 管線
重要
本文中標示為 (預覽) 的項目目前處於公開預覽狀態。 此預覽版本會在沒有服務等級協定的情況下提供,不建議用於實際執行工作負載。 可能不支援特定功能,或可能已經限制功能。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款。
必要條件
若要使用「事件方格」,您需要參與者或擁有者存取權,才能使用您建立事件的 Azure Machine Learning 工作區。
事件模型與類型
Azure 事件方格會從來源 (例如 Azure Machine Learning 和其他 Azure 服務) 讀取事件。 這些事件接著會傳送至事件處理常式,例如 Azure 事件中樞、Azure Functions、Logic Apps 等等。 下圖顯示事件方格如何連接來源和處理常式,但這並非完整的支援整合清單。
如需事件來源和事件處理常式的詳細資訊,請參閱什麼是事件中樞?
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 Machine Learning 事件方格結構描述。
Azure Machine Learning 事件的訂閱受到 Azure 角色型存取控制 (Azure RBAC) 的保護。 只有工作區的參與者和擁有者可以建立、更新、刪除事件訂閱。 可以在事件訂閱的建立期間或之後,將篩選套用至事件訂閱。
移至 Azure 入口網站,選取新的訂閱或現有的訂閱。
從左側導覽區域選取 [事件] 項目,然後選取 [+ 事件訂閱]。
選取 [篩選] 索引標籤,向下捲動至 [進階篩選]。 請在 [金鑰] 和 [值] 提供您想要篩選的屬性類型。 在這裡,您可以看到在執行類型為管線執行或管線步驟執行時會觸發事件。
依事件類型篩選:事件訂閱可以指定一或多個 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 Machine Learning 事件觸發的分離訊息處理常式。 一些值得注意的訊息處理常式範例包括:
- Azure Functions
- Azure Logic 應用程式
- Azure 事件中樞
- Azure Data Factory 管線
- 可裝載於 Azure 平台或其他位置的一般 Webhook
在 Azure 入口網站中設定
開啟 Azure 入口網站,移至您的 Azure Machine Learning 工作區。
從左側欄中選取 [事件],然後選取 [事件訂閱]。
選取要使用的事件類型。
選取要發佈事件至什麼端點。 在下列螢幕擷取畫面中,選取的端點是 [事件中樞] :
確認選取項目之後,請選取 [建立]。 設定之後,這些事件將會推送至您的端點。
使用 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 設定所有事件的電子郵件。 自訂條件,並指定收件者,讓跨小組的共同作業與認知得以實現。
在 Azure 入口網站中,移至您的 Azure Machine Learning 工作區,從左側欄中選取 [事件] 索引標籤。 從這裡選取 [邏輯應用程式]。
登入邏輯應用程式使用者介面,選取 Machine Learning 服務做為主題類型。
選取要通知的事件。 例如,下列螢幕擷取畫面中的 [RunCompleted]。
接下來,新增使用此事件的步驟,並搜尋電子郵件。 有數個不同的郵件帳戶可供您用來接收事件。 您也可以設定何時傳送電子郵件警示的條件。
選取 [傳送電子郵件] 並填入參數。 您可以在主旨中包含 [事件種類] 和 [主題] 以協助篩選事件。 您也可以在訊息本文中包含執行之工作區頁面的連結。
若要儲存此動作,選取頁面左側的 [另存新檔]。
範例:資料漂移觸發重新定型
重要
此範例依賴只有在使用 Azure Machine Learning SDK v1 或適用於 Azure Machine Learning 的 Azure CLI 延伸模組 v1 時才可用的功能 (資料漂移)。 如需詳細資訊,請參閱什麼是 Azure Machine Learning CLI & SDK v2。
模型在一段時間後會過時,在其執行情境中不再實用。 有一種方法可以得知重新定型模型的時機,就是偵測資料漂移。
此範例示範如何使用事件方格和 Azure Logic App 來觸發重新定型。 範例會在模型定型和服務資料集之間發生資料漂移時,觸發 Azure Data Factory 管線。
開始之前,請執行下列動作:
- 設定資料集監視,以在工作區中偵測資料漂移 (SDK/CLI v1)
- 建立已發佈的 Azure Data Factory 管線。
在此範例中,會使用簡單的 Data Factory 管線將檔案複製到 blob 存放區,並執行已發佈的 Machine Learning 管線。 如需此案例的詳細資訊,請參閱如何在 Azure Data Factory 中設定 Machine Learning 步驟。
從建立邏輯應用程式開始。 移至 Azure 入口網站,搜尋 [邏輯應用程式],然後選取 [建立]。
填寫所需的資訊。 為了簡化體驗,請使用與您的 Azure Data Factory 管線和 Azure Machine Learning 工作區相同的訂用帳戶和資源群組。
建立邏輯應用程式後,選取 [事件方格資源事件發生時]。
登入並填入事件的詳細資料。 將 [資源名稱] 設定為工作區名稱。 將 [事件種類] 設定為 [DatasetDriftDetected]。
新增新的步驟,然後搜尋 [Azure Data Factory]。 選取 [建立管線執行]。
登入並指定要執行的已發佈 Azure Data Factory 管線。
使用頁面左上角的 [儲存] 按鈕,儲存並建立邏輯應用程式。 若要檢視您的應用程式,移至 Azure 入口網站 中您的工作區,然後選取 [事件]。
現在,發生漂移時,會觸發 Data Factory 管線。 在 Azure Machine Learning 工作室中檢視資料漂移執行和機器學習管線的詳細資料。
下一步
深入瞭解事件方格,並嘗試使用 Azure Machine Learning 事件: