バッチ予測の Vertex AI Model Monitoring

このページでは、1 回限りの Model Monitoring 分析を含めるようにバッチ予測ジョブ リクエストを構成する方法について説明します。バッチ予測の場合、Model Monitoring はカテゴリ入力特徴や数値入力特徴に対し、特徴スキュー検出をサポートします。

Model Monitoring スキュー分析を使用してバッチ予測ジョブを作成するには、バッチ予測入力データとモデルの元のトレーニング データの両方をリクエストに含める必要があります。Model Monitoring の分析を追加できるのは、新しいバッチ予測ジョブを作成する場合に限られます。

スキューの詳細については、Model Monitoring の概要をご覧ください。

オンライン(リアルタイム)予測用に Model Monitoring を設定する方法については、Model Monitoring の使用をご覧ください。

前提条件

バッチ予測で Model Monitoring を使用するには、次の手順に沿って操作します。

  1. Vertex AI Model Registry に、表形式 AutoML または表形式のカスタム トレーニング 形式のいずれかのモデルを用意します。

  2. トレーニング データを Cloud Storage または BigQuery にアップロードし、そのデータの URI リンクを取得します。

    • AutoML でトレーニングされたモデルの場合は、代わりにトレーニング データセットのデータセット ID を使用できます。
  3. Model Monitoring は、トレーニング データとバッチ予測の出力を比較します。トレーニング データとバッチ予測の出力には、サポートされているファイル形式を使用してください。

    モデルタイプ トレーニング データ バッチ予測の出力
    カスタム トレーニング CSV、JSONL、BigQuery、TfRecord(tf.train.Example) JSONL
    AutoML 表形式 CSV、JSONL、BigQuery、TfRecord(tf.train.Example) CSV、JSONL、BigQuery、TfRecord(Protobuf.Value)
  4. 省略可: カスタム トレーニングされたモデルの場合は、モデルのスキーマを Cloud Storage にアップロードします。Model Monitoring には、スキュー検出用のベースライン分布を計算するためのスキーマが必要です。

バッチ予測をリクエストする

次の方法で、Model Monitoring 構成をバッチ予測ジョブに追加できます。

コンソール

Model Monitoring を有効にしてバッチ予測リクエストを行う手順は次のとおりです。

REST API

REST API を使用してバッチ予測リクエストを行う手順は次のとおりです。

バッチ予測リクエストを作成するときは、次の Model Monitoring 構成をリクエスト JSON 本文に追加します。

"modelMonitoringConfig": {
 "alertConfig": {
   "emailAlertConfig": {
     "userEmails": "EMAIL_ADDRESS"
   },
  "notificationChannels": [NOTIFICATION_CHANNELS]
 },
 "objectiveConfigs": [
   {
     "trainingDataset": {
       "dataFormat": "csv",
       "gcsSource": {
         "uris": [
           "TRAINING_DATASET"
         ]
       }
     },
     "trainingPredictionSkewDetectionConfig": {
       "skewThresholds": {
         "FEATURE_1": {
           "value": VALUE_1
         },
         "FEATURE_2": {
           "value": VALUE_2
         }
       }
     }
   }
 ]
}

ここで

  • EMAIL_ADDRESS: Model Monitoring からアラートを受け取るメールアドレス。例: example@example.com

  • NOTIFICATION_CHANNELS: Model Monitoring からアラートを受信する Cloud Monitoring 通知チャンネルのリスト。通知チャンネルのリソース名は、プロジェクトの通知チャネルを一覧表示して取得できます。例: "projects/my-project/notificationChannels/1355376463305411567", "projects/my-project/notificationChannels/1355376463305411568"

  • TRAINING_DATASET は、Cloud Storage に保存されているトレーニング データセットへのリンクです。

    • BigQuery トレーニング データセットへのリンクを使用するには、gcsSource フィールドを次のように置き換えます。
    "bigquerySource": {
        {
          "inputUri": "TRAINING_DATASET"
        }
     }
    
    • AutoML モデルへのリンクを使用するには、gcsSource フィールドを次のように置き換えます。
    "dataset": "TRAINING_DATASET"
  • FEATURE_1:VALUE_1FEATURE_2:VALUE_2 は、モニタリングする各特徴のアラートしきい値ですたとえば、Age=0.4 を指定した場合、Age 特徴について入力分布とベースライン分布の間の統計的距離が 0.4 を超えると、Model Monitoring によってアラートがログに記録されます。デフォルトでは、すべてのカテゴリ特徴と数値特徴がモニタリングされ、しきい値は 0.3 です。

Model Monitoring の構成の詳細については、モニタリング ジョブのリファレンスをご覧ください。

Python

Model Monitoring を使用してカスタム表形式のモデルのバッチ予測ジョブを実行するには、サンプル ノートブックをご覧ください。

Model Monitoring は、ジョブの更新とアラートをメールで自動的に通知します。

アクセス スキュー指標

バッチ予測ジョブのスキュー指標にアクセスするには、次の方法を使用します。

コンソール(ヒストグラム)

Google Cloud コンソールを使用して、モニタリング対象の各特徴における特徴分布のヒストグラムを表示し、どのスキューが時間の経過とともに偏っているのかを確認します。

  1. [バッチ予測] ページに移動します。

    [バッチ予測] に移動

  2. [バッチ予測] ページで、分析するバッチ予測ジョブをクリックします。

  3. [モデル モニタリングのアラート] タブをクリックすると、モデルの入力特徴のリストと、各特徴のアラートしきい値などの関連情報が表示されます。

  4. 特徴を分析するには、特徴の名前をクリックします。その特徴の特徴分布のヒストグラムがページに表示されます。

    データ分布をヒストグラムとして可視化すると、データ内で発生した変更をすばやく確認できます。その後、特徴生成パイプラインの調整や、モデルの再トレーニングを決定できます。

    スキュー検出の入力データ分布とトレーニング データ分布の例を示すヒストグラム

コンソール(JSON ファイル)

Google Cloud コンソールを使用して JSON 形式の指標にアクセスします。

  1. [バッチ予測] ページに移動します。

    [バッチ予測] に移動

  2. バッチ予測モニタリング ジョブの名前をクリックします。

  3. [モニタリング プロパティ] タブをクリックします。

  4. [モニタリングの出力ディレクトリ] リンクをクリックして、Cloud Storage バケットに移動します。

  5. metrics/ フォルダをクリックします。

  6. skew/ フォルダをクリックします。

  7. feature_skew.json ファイルをクリックして、[オブジェクトの詳細] ページに移動します。

  8. 次のいずれかの方法で JSON ファイルを開きます。

  • [ダウンロード] をクリックして、ローカルのテキスト エディタでファイルを開きます。

  • gsutil URI のファイルパスを使用して、Cloud Shell またはローカル ターミナルで gsutil cat GSUTIL_URI を実行します。

feature_skew.json ファイルには、キーが特徴名で、値が特徴スキューである辞書が含まれています。例:

{
  "cnt_ad_reward": 0.670936,
  "cnt_challenge_a_friend": 0.737924,
  "cnt_completed_5_levels": 0.549467,
  "month": 0.293332,
  "operating_system": 0.05758,
  "user_pseudo_id": 0.1
}

Python

Model Monitoring でバッチ予測ジョブを実行した後に、カスタム表形式のモデルのスキュー指標にアクセスする方法については、サンプル ノートブックをご覧ください。

バッチ予測のモニタリング エラーをデバッグする

バッチ予測のモニタリング ジョブが失敗した場合は、Google Cloud コンソールでデバッグログを確認できます。

  1. [バッチ予測] ページに移動します。

    [バッチ予測] に移動

  2. 失敗したバッチ予測モニタリング ジョブの名前をクリックします。

  3. [モニタリング プロパティ] タブをクリックします。

  4. [モニタリングの出力ディレクトリ] リンクをクリックして、Cloud Storage バケットに移動します。

  5. logs/ フォルダをクリックします。

  6. いずれかの .INFO ファイルをクリックすると、[オブジェクトの詳細] ページに移動します。

  7. 次のいずれかの方法でログファイルを開きます。

    • [ダウンロード] をクリックして、ローカルのテキスト エディタでファイルを開きます。

    • gsutil URI のファイルパスを使用して、Cloud Shell またはローカル ターミナルで gsutil cat GSUTIL_URI を実行します。

ノートブック チュートリアル

これらのエンドツーエンドのチュートリアルで、Vertex AI Model Monitoring を使用してモデルの可視化と統計情報を取得する方法の詳細を確認してください。

AutoML

カスタム

XGBoost モデル

Explainable AI の特徴アトリビューション

バッチ予測

表形式モデルを設定する

次のステップ