ジョブを実行すると、Model Monitoring v2 はターゲット データセットとベースライン データセットからデータを取得し、指標を計算してアラートを生成します。Model Monitoring v2 では、アドホック モニタリング用のオンデマンド ジョブと、継続的なモニタリング用のスケジュール設定されたジョブが提供されます。どちらのオプションを選択しても、各ジョブは単一のバッチ実行です。
モニタリング オブジェクトとサポートされているモデルの詳細については、Model Monitoring v2 の概要とモデル モニタリングの設定をご覧ください。
オンデマンドでジョブを実行する
1 回限りのモニタリング ジョブを実行します。ターゲット データセットとベースライン データセット、モニタリングする目標のモニタリング仕様を設定します。構成は、モデル モニターによって定義されたデフォルト(設定されている場合)をオーバーライドします。
コンソール
Google Cloud コンソールで [Monitoring] ページに移動します。
モニタリング ジョブを実行するモデル モニターをクリックします。
モデルモニターの詳細ページで [今すぐ実行] をクリックして、モニタリング ジョブを構成します。
モデルモニターで定義されているデフォルトを使用してジョブを構成します。
[実行] をクリックします。
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 が指定された期間からデータを取得できるように、データセットにタイムスタンプ列が必要です。
コンソール
Google Cloud コンソールで [Monitoring] ページに移動します。
継続的なモニタリングを構成するモデルモニターをクリックします。
[定期的な実行をスケジュール] をクリックします。
ターゲット データセットとベースライン データセットを設定し、[続行] をクリックします。
モニタリングする目標、そのしきい値、アラート生成時の通知設定を設定します。
[続行] をクリックします。
定期的なジョブのスケジュールを構成します。
- スケジューラの名前を指定します。
- [開始時間] で、最初のジョブの開始時刻を指定します。
- [Frequency] で、cron 式を使用して頻度を設定し、タイムゾーンを設定します。
- [終了] で、スケジューラを終了するタイミングを指定します。
[作成] をクリックします。
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, )
スケジュールを一時停止または再開する
スケジュールを一時停止して再開すると、モニタリング ジョブの実行をスキップまたは一時停止できます。
コンソール
Google Cloud コンソールで [Monitoring] ページに移動します。
変更するスケジュールを含むモデルモニターをクリックします。
詳細ページで、[スケジュール] タブに移動します。
変更するスケジュールをクリックします。
[一時停止] または [再開] をクリックして、スケジュールを一時停止または再開します。
Python SDK
# Pause schedule my_model_monitor.pause_schedule(my_monitoring_schedule.name) # Resume schedule my_model_monitor.resume_schedule(my_monitoring_schedule.name)
スケジュールを削除する
使用していないスケジュールを削除します。既存のデータと、以前に作成したジョブはそのまま残ります。
コンソール
Google Cloud コンソールで [Monitoring] ページに移動します。
変更するスケジュールを含むモデルモニターをクリックします。
詳細ページで、[スケジュール] タブに移動します。
変更するスケジュールをクリックします。
[削除] をクリックし、もう一度 [削除] をクリックして確定します。
Python SDK
my_model_monitor.delete_schedule(my_monitoring_schedule.name)
モニタリング ジョブの結果を分析する
Google Cloud コンソールを使用すると、モニタリング目標ごとにデータ分布を可視化し、どの変更がドリフトの原因となっているかを時系列で確認できます。
ターゲット データとベースライン データのデータ分布を比較したヒストグラムが表示されます。許容レベルに応じて、特徴生成パイプラインの調整やモデルの再トレーニングを行うことができます。
ジョブの詳細を表示
モニタリング対象の機能のリストや、アラートを生成した機能など、モニタリング ジョブの実行に関する詳細を表示します。
コンソール
Google Cloud コンソールで [Monitoring] ページに移動します。
分析するジョブを含むモデルモニターをクリックします。
[モニタリング詳細] ページで、[実行] タブをクリックします。
実行のリストから実行をクリックして、実行に含まれるすべての機能などの詳細を表示します。
次の例は、バッチ予測ジョブの [国] の特徴の分布の比較を示しています。Google Cloud コンソールでは、指標に応じて、一意の値の数、平均値、標準偏差などの比較の詳細も表示されます。
特徴の詳細を表示する
特徴に関する情報と、その機能を含むモニタリング ジョブのリストを表示します。
コンソール
Google Cloud コンソールで [Monitoring] ページに移動します。
分析するジョブを含むモデルモニターをクリックします。
[概要] タブでは、継続的なモニタリングが設定されている場合、モニタリング対象のすべての目標のブレのトレンドを含む概要を確認できます。特定の目標を詳しく調べて、モニタリング対象の特徴名やモニタリング実行のリストなどの詳細を確認することもできます。
次の例は、国の特徴の分布の比較を示しています。ヒストグラムの後で、アラートを生成した実行を確認できます。または、この機能のモニタリング データを含む別のモニタリング ジョブを選択できます。