Azure Machine Learning の監視

Azure リソースに依存するクリティカルなアプリケーションとビジネス プロセスがある場合は、それらのリソースの可用性、パフォーマンス、操作を監視する必要があります。 この記事では、Azure Machine Learning によって生成される監視データと、Azure Monitor でこのデータを分析してアラートを生成する方法について説明します。

ヒント

このドキュメントは、Azure Machine Learning service と関連する Azure サービスの監視について説明するものであり、記載されている情報は主に "管理者" を対象としています。 "データ サイエンティスト" または "開発者" の方で、"モデルのトレーニング実行" に固有の情報を監視したい場合は、次のドキュメントを参照してください。

オンライン エンドポイントにデプロイされたモデルによって生成された情報を監視する場合は、オンライン エンドポイントの監視に関するページを参照してください。

Azure Monitor とは

Azure Machine Learning は Azure Monitor を使用して監視データを作成します。これは、Azure のフルスタック監視サービスです。 Azure Monitor には、Azure リソースを監視するための完全な機能セットが用意されています。 また、他のクラウドやオンプレミスのリソースも監視できます。

まず「Azure Monitor を使用した Azure リソースの監視」の記事にある次の概念の説明をお読みください。

  • Azure Monitor とは
  • 監視に関連するコスト
  • Azure で収集される監視データ
  • データ収集の構成
  • 監視データの分析とアラート生成のための Azure の標準ツール

以下のセクションでは、この記事に基づき、Azure Machine Learning のために収集された特定のデータについて説明します。 これらのセクションでは、Azure ツールを使用してデータ収集を構成し、このデータを分析する例も紹介します。

ヒント

Azure Monitor に関連したコストを把握するには、使用量と推定コストに関する記事を参照してください。 データが Azure Monitor に表示されるまでにかかる時間を把握するには、ログ データのインジェスト時間に関する記事を参照してください。

Azure Machine Learning の監視データ

Azure Machine Learning は、他の Azure リソースと同じ種類の監視データを収集します。これについては、Azure リソースの監視データに関する記事を参照してください。

Azure Machine Learning によって作成されるログおよびメトリックの詳細なリファレンスについては、「Azure Machine Learning 監視データのリファレンス」を参照してください。

収集とルーティング

プラットフォーム メトリックとアクティビティ ログは自動的に収集および格納されますが、診断設定を使用して他の場所にルーティングすることもできます。

リソース ログは、診断設定を作成して 1 つ以上の場所にルーティングするまでは収集および格納されません。 複数の Azure Machine Learning ワークスペースを管理する必要がある場合は、すべてのワークスペースのログを同じログ記録先にルーティングし、1 か所からすべてのログに対してクエリを実行できます。

Azure portal、Azure CLI、または PowerShell を使用して診断設定を作成するプロセスの詳細については、「Azure でプラットフォーム ログとメトリックを収集するための診断設定を作成する」を参照してください。 診断設定を作成するときは、収集するログのカテゴリを指定します。 Azure Machine Learning のカテゴリは、「Azure Machine Learning 監視データのリファレンス」に記載されています。

重要

これらの設定を有効にするには、追加の Azure サービス (ストレージ アカウント、イベント ハブ、または Log Analytics) が必要であり、コストが増加する可能性があります。 推定コストを計算するには、Azure 料金計算ツールにアクセスしてください。

Azure Machine Learning の次のログを構成できます。

カテゴリ 説明
AmlComputeClusterEvent Azure Machine Learning コンピューティング クラスターからのイベント。
AmlComputeClusterNodeEvent (非推奨) Azure Machine Learning コンピューティング クラスター内のノードからのイベント。
AmlComputeJobEvent Azure Machine Learning コンピューティングで実行されているジョブからのイベント。
AmlComputeCpuGpuUtilization ML サービス コンピューティングの CPU と GPU の使用率ログ。
AmlRunStatusChangedEvent ML の実行状態の変化。
ModelsChangeEvent ML モデルのアクセス、作成、または削除があったときのイベント。
ModelsReadEvent ML モデルが読み込まれたときのイベント。
ModelsActionEvent ML モデルがアクセスされたときのイベント。
DeploymentReadEvent モデル デプロイが読み込まれたときのイベント。
DeploymentEventACI ACI でモデル デプロイが発生したときのイベント (高頻度)。
DeploymentEventAKS AKS でモデル デプロイが発生したときのイベント (高頻度)。
InferencingOperationAKS コンピューティングの種類が AKS である、推論または関連操作のイベント。
InferencingOperationACI コンピューティングの種類が ACI である、推論または関連操作のイベント。
EnvironmentChangeEvent ML 環境の構成が作成または削除されたときのイベント。
EnvironmentReadEvent ML 環境の構成が読み取られたときのイベント (高頻度)。
DataLabelChangeEvent データ ラベルまたはそのプロジェクトが作成または削除されたときのイベント。
DataLabelReadEvent データ ラベルまたはそのプロジェクトが読み取られたときのイベント。
ComputeInstanceEvent ML コンピューティング インスタンスがアクセスされたときのイベント (高頻度)。
DataStoreChangeEvent ML データストアが作成または削除されたときのイベント。
DataStoreReadEvent ML データストアが読み取られたときのイベント。
DataSetChangeEvent ML データストアが作成または削除されたときのイベント。
DataSetReadEvent ML データストアが読み取られたときのイベント。
PipelineChangeEvent ML パイプラインのドラフト、エンドポイント、モジュールが作成または削除されたときのイベント。
PipelineReadEvent ML パイプラインのドラフト、エンドポイント、モジュールが読み取られたときのイベント。
RunEvent ML 実験が作成または削除されたときのイベント。
RunReadEvent ML 実験が読み取られたときのイベント。

注意

2022 年 2 月より、AmlComputeClusterNodeEvent カテゴリは非推奨になります。 代わりに、AmlComputeClusterEvent カテゴリを使用することをお勧めします。

Note

診断設定でメトリックを有効にするとき、現在、ディメンション情報は、ストレージ アカウント、イベント ハブ、または Log Analytics に送信される情報の一部として含まれません。

収集できるメトリックとログについては、次のセクションで説明します。

メトリックの分析

Azure Monitor のメニューから [Metrics](メトリック) を開き、Azure Machine Learning のメトリックを、他の Azure サービスからのメトリックと一緒に分析することができます。 このツールの使用方法の詳細については、「Azure メトリックス エクスプローラーの概要」を参照してください。

収集されるプラットフォーム メトリックの一覧については、「Azure Machine Learning 監視データのリファレンス メトリック」を参照してください。

Azure Machine Learning のすべてのメトリックは、Machine Learning Service ワークスペースという名前空間にあります。

Machine Learning Service ワークスペースが選択されているメトリックス エクスプローラー

参考のために、Azure Monitor でサポートされているすべてのリソース メトリックの一覧を確認できます。

ヒント

Azure Monitor のメトリック データは 90 日分利用できます。 ただし、グラフを作成するときは、30 日分だけ視覚化できます。 たとえば、90 日間の期間を視覚化する場合は、90 日間の期間内で 30 日間の 3 つのグラフに分割する必要があります。

フィルター処理と分割

ディメンションをサポートするメトリックについては、ディメンション値を使用してフィルターを適用できます。 たとえば、cpu-clusterというクラスター名アクティブ コアをフィルター処理します。

また、メトリックをディメンションで分割して、メトリックのセグメントを互いに比較してどのように異なるかを視覚化することもできます。 たとえば、パイプラインのステップの種類を分割して、パイプラインで使用されているステップの種類の数を確認します。

フィルター処理と分割の詳細については、Azure Monitor の高度な機能に関する記事をご覧ください。

ログの分析

Azure Monitor Log Analytics を使用するには、診断構成を作成して、Log Analytics への情報の送信 を有効にする必要があります。 詳細については、「コレクションとルーティング」セクションを参照してください。

Azure Monitor のログのデータはテーブルに格納され、各テーブルには独自の一意のプロパティ セットがあります。 Azure Machine Learning は、次のテーブルにデータを格納します。

テーブル 説明
AmlComputeClusterEvent Azure Machine Learning コンピューティング クラスターからのイベント。
AmlComputeClusterNodeEvent (非推奨) Azure Machine Learning コンピューティング クラスター内のノードからのイベント。
AmlComputeJobEvent Azure Machine Learning コンピューティングで実行されているジョブからのイベント。
AmlComputeInstanceEvent Machine Learning コンピューティング インスタンスにアクセス (読み取り/書き込み) があった場合のイベント。 カテゴリには、ComputeInstanceEvent (高頻度) が含まれます。
AmlDataLabelEvent データ ラベルまたはプロジェクトにアクセス (読み取り、作成、または削除) があった場合のイベント。 カテゴリには、DataLabelReadEvent、DataLabelChangeEvent が含まれます。
AmlDataSetEvent 登録済みまたは未登録の ML データセットにアクセス (読み取り、作成、または削除) があった場合のイベント。 カテゴリには、DataSetReadEvent、DataSetChangeEvent が含まれます。
AmlDataStoreEvent ML データストアにアクセス (読み取り、作成、または削除) があった場合のイベント。 カテゴリには、DataStoreReadEvent、DataStoreChangeEvent が含まれます。
AmlDeploymentEvent ACI または AKS でモデル デプロイが発生した場合のイベント。 カテゴリには、DeploymentReadEvent、DeploymentEventACI、DeploymentEventAKS が含まれます。
AmlInferencingEvent AKS または ACI コンピューティングの種類での推論または関連操作のイベント。 カテゴリには、InferencingOperationACI (高頻度)、InferencingOperationAKS (高頻度) が含まれます。
AmlModelsEvent ML モデルにアクセス (読み取り、作成、または削除) があった場合のイベント。 モデルと資産のパッケージ化が、すぐにビルドできるパッケージに含まれる場合のイベントが含まれます。 カテゴリには、ModelsReadEvent、ModelsActionEvent が含まれます。
AmlPipelineEvent ML パイプラインのドラフト、エンドポイント、またはモジュールにアクセス (読み取り、作成、または削除) があった場合のイベント。カテゴリには、PipelineReadEvent、PipelineChangeEvent が含まれます。
AmlRunEvent ML 実験にアクセス (読み取り、作成、または削除) があった場合のイベント。 カテゴリには、RunReadEvent、RunEvent が含まれます。
AmlEnvironmentEvent ML 環境構成にアクセス (読み取り、作成、または削除) があった場合のイベント。 カテゴリには、EnvironmentReadEvent (高頻度)、EnvironmentChangeEvent が含まれます。

注意

2022 年 2 月より、AmlComputeClusterNodeEvent テーブルは非推奨になります。 代わりに、AmlComputeClusterEvent テーブルを使用することをお勧めします。

重要

Azure Machine Learning のメニューから [ログ] を選択すると、クエリのスコープが現在のワークスペースに設定された状態で Log Analytics が開きます。 つまり、ログ クエリには、そのリソースからのデータのみが含まれます。 他のデータベースのデータや他の Azure サービスのデータを含むクエリを実行する場合は、Azure Monitor のメニューから [ログ] を選択します。 詳細については、「Azure Monitor Log Analytics のログ クエリのスコープと時間範囲」を参照してください。

ログおよびメトリックの詳細なリファレンスについては、「Azure Machine Learning 監視データのリファレンス」を参照してください。

サンプル Kusto クエリ

重要

[サービス名] のメニューから [ログ] を選択すると、クエリのスコープが現在の Azure Machine Learning ワークスペースに設定された状態で Log Analytics が開きます。 つまり、ログ クエリには、そのリソースからのデータのみが含まれます。 他のワークスペースのデータや他の Azure サービスのデータを含むクエリを実行する場合は、 [Azure Monitor] メニューから [ログ] を選択します。 詳細については、「Azure Monitor Log Analytics のログ クエリのスコープと時間範囲」を参照してください。

次に、Azure Machine Learning リソースの監視に使用できるクエリを示します。

  • 過去 5 日間に失敗したジョブを取得する。

    AmlComputeJobEvent
    | where TimeGenerated > ago(5d) and EventType == "JobFailed"
    | project  TimeGenerated , ClusterId , EventType , ExecutionState , ToolType
    
  • 特定のジョブ名のレコードを取得する。

    AmlComputeJobEvent
    | where JobName == "automl_a9940991-dedb-4262-9763-2fd08b79d8fb_setup"
    | project  TimeGenerated , ClusterId , EventType , ExecutionState , ToolType
    
  • VM サイズが Standard_D1_V2 のクラスターについて、過去 5 日間のクラスター イベントを取得する。

    AmlComputeClusterEvent
    | where TimeGenerated > ago(4d) and VmSize == "STANDARD_D1_V2"
    | project  ClusterName , InitialNodeCount , MaximumNodeCount , QuotaAllocated , QuotaUtilized
    
  • 過去 8 日間のクラスター ノードの割り当て数を取得します。

    AmlComputeClusterEvent
    | where TimeGenerated > ago(8d) and TargetNodeCount  > CurrentNodeCount
    | project TimeGenerated, ClusterName, CurrentNodeCount, TargetNodeCount
    

複数の Azure Machine Learning ワークスペースを同じ Log Analytics ワークスペースに接続すると、すべてのリソースにわたってクエリを実行できます。

  • 過去 1 日のワークスペースとクラスター全体の実行中のノード数を取得します。

    AmlComputeClusterEvent
    | where TimeGenerated > ago(1d)
    | summarize avgRunningNodes=avg(TargetNodeCount), maxRunningNodes=max(TargetNodeCount)
             by Workspace=tostring(split(_ResourceId, "/")[8]), ClusterName, ClusterType, VmSize, VmPriority
    

テンプレートを使用してワークスペース監視ダッシュボードを作成する

Azure portal では、1 つのダッシュボードで集中的に、お使いのクラウド リソースが整理して表示されます。 ダッシュボードの作成の詳細については、Azure Monitor を使用してメトリック アラートを作成、表示、管理することに関するページを参照してください。

サンプルのダッシュボードをデプロイする場合は、一般公開されているテンプレートを使用できます。 サンプル ダッシュボードは Kusto クエリに基づいているため、ダッシュボードをデプロイする前に、Azure Machine Learning ワークスペースの Log Analytics データ収集を有効にする必要があります。

アラート

Azure Machine Learning のアラートにアクセスするには、Azure Monitor のメニューから [アラート] を開きます。 アラートの作成の詳細については、「Azure Monitor を使用してメトリック アラートを作成、表示、管理する」を参照してください。

次の表に、Azure Machine Learning の一般的および推奨されるメトリック アラート ルールを示します。

アラートの種類 条件 説明
モデル デプロイ失敗 集計の種類: 合計、演算子: より大きい、しきい値: 0 1 つ以上のモデル デプロイが失敗した場合
クォータ使用率 集計の種類: 平均、演算子: より大きい、しきい値: 90 クォータ使用率が 90% を超えている場合
使用できないノード 集計の種類: 合計、演算子: より大きい、しきい値: 0 1 つ以上の使用できないノードがある場合

次のステップ