Azure Machine Learning は、Azure Monitor との統合を使用して、オンライン エンドポイントのメトリックとログを追跡および監視します。 メトリックをグラフで表示したり、エンドポイントとデプロイの間でメトリックを比較したり、Azure portal ダッシュボードにメトリックをピン留めしたり、アラートを構成したり、ログ テーブルをクエリしたり、サポートされているターゲットにログをプッシュしたりできます。 Application Insights を使用して、ユーザー コンテナーからのイベントを分析することもできます。
メトリック: 要求の待機時間、1 分あたりの要求数、1 秒あたりの新しい接続数、ネットワーク バイト数などのエンドポイント レベルのメトリックについてドリルダウンして、デプロイ レベルまたは状態レベルで詳細情報を確認できます。 CPU/GPU の使用率、メモリやディスクの使用率など、デプロイレベルのメトリックをインスタンス レベルにドリルダウンすることもできます。 Monitor では、これらのメトリックをグラフで追跡し、ダッシュボードとアラートを設定して、さらに分析することができます。
ログ: メトリックを Log Analytics ワークスペースに送信し、そこで Kusto クエリ構文を使用してログをクエリできます。 メトリックを Azure Storage アカウントや Azure Event Hubs に送信して、さらに処理を行うこともできます。 トラフィック、コンソール (コンテナー) ログ、オンライン エンドポイントに関連するイベントについては、専用のログ テーブルを使用できます。 Kusto クエリは、複雑な分析機能と複数テーブルの結合をサポートしています。
Application Insights: キュレーションされた環境には、Application Insights との統合が含まれます。 オンライン デプロイを作成するときに、この統合を有効または無効にすることができます。 有効にすると、組み込みのメトリックとログが Application Insights に送信されます。 その後、Application Insights の組み込み機能を使用して、さらに分析を行うことができます。 これらの機能の例としては、ライブ メトリック、トランザクション検索、エラー ビュー、パフォーマンス ビューなどがあります。
この記事では、次の方法について説明します。
- メトリックとログを表示および追跡するための適切な方法を選択します。
- オンライン エンドポイントのメトリックを表示します。
- メトリックのダッシュボードを作成します。
- メトリック アラートを作成します。
- オンライン エンドポイントのログを表示します。
- Application Insights を使用してメトリックとログを追跡します。
前提条件
- Azure Machine Learning オンライン エンドポイント
- 少なくともエンドポイントに対する閲覧者アクセス権
メトリックを使用する
Azure portal では、オンライン エンドポイントとデプロイのメトリック ページを表示できます。
Azure Machine Learning スタジオからメトリックにアクセスする
メトリック ページにアクセスする簡単な方法は、Azure Machine Learning スタジオのユーザー インターフェイスで利用可能なリンクを使用することです。 これらのリンクは、エンドポイントのページの [詳細] タブにあります。 これらのリンクをクリックすると、Azure portal のエンドポイントまたはデプロイのメトリック ページに移動します。
スタジオで利用可能なリンクを使用してメトリック ページにアクセスするには、次の手順を実行します。
Azure Machine Learning スタジオで、ワークスペースに移動します。
[資産] で、[エンドポイント] を選択します。
エンドポイントの名前を選択します。
[エンドポイント属性] で、[メトリックの表示] を選択します。
Azure portal でエンドポイントのメトリック ページが開きます。
Azure Machine Learning スタジオのエンドポイント ページで、デプロイのセクションに移動し、[メトリックの表示] を選択します。
Azure portal でデプロイのメトリック ページが開きます。
Azure Portal からメトリックにアクセスする
エンドポイントまたはデプロイのメトリック ページを表示する別の方法は、Azure portal に直接移動することです。
Azure ポータルにアクセスします。
オンライン エンドポイントまたはデプロイのリソースに移動します。
オンライン エンドポイントとデプロイは、Azure Resource Manager リソースです。 これらは、リソース グループに移動して、Machine Learning オンライン エンドポイントと Machine Learning オンライン デプロイというリソースの種類を探すことで、見つけることができます。
リソース ページの [監視] で、[メトリック] を選択します。
使用可能なメトリック
表示されるメトリックは、選択したリソースによって異なります。 オンライン エンドポイントとオンライン デプロイでは、メトリックのスコープが異なります。
エンドポイント スコープのメトリック
オンライン エンドポイント スコープで使用できるメトリックの情報については、「Microsoft.MachineLearningServices/workspaces/onlineEndpoints でサポートされているメトリック」を参照してください。
帯域幅調整
マネージド オンライン エンドポイントのクォータ制限を超えると、帯域幅が調整されます。 オンライン エンドポイントの制限の詳細については、Azure Machine Learning のクォータと制限に関する記事の「Azure Machine Learning オンライン エンドポイントとバッチ エンドポイント」を参照してください。 要求が調整されているかどうかを確認するには:
- "ネットワーク バイト数" メトリックを監視します。
- 応答トレーラーで次のフィールドを確認します:
ms-azureml-bandwidth-request-delay-ms
とms-azureml-bandwidth-response-delay-ms
。 フィールドの値は帯域幅調整の遅延 (ミリ秒単位) です。
詳細については、「帯域幅制限の問題」を参照してください。
デプロイ スコープのメトリック
デプロイ スコープで使用できるメトリックに関する情報については、「Microsoft.MachineLearningServices/workspaces/onlineEndpoints/deployments でサポートされているメトリック」を参照してください。
ダッシュボードとアラートを作成する
Monitor では、メトリックに基づいたダッシュボードとアラートを作成できます。
ダッシュボードを作成してクエリを視覚化する
カスタム ダッシュボードを作成して、オンライン エンドポイントのメトリックを含む、Azure portal の複数のソースからのメトリックを視覚化できます。 ダッシュボードの作成とクエリの視覚化の詳細については、「Log Analytics データのダッシュボードを作成して共有する」および「Application Insights を使用してカスタム KPI ダッシュボードを作成する」を参照してください。
アラートを作成する
カスタム アラートを作成して、オンライン エンドポイントに対する重要な状態の更新に関する通知を受け取ることもできます。
Azure portal でメトリック ページに移動し、[新しいアラート ルール] を選択します。
[シグナルの選択] ウィンドウで、アラートを作成するシグナルを選択し、[適用] を選択します。
[アラート ルールの作成] ページで、しきい値を入力し、調整するその他の設定を編集します。 アラート ルールの設定の詳細については、「アラート ルールの条件を構成する」を参照してください。 [次へ: アクション] を選択します。
[アクション グループの選択] ウィンドウで、アクション グループを作成または選択して、アラートがトリガーされたときの動作を指定します。 詳細については、「アラート ルールの詳細を構成する」を参照してください。
[確認と作成] を選択し、アラートの作成を完了します。
メトリックに基づいて自動的にスケーリングする
メトリックに基づいて自動的にスケーリングするようにデプロイを構成できます。 自動スケーリング機能を有効にするには、UI またはコードを使用します。
コードのオプションには、Azure Machine Learning CLI と Azure Machine Learning SDK for Python があります。 コードを使用する場合は、メトリックの REST API 名を指定して、自動スケーリングをトリガーする条件を構成します。
- コードで使用するエンドポイント メトリックの名前については、「Microsoft.MachineLearningServices/workspaces/onlineEndpoints でサポートされているメトリック」の表の [REST API の名前] 列の値を参照してください。
- コードで使用するデプロイ メトリックの名前については、「Microsoft.MachineLearningServices/workspaces/onlineEndpoints/deployments でサポートされているメトリック」の表の [REST API の名前] 列の値を参照してください。
詳細については、「Azure Machine Learning でのオンライン エンドポイントの自動スケーリング」を参照してください。
ログを使用する
オンライン エンドポイントに対して有効にできるログは 3 つあります。
AmlOnlineEndpointTrafficLog: このトラフィック ログは、エンドポイントへの要求の情報を確認する手段を提供します。 このログは、次の場合に役立ちます。
- 要求の応答が 200 ではなく、さらに詳しい情報が必要な場合。 ログの
ResponseCodeReason
列に理由が一覧表示されます。 状態コードと理由の説明については、オンライン エンドポイントのトラブルシューティングに関する記事の「HTTPS 状態コード」を参照してください。 - 要求に対するモデルの応答コードと応答の理由を確認したい場合があります。 その情報は
ModelStatusCode
列とModelStatusReason
列に表示されます。 - 要求の継続時間を知りたい場合があります。 ログに待機時間の内訳が表示されます。 この内訳には、合計継続時間、要求時間、応答時間、ネットワーク調整によって発生した遅延が表示されます。
- 最近の成功した要求と失敗した要求の数を確認したい場合があります。 その情報はログに記録されています。
- 要求の応答が 200 ではなく、さらに詳しい情報が必要な場合。 ログの
AmlOnlineEndpointConsoleLog: このログには、コンテナーがコンソールに出力として書き込むステートメントが含まれています。 このログは、次の場合に役立ちます。
- コンテナーが起動に失敗する場合。 コンソール ログがデバッグに役立ちます。
- コンテナーの動作を監視し、すべての要求が正しく処理されていることを確認したい場合があります。
- オンライン エンドポイントのネットワーク エントリ ポイントからコンテナーへの要求をトレースしたい場合があります。 要求 ID と AmlOnlineEndpointConsoleLog ログおよび AmlOnlineEndpointTrafficLog ログの情報を結合する Log Analytics クエリを使用できます。
- たとえば、モデルが各要求の処理に要する時間を測定するために、パフォーマンス分析を実行したい場合があります。
AmlOnlineEndpointEventLog: このログには、コンテナーのライフ サイクルに関するイベント情報が含まれています。 現在、このログは次の種類のイベントに関する情報を提供しています。
名前 メッセージ バックオフ Back-off restarting failed container (失敗したコンテナーの再起動をバックオフしました) プルされました Container image "<IMAGE_NAME>" already present on machine (コンテナー イメージ "<IMAGE_NAME>" がマシンに既に存在しています) 強制終了しています Container inference-server failed liveness probe, will be restarted (コンテナー inference-server の liveness probe が失敗し、再起動されます) 作成済み Created container image-fetcher (コンテナー image-fetcher を作成しました) 作成済み Created container inference-server (コンテナー inference-server を作成しました) 作成済み Created container model-mount (コンテナー model-mount を作成しました) ライブネスプローブ失敗 Liveness probe failed: <FAILURE_CONTENT> (liveness probe が失敗しました: <FAILURE_CONTENT>) レディネスプローブ失敗 Readiness probe failed: <FAILURE_CONTENT> (readiness probe が失敗しました: <FAILURE_CONTENT>) 開始済み Started container image-fetcher (コンテナー image-fetcher を開始しました) 開始済み Started container inference-server (コンテナー inference-server を開始しました) 開始済み Started container model-mount (コンテナー model-mount を開始しました) 強制終了しています Stopping container inference-server (コンテナー inference-server を停止しています) 強制終了しています Stopping container model-mount (コンテナー model-mount を停止しています)
ログの有効化
重要
ログ記録では、Monitor の Log Analytics 機能を使用します。 現在 Log Analytics ワークスペースがない場合は、「ワークスペースの作成」の手順に従って作成できます。
Azure portal で、エンドポイントを含むリソース グループに移動し、エンドポイントを選択します。
[監視] で、[診断設定] を選択し、[診断設定を追加する] を選択します。
[診断設定] ウィンドウで、次の情報を入力します。
- [診断設定の名前] の横に設定の名前を入力します。
- [ログ] で、有効にするログ カテゴリを選択します。
- [送信先の詳細] で、[Log Analytics ワークスペースに送信する] を選択し、使用するサブスクリプション と Log Analytics ワークスペースを選択します。
[保存] を選択します。
重要
Log Analytics ワークスペースへの接続が利用可能になるまでに最大 1 時間かかる場合があります。 1 時間待ってから、次のセクションの手順に進んでください。
クエリ ログ
スコアリング要求をエンドポイントに送信して、ログにエントリを作成します。
Azure ポータルにアクセスします。 ログを開くには、次のいずれかのオプションを使用します。
- オンライン エンドポイントのプロパティ ページに移動します。 [監視] で [ログ] を選択します。
- Log Analytics ワークスペースに移動します。 左側の [ログ] を選びます。
既定で開く [クエリ ハブ] ウィンドウを閉じます。
[その他] で、[AmlOnlineEndpointConsoleLog] をダブルクリックします。 [AmlOnlineEndpointConsoleLog] が表示されない場合は、検索フィールドにこの文字列を入力します。
[実行] を選択します。
クエリの例
クエリの例を使用できます。 クエリを表示するには、次の手順を実行します。
ログ列の詳細
次の表は、各ログに格納されているデータに関する詳細情報を示しています。
AMLオンラインエンドポイントトラフィックログ
プロパティ | 説明 |
---|---|
メソッド | クライアントが要求するメソッド。 |
経路 | クライアントが要求するパス。 |
購読ID | オンライン エンドポイントの機械学習サブスクリプション ID。 |
AzureMLWorkspaceId | オンライン エンドポイントの機械学習ワークスペース ID。 |
AzureMLWorkspaceName | オンライン エンドポイントの機械学習ワークスペース名。 |
エンドポイント名 | オンライン エンドポイントの名前。 |
デプロイメント名 | オンライン デプロイの名前。 |
プロトコル | 要求のプロトコル。 |
応答コード | クライアントに返された最後の応答コード。 |
ResponseCodeReason | クライアントに返された最後の応答コードの理由。 |
モデルステータスコード | モデルからの応答の状態コード。 |
ModelStatusReason | モデルからの応答の状態の理由。 |
リクエストペイロードサイズ | クライアントから受信した合計バイト数。 |
応答ペイロードサイズ | クライアントに返された合計バイト数。 |
ユーザーエージェント (UserAgent) | 要求のユーザー エージェント ヘッダー。コメントを含みますが、最大 70 文字で切り捨てられます。 |
XRequestId | Azure Machine Learning が内部トレース用に生成する要求 ID。 |
XMSクライアントリクエストID | クライアントが生成する追跡 ID。 |
TotalDurationMs | 要求の開始時刻から最後の応答バイトがクライアントに送り返されるまでの継続時間 (ミリ秒単位)。 クライアントが切断された場合は、開始時刻からクライアントの切断時刻までの継続時間を取得します。 |
RequestDurationMs | 要求の開始時刻から要求の最後のバイトをクライアントから受信するまでの継続時間 (ミリ秒単位)。 |
ResponseDurationMs(応答時間ミリ秒) | 要求の開始時刻から最初の応答バイトをモデルから読み取るまでの継続時間 (ミリ秒単位)。 |
RequestThrottlingDelayMs | ネットワーク調整による要求データ転送の遅延 (ミリ秒単位)。 |
ResponseThrottlingDelayMs | ネットワーク調整による応答データ転送の遅延 (ミリ秒単位)。 |
Amlオンラインエンドポイントコンソールログ
プロパティ | 説明 |
---|---|
タイムジェネレイテッド | ログが生成された時刻の UTC タイム スタンプ |
オペレーションネーム | ログ レコードに関連付けられた操作 |
インスタンスID | ログ レコードを生成するインスタンスの ID |
デプロイメント名 | ログ レコードに関連付けられたデプロイの名前 |
コンテナ名 | ログが生成されるコンテナーの名前 |
メッセージ | ログのコンテンツ |
AmlOnlineEndpointEventLog (オンラインエンドポイントイベントログ)
プロパティ | 説明 |
---|---|
タイムジェネレイテッド | ログが生成された時刻の UTC タイム スタンプ |
オペレーションネーム | ログ レコードに関連付けられた操作 |
インスタンスID | ログ レコードを生成するインスタンスの ID |
デプロイメント名 | ログ レコードに関連付けられたデプロイの名前 |
名前 | イベントの名前 |
メッセージ | イベントのコンテンツ |
Application Insights を使用する
キュレーションされた環境には、Application Insights との統合が含まれます。 この統合により、組み込みのメトリックとログが Application Insights に送信されます。 その結果、Application Insights の組み込み機能を使用して、さらに分析を行うことができます。 これらの機能の例としては、ライブ メトリック、トランザクション検索、エラー ビュー、パフォーマンス ビューなどがあります。
詳細については、「Application Insights の概要」をご覧ください。
スタジオでオンライン デプロイを作成するときに、Application Insights との統合を有効にすることができます。 [デプロイ] ページの [Application Insights 診断] で [有効] を選択します。
Application Insights を有効にすると、マネージド オンライン エンドポイントの高レベルのアクティビティ モニター グラフを表示できます。 スタジオで、エンドポイントのページに移動し、[監視] タブを選択します。