この記事では、Azure Machine Learning イベントに基づいて、イベント ドリブン アプリケーション、プロセス、または CI/CD ワークフローを設定する方法について説明します。 たとえば、Azure Event Gridを使用して、特定の条件が検出されたときにエラー通知メールまたは ML パイプラインの実行を設定できます。
Azure Machine Learning は、モデルのトレーニング、モデルのデプロイ、監視など、機械学習プロセスのライフサイクル全体を管理します。 Event Grid を使用すると、最新のサーバーレス アーキテクチャを使用して、トレーニング実行の完了やモデルの登録とデプロイなどのAzure Machine Learningイベントに対応できます。 その後、ワークスペース内の実行状態の変更、実行完了、モデルの登録、モデルのデプロイなどのイベントをサブスクライブして使用できます。
イベント ドリブン アクションに Event Grid を使用する:
- 実行失敗および実行完了に関するメールを送信する
- モデルの登録後に Azure 関数を使用する
- Azure Machine Learningからさまざまなエンドポイントにイベントをストリーミングする
重要
この記事で "(プレビュー)" と付記されている項目は、現在、パブリック プレビュー段階です。 プレビュー バージョンはサービス レベル アグリーメントなしで提供されています。運用環境のワークロードに使用することはお勧めできません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。 詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。
前提条件
Event Grid を使用するには、イベントを作成する Azure Machine Learning ワークスペースへの共同作成者または所有者アクセスが必要です。
Microsoft.EventGridリソース プロバイダーを、Azure サブスクリプションで登録します。 この登録は、イベント サブスクリプションを作成する前に必要です。az provider register --namespace Microsoft.EventGrid --waitLogic Apps の例を使用する場合は、
Microsoft.Logicプロバイダーも登録します。az provider register --namespace Microsoft.Logic --waitCLI の例に従う場合は、
eventgridAzure CLI拡張機能をインストールします。az extension add --name eventgrid宛先として Event Hub を使用して CLI の例に従う場合は、既存の Event Hub 名前空間とハブが必要です。 イベント ハブを作成する必要がある場合は、「イベント ハブを作成する」を参照してください。
イベント モデルと種類
Azure Event Grid は、Azure Machine Learning やその他の Azure サービスなどのソースからイベントを読み取ります。 これらのイベントは、Azure Event Hubs、Azure Functions、Logic Apps などのイベント ハンドラーに送信されます。 次の図は、Event Grid がソースとハンドラーを接続する方法を示していますが、サポートされている統合の包括的な一覧ではありません。
イベント ソースとイベント ハンドラーの詳細については、「 Event Grid とは」を参照してください。
Azure Machine Learning のイベントの種類
Azure Machine Learningは、機械学習ライフサイクルのさまざまなポイントでイベントを提供します。
| イベントの種類 | 説明 |
|---|---|
Microsoft.MachineLearningServices.RunCompleted |
機械学習の実験の実行が完了したときに発生します |
Microsoft.MachineLearningServices.ModelRegistered |
新しいモデルまたはモデルバージョンが正常に登録されたときに発生します |
Microsoft.MachineLearningServices.ModelDeployed |
1 つ以上のモデルがエンドポイントに正常にデプロイされたときに発生します |
Microsoft.MachineLearningServices.RunStatusChanged |
実行状態が変化した際に発生 |
イベントのフィルターと購読
Azure Event Gridは、これらのイベントを発行します。 Azure portal、PowerShell、または Azure CLI から、1 つ以上のイベントの種類を指定し、条件をフィルター処理することで、イベントを簡単にサブスクライブできます。
イベントを設定するときは、特定のイベント データに対してのみトリガーするようにフィルターを適用します。 次の例では、実行状態変更イベントについて、実行の種類でフィルター処理できます。 イベントは、条件が満たされた場合にのみトリガーされます。 フィルター処理できるイベント データの詳細については、Azure Machine Learning Event Grid スキーマを参照してください。
ロールベースのアクセス制御 (Azure RBAC) Azure、Azure Machine Learning イベントのサブスクリプションを保護します。 ワークスペースの共同作成者または所有者だけが、イベント サブスクリプションの作成、更新、削除を行うことができます。 イベント サブスクリプションの 作成時 または後で、イベント サブスクリプションにフィルターを適用できます。
Azure portal にアクセスし、新しいサブスクリプションまたは既存のサブスクリプションを選択します。
左側のウィンドウから [イベント ] エントリを選択し、[ + イベント サブスクリプション] を選択します。
[フィルター] タブを選択し、[高度なフィルター] まで下にスクロールします。 [キー] と [値] で、フィルター処理するプロパティの型を指定します。 ここでは、実行の種類がパイプライン実行またはパイプライン ステップ実行の場合に、イベントがトリガーされることがわかります。
イベントの種類でフィルター処理する: イベント サブスクリプションでは、1 つまたは複数の Azure Machine Learning イベントの種類を指定できます。
イベントの件名でフィルター処理する: Azure Event Grid は、次で始まる と 次で終わる という一致に基づく件名フィルターをサポートするため、件名が一致するイベントはサブスクライバーに配信されます。 機械学習イベントが異なると、件名の形式も異なります。
イベントの種類 件名の形式 件名の例 Microsoft.MachineLearningServices.RunCompletedexperiments/{ExperimentId}/runs/{RunId}experiments/b1d7966c-f73a-4c68-b846-992ace89551f/runs/my_exp1_1554835758_38dbaa94Microsoft.MachineLearningServices.ModelRegisteredmodels/{modelName}:{modelVersion}models/sklearn_regression_model:3Microsoft.MachineLearningServices.ModelDeployedendpoints/{serviceId}endpoints/my_sklearn_aksMicrosoft.MachineLearningServices.RunStatusChangedexperiments/{ExperimentId}/runs/{RunId}experiments/b1d7966c-f73a-4c68-b846-992ace89551f/runs/my_exp1_1554835758_38dbaa94高度なフィルター処理:Azure Event Grid は、発行されたイベント スキーマに基づく高度なフィルター処理もサポートしています。 Azure Machine Learning のイベント スキーマの詳細については、「Azure Machine Learning の Azure Event Grid イベント スキーマ」を参照してください。
Microsoft.MachineLearningServices.ModelRegisteredイベントの場合、モデルのタグ値をフィルター処理するには、次のようにします。--advanced-filter data.ModelTags.key1 StringIn value1フィルターを適用する方法の詳細については、「Event Grid のイベントのフィルター処理」をご覧ください。
Machine Learning イベントを使用する
Machine Learning イベントを処理するアプリケーションは、いくつかの推奨される手法に従う必要があります。
- 複数のサブスクリプションで同じイベント ハンドラーにイベントをルーティングできるため、イベントが特定のソースからのイベントであると想定しないでください。 メッセージのトピックを調べて、期待する機械学習ワークスペースから送信されていることを確認します。
- 同様に、eventType が処理できることを確認します。 受け取るすべてのイベントが予期した種類であるとは考えないでください。
- メッセージは順不同で到着したり、少し遅れて到着する可能性があるので、etag フィールドを使って、オブジェクトに関する情報がまだ最新の状態かどうかを確認します。 また、sequencer フィールドを使って、特定のオブジェクトに対するイベントの順序を確認します。
- わからないフィールドは無視します。 この方法は、将来追加される可能性のある新機能に対する回復力を維持するのに役立ちます。
- 失敗または取り消されたAzure Machine Learning操作では、イベントはトリガーされません。 たとえば、モデルのデプロイが失敗した場合は、Microsoft。MachineLearningServices.ModelDeployed はトリガーされません。 アプリケーションを設計するときは、このような障害モードを考慮してください。 Azure Machine Learning SDK、CLI、またはポータルを使用して、操作の状態を確認し、エラーの詳細な理由を理解できます。
Azure Event Gridでは、分離されたメッセージ ハンドラーを作成できます。これにより、イベントAzure Machine Learningトリガーできます。 メッセージ ハンドラーの主な例を次に示します。
- Azure Functions
- Azure Logic Apps
- Azure Event Hubs
- Azure Data Factory パイプライン
- Azure プラットフォームまたは他の場所でホストできる汎用 Webhook
Azure Portal での設定
Azure portal を開き、Azure Machine Learning ワークスペースに移動します。
左側のバーで [イベント] を選択し、 [イベント サブスクリプション] を選択します。
使用するイベントの種類を選択します。
イベントの発行先のエンドポイントを選択します。 次のスクリーンショットでは、 [イベント ハブ] が選択されたエンドポイントであることを示しています。
選択内容を確認したら、[ 作成] を選択します。 構成後、これらのイベントはエンドポイントにプッシュされます。
サブスクリプションが作成されたことを確認するには、ワークスペースで [イベント>イベント サブスクリプション] を選択し、新しいサブスクリプションが一覧に表示されることを確認します。
CLI でセットアップ
最新のAzure CLIをインストールするか、Azure サブスクリプションの一部として提供されているAzure Cloud Shellを使用できます。
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"
サブスクリプションが正常に作成されたことを確認するには、次を実行します。
az eventgrid event-subscription show \
--name {eventGridFilterName} \
--source-resource-id /subscriptions/{subId}/resourceGroups/{RG}/providers/Microsoft.MachineLearningServices/workspaces/{wsName}
例
例:メール アラートを送信する
Azure Logic Apps を使用して、すべてのイベントのメールを構成します。 条件を使用してカスタマイズし、共同作業を行うチーム全体でコラボレーションと意識を高める受信者を指定します。
Azure portal で、Azure Machine Learning ワークスペースに移動し、左側のバーの [イベント] タブを選択します。 ここで、 [ロジック アプリ] を選択します。
Logic App UI にサインインし、トピックの種類として Machine Learning サービスを選択します。
通知を受け取るイベントを選択します。 たとえば、次のスクリーンショットは RunCompleted を示しています。
次に、このイベントを使用して電子メールを検索するステップを追加します。 イベントの受信に使用できるメール アカウントはいくつかあります。 また、電子メール アラートを送信する条件を構成することもできます。
[メールの送信] を選択し、パラメーターを入力します。 件名には、 イベントの種類 と トピック を含め、イベントをフィルター処理します。 メッセージ本文で実行するために、ワークスペース ページへのリンクを含めることもできます。
この操作を保存するには、ページの左端にある [名前を付けて保存] を選択します。
アラートが機能することを確認するには、トレーニングの実行を完了するなど、条件を満たすイベントをトリガーし、指定された受信者に電子メールが届くかどうかを確認します。
次のステップ
Event Grid の詳細を確認し、Azure Machine Learningイベントを試すには、次を参照してください。