モニタリング ジョブを実行する

ジョブを実行すると、Model Monitoring v2 はターゲット データセットとベースライン データセットからデータを取得し、指標を計算してアラートを生成します。Model Monitoring v2 では、アドホック モニタリング用のオンデマンド ジョブと、継続的なモニタリング用のスケジュール設定されたジョブが提供されます。どちらのオプションを選択しても、各ジョブは単一のバッチ実行です。

モニタリング オブジェクトとサポートされているモデルの詳細については、Model Monitoring v2 の概要モデル モニタリングの設定をご覧ください。

オンデマンドでジョブを実行する

1 回限りのモニタリング ジョブを実行します。ターゲット データセットとベースライン データセット、モニタリングする目標のモニタリング仕様を設定します。構成は、モデル モニターによって定義されたデフォルト(設定されている場合)をオーバーライドします。

コンソール

  1. Google Cloud コンソールで [Monitoring] ページに移動します。

    [Monitoring] に移動

  2. モニタリング ジョブを実行するモデル モニターをクリックします。

  3. モデルモニターの詳細ページで [今すぐ実行] をクリックして、モニタリング ジョブを構成します。

  4. モデルモニターで定義されているデフォルトを使用してジョブを構成します。

  5. [実行] をクリックします。

Python SDK

from vertexai.resources.preview import ml_monitoring

FEATURE_THRESHOLDS = {
  "culmen_length_mm": 0.001,
  "body_mass_g": 0.002,
}

FEATURE_DRIFT_SPEC=ml_monitoring.spec.DataDriftSpec(
  categorical_metric_type="l_infinity",
  numeric_metric_type="jensen_shannon_divergence",
  default_categorical_alert_threshold=0.001,
  default_numeric_alert_threshold=0.002,
  feature_alert_thresholds=FEATURE_THRESHOLDS,
)

PREDICTION_OUTPUT_DRIFT_SPEC=ml_monitoring.spec.DataDriftSpec(
  categorical_metric_type="l_infinity",
  numeric_metric_type="jensen_shannon_divergence",
  default_categorical_alert_threshold=0.001,
  default_numeric_alert_threshold=0.001,
)

FEATURE_ATTRIBUTION_SPEC=ml_monitoring.spec.FeatureAttributionSpec(
  default_alert_condition=0.0003,
  feature_alert_conditions={"cnt_ad_reward":0.0001},
)

EXPLANATION_SPEC=ExplanationSpec(
  parameters=ExplanationParameters(
      {"sampled_shapley_attribution": {"path_count": 2}}
  ),
  metadata=ExplanationMetadata(
      inputs={
          "cnt_ad_reward": ExplanationMetadata.InputMetadata({
              "input_tensor_name": "cnt_ad_reward",
              "encoding": "IDENTITY",
              "modality": "numeric"
          }),
          ...
      },
      ...
  )
)

TRAINING_DATASET=ml_monitoring.spec.MonitoringInput(
  gcs_uri=TRAINING_URI,
  data_format="csv"
)

TARGET_DATASET=ml_monitoring.spec.MonitoringInput(
  table_uri=BIGQUERY_URI
)

model_monitoring_job=my_model_monitor.run(
  display_name=JOB_DISPLAY_NAME,
  baseline_dataset=TRAINING_DATASET,
  target_dataset=TARGET_DATASET,
  tabular_objective_spec=ml_monitoring.spec.TabularObjective(
      # Optional: set to monitor input feature drift.
      feature_drift_spec=FEATURE_DRIFT_SPEC,

      # Optional: set to monitor prediction output drift.
      prediction_output_drift_spec=PREDICTION_OUTPUT_DRIFT_SPEC,

      # Optional: set to monitor feature attribution drift.
      feature_attribution_spec=FEATURE_ATTRIBUTION_SPEC
  ),

  # Optional: additional configurations to override default values.
  explanation_config=EXPLANATION_SPEC,
  notification_spec=NOTIFICATION_SPEC,
  output_spec=OUTPUT_SPEC
)

継続的な実行をスケジュールする

モデルモニターに対して 1 つ以上のスケジュール実行を設定できます。時間指定で継続的なモニタリングを使用するには、Model Monitoring v2 が指定された期間からデータを取得できるように、データセットにタイムスタンプ列が必要です。

コンソール

  1. Google Cloud コンソールで [Monitoring] ページに移動します。

    [Monitoring] に移動

  2. 継続的なモニタリングを構成するモデルモニターをクリックします。

  3. [定期的な実行をスケジュール] をクリックします。

  4. ターゲット データセットとベースライン データセットを設定し、[続行] をクリックします。

  5. モニタリングする目標、そのしきい値、アラート生成時の通知設定を設定します。

  6. [続行] をクリックします。

  7. 定期的なジョブのスケジュールを構成します。

    1. スケジューラの名前を指定します。
    2. [開始時間] で、最初のジョブの開始時刻を指定します。
    3. [Frequency] で、cron 式を使用して頻度を設定し、タイムゾーンを設定します。
    4. [終了] で、スケジューラを終了するタイミングを指定します。
  8. [作成] をクリックします。

Python SDK

モニタリング ジョブの頻度を設定するには、cron 式を使用します。

my_model_monitoring_schedule=my_model_monitor.create_schedule(
  display_name=SCHEDULE_DISPLAY_NAME,
  # Every day at 0:00(midnight)
  cron='"0 * * * *"',
  baseline_dataset=ml_monitoring.spec.MonitoringInput(
      endpoints=[ENDPOINT_RESOURCE_NAME],
      offset="24h",
      window="24h",
  ),
  target_dataset=ml_monitoring.spec.MonitoringInput(
      endpoints=[ENDPOINT_RESOURCE_NAME],
      window="24h"
  ),
  tabular_objective_spec=ml_monitoring.spec.TabularObjective(
      feature_drift_spec=FEATURE_DRIFT_SPEC
  ),
  output_spec=OUTPUT_SPEC,
  notification_spec=NOTIFICATION_SPEC,
)

スケジュールを一時停止または再開する

スケジュールを一時停止して再開すると、モニタリング ジョブの実行をスキップまたは一時停止できます。

コンソール

  1. Google Cloud コンソールで [Monitoring] ページに移動します。

    [Monitoring] に移動

  2. 変更するスケジュールを含むモデルモニターをクリックします。

  3. 詳細ページで、[スケジュール] タブに移動します。

  4. 変更するスケジュールをクリックします。

  5. [一時停止] または [再開] をクリックして、スケジュールを一時停止または再開します。

Python SDK

# Pause schedule
my_model_monitor.pause_schedule(my_monitoring_schedule.name)

# Resume schedule
my_model_monitor.resume_schedule(my_monitoring_schedule.name)

スケジュールを削除する

使用していないスケジュールを削除します。既存のデータと、以前に作成したジョブはそのまま残ります。

コンソール

  1. Google Cloud コンソールで [Monitoring] ページに移動します。

    [Monitoring] に移動

  2. 変更するスケジュールを含むモデルモニターをクリックします。

  3. 詳細ページで、[スケジュール] タブに移動します。

  4. 変更するスケジュールをクリックします。

  5. [削除] をクリックし、もう一度 [削除] をクリックして確定します。

Python SDK

my_model_monitor.delete_schedule(my_monitoring_schedule.name)

モニタリング ジョブの結果を分析する

Google Cloud コンソールを使用すると、モニタリング目標ごとにデータ分布を可視化し、どの変更がドリフトの原因となっているかを時系列で確認できます。

ターゲット データとベースライン データのデータ分布を比較したヒストグラムが表示されます。許容レベルに応じて、特徴生成パイプラインの調整やモデルの再トレーニングを行うことができます。

ジョブの詳細を表示

モニタリング対象の機能のリストや、アラートを生成した機能など、モニタリング ジョブの実行に関する詳細を表示します。

コンソール

  1. Google Cloud コンソールで [Monitoring] ページに移動します。

    [Monitoring] に移動

  2. 分析するジョブを含むモデルモニターをクリックします。

  3. [モニタリング詳細] ページで、[実行] タブをクリックします。

  4. 実行のリストから実行をクリックして、実行に含まれるすべての機能などの詳細を表示します。

    次の例は、バッチ予測ジョブの [] の特徴の分布の比較を示しています。Google Cloud コンソールでは、指標に応じて、一意の値の数、平均値、標準偏差などの比較の詳細も表示されます。

    ターゲット データセットとベースライン データセットの特徴分布の例を示すヒストグラム。

特徴の詳細を表示する

特徴に関する情報と、その機能を含むモニタリング ジョブのリストを表示します。

コンソール

  1. Google Cloud コンソールで [Monitoring] ページに移動します。

    [Monitoring] に移動

  2. 分析するジョブを含むモデルモニターをクリックします。

  3. [概要] タブでは、継続的なモニタリングが設定されている場合、モニタリング対象のすべての目標のブレのトレンドを含む概要を確認できます。特定の目標を詳しく調べて、モニタリング対象の特徴名やモニタリング実行のリストなどの詳細を確認することもできます。

    次の例は、の特徴の分布の比較を示しています。ヒストグラムの後で、アラートを生成した実行を確認できます。または、この機能のモニタリング データを含む別のモニタリング ジョブを選択できます。

    ターゲット データセットとベースライン データセットの入力データ分布の例を示すヒストグラム。