Vertex AI Feature Store では、特徴モニタリング ジョブをスケジュールして実行し、特徴データをモニタリングし、特徴統計情報を取得し、特徴ドリフトを検出できます。特徴データをモニタリングできるのは、特徴データソースを特徴レジストリに登録している場合のみです。
特徴データをモニタリングするには、FeatureGroup
リソースの下に FeatureMonitor
リソースを作成します。FeatureMonitor
リソースの作成時に、特徴データに対してモニタリング ジョブを定期的に実行するようにモニタリング スケジュールを構成できます。また、特徴モニタリング ジョブを手動で実行して、モニタリング スケジュール外で特徴データをモニタリングすることもできます。
実行されるモニタリング ジョブごとに、Vertex AI Feature Store は FeatureMonitorJob
リソースを生成します。このリソースを取得すると、特徴統計情報と特徴データで検出されたドリフトに関する情報を表示できます。
始める前に
Vertex AI Feature Store を使用して特徴をモニタリングする前に、このセクションに記載されている前提条件を満たしてください。
特徴量データソースを登録する
特徴グループと特徴を作成して、BigQuery の特徴データソースを特徴レジストリに登録します。特徴統計情報の取得とモニタリングに使用される FeatureMonitor
リソースは、特徴グループに関連付けられています。
Vertex AI に対する認証
まだ行っていない場合は、Vertex AI に対する認証を行います。
Select the tab for how you plan to use the samples on this page:
Python
ローカル開発環境でこのページの Python サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
詳細については Set up authentication for a local development environment をご覧ください。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
詳細については、 Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。
モニタリング スケジュールを使用して特徴量モニターを作成する
特徴統計情報を取得してモニタリングするには、特徴モニタリング ジョブを定期的に実行するスケジュールを指定して FeatureMonitor
リソースを作成し、特徴グループに登録されている特徴の特徴統計情報を取得します。
次のサンプルを使用して、FeatureMonitor
リソースを作成します。同じ特徴グループに複数のスケジュールを設定するには、複数の FeatureMonitor
リソースを作成する必要があります。
REST
FeatureMonitor
リソースを作成して特徴モニタリング ジョブをスケジュールするには、featureMonitors.create メソッドを使用して POST
リクエストを送信します。
リクエストのデータを使用する前に、次のように置き換えます。
- LOCATION_ID: 特徴モニタを作成するリージョン(
us-central1
など)。 - PROJECT_ID: プロジェクト ID。
- FEATUREGROUP_NAME: 特徴モニタリングを設定する特徴グループの名前。
- FEATURE_MONITOR_NAME: 作成する新しい特徴モニタの名前。
- FEATURE_ID_1、FEATURE_ID_2: モニタリングする特徴の ID。
- DRIFT_THRESHOLD_1、DRIFT_THRESHOLD_2: 特徴モニタに含まれる各特徴のドリフトしきい値。ドリフトしきい値は、特徴ドリフトなどの異常を検出するために使用されます。
[0, 1)
の範囲内の値を入力します。値を入力しない場合、しきい値はデフォルトで0.3
に設定されます。
Vertex AI Feature Store は、連続した特徴モニタリング ジョブの実行からのスナップショットを比較し、BigQuery の ML.TFDV_VALIDATE 関数を使用してドリフトを計算します。異常を分類するには、カテゴリ特徴にはチェビシェフ距離を使用し、数値特徴にはジェンセン・シャノン ダイバージェンスを使用します。 - CRON: 特徴モニタリング ジョブの実行頻度を表す cron スケジュール式。詳細については、cron をご覧ください。
HTTP メソッドと URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors?feature_monitor_id=FEATURE_MONITOR_NAME
リクエストの本文(JSON):
{ "feature_selection_config": { "feature_configs": [ {"feature_id":"FEATURE_ID_1", "drift_threshold": "DRIFT_THRESHOLD_1" }, {"feature_id":"FEATURE_ID_2", "drift_threshold": "DRIFT_THRESHOLD_2" } ], }, "schedule_config": { "cron": "CRON" } }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors?feature_monitor_id=FEATURE_MONITOR_NAME"
PowerShell
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors?feature_monitor_id=FEATURE_MONITOR_NAME" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1beta1.CreateFeatureMonitorOperationMetadata", "genericMetadata": { "createTime": "2024-12-15T19:35:03.975958Z", "updateTime": "2024-12-15T19:35:03.975958Z" } } }
Python
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Python の設定手順を完了してください。詳細については、Vertex AI Python API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
from google.cloud import aiplatform
from vertexai.resources.preview import feature_store
def create_feature_monitor_sample(
project: str,
location: str,
existing_feature_group_id: str,
feature_monitor_id: str,
feature_selection_configs: List[Tuple[str, float]]
schedule_config: str # Cron string. For example, "0 * * * *" indicates hourly execution.
):
aiplatform.init(project="PROJECT_ID", location="LOCATION_ID")
feature_group = feature_store.FeatureGroup("FEATUREGROUP_NAME")
feature_monitor = feature_group.create_feature_monitor(
name= "FEATURE_MONITOR_NAME",
feature_selection_configs=[("FEATURE_ID_1", DRIFT_THRESHOLD_1),("FEATURE_ID_2", DRIFT_THRESHOLD_2)],
schedule_config="CRON"
)
次のように置き換えます。
- LOCATION_ID: 特徴モニタを作成するリージョン(
us-central1
など)。 - PROJECT_ID: プロジェクト ID。
- FEATUREGROUP_NAME: 特徴モニタリングを設定する特徴グループの名前。
- FEATURE_MONITOR_NAME: 作成する新しい特徴モニタの名前。
- FEATURE_ID_1、FEATURE_ID_2: モニタリングする特徴の ID。
- DRIFT_THRESHOLD_1、DRIFT_THRESHOLD_2: 特徴モニターに含まれる各特徴のドリフトしきい値。ドリフトしきい値は、特徴ドリフトの検出に使用されます。
0
~1
の値を入力してください。値を入力しない場合、しきい値はデフォルトで0.3
に設定されます。
Vertex AI Feature Store は、現在の特徴モニタリング ジョブのデータ スナップショットを、前の特徴モニタリング ジョブのデータ スナップショットと比較します。ドリフト スコアを計算するために、Vertex AI Feature Store は BigQuery の ML.TFDV_VALIDATE 関数を使用します。
統計の比較に使用される指標では、カテゴリ特徴にはチェビシェフ距離が、数値特徴にはジェンセン・シャノン ダイバージェンスが使用されます。 - CRON: 特徴モニタリング ジョブの実行頻度を表す cron スケジュール式。詳細については、cron をご覧ください。
特徴量モニタリング ジョブを手動で実行する
連続してスケジュールされた特徴モニタリング ジョブ間の待機をスキップし、特徴モニタリング ジョブを手動で実行できます。これは、次回のスケジュールされたモニタリング ジョブの実行を待たずに、モニタリング情報を取得して特徴データの異常をすぐに検出する場合に便利です。
REST
FeatureMonitorJob
リソースを作成して特徴モニタリング ジョブを手動で実行するには、featureMonitorJobs.create メソッドを使用して POST
リクエストを送信します。
リクエストのデータを使用する前に、次のように置き換えます。
- LOCATION_ID: 特徴モニタリング ジョブを実行するリージョン(
us-central1
など)。 - FEATUREGROUP_NAME:
FeatureMonitor
リソースを含む特徴グループの名前。 - PROJECT_ID: プロジェクト ID。
- FEATURE_MONITOR_NAME: 特徴モニタリング ジョブを実行する
FeatureMonitor
リソースの名前。
HTTP メソッドと URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_ID/featureMonitorJobs
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_ID/featureMonitorJobs"
PowerShell
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_ID/featureMonitorJobs" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID" }
Python
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Python の設定手順を完了してください。詳細については、Vertex AI Python API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
from google.cloud import aiplatform
from vertexai.resources.preview import feature_store
aiplatofrm.init(project="PROJECT_ID", location="LOCATION_ID")
feature_group = FeatureGroup.get("FEATUREGROUP_NAME}")
feature_monitor = feature_group.get_feature_monitor(FEATURE_MONITOR_NAME)
feature_monitor_job = feature_monitor.create_feature_monitor_job()
次のように置き換えます。
- LOCATION_ID: 特徴モニタリング ジョブを実行するリージョン(
us-central1
など)。 - PROJECT_ID: プロジェクト ID。
- FEATUREGROUP_NAME:
FeatureMonitor
リソースを含む特徴グループの名前。 - FEATURE_MONITOR_NAME: 特徴モニタリング ジョブを実行する
FeatureMonitor
リソースの名前。
モニタリング ジョブから特徴統計情報を取得する
特徴モニタリング ジョブの実行中に生成された特徴モニタリング ジョブ ID を使用して FeatureMonitorJob
リソースを取得すると、特徴モニタリング ジョブ内のすべての特徴の特徴統計情報を取得できます。最新のモニタリング ジョブの特定のリソースの特徴統計情報を取得することもできます。
特徴モニタリング ジョブを一覧表示する
次のサンプルは、特定の FeatureMonitor
リソース用に作成されたすべての FeatureMonitorJob
リソースのリストを取得する方法を示しています。
REST
指定した FeatureMonitor
リソースの FeatureMonitorJob
リソースのリストを取得するには、featureMonitorJobs.list メソッドを使用して GET
リクエストを送信します。
リクエストのデータを使用する前に、次のように置き換えます。
- LOCATION_ID:
Feature
リソースが配置されているリージョン(us-central1
など)。 - PROJECT_ID: プロジェクト ID。
- FEATUREGROUP_NAME:
FeatureMonitor
リソースを含む特徴グループの名前。 - FEATURE_MONITOR_NAME: 特徴モニタリング ジョブを一覧表示する
FeatureMonitor
リソースの名前。
HTTP メソッドと URL:
GET https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs"
PowerShell
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "featureMonitorJobs": [ { "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID_1", "createTime": "2024-12-18T19:18:18.077161Z", "finalStatus": {}, "featureSelectionConfig": { "featureConfigs": [ { "featureId": "feature_name_1", "driftThreshold": 0.2 }, { "featureId": "feature_name_2", "driftThreshold": 0.2 } ] } }, { "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID_2", "createTime": "2024-12-19T19:18:30.859921Z", "finalStatus": {}, "featureSelectionConfig": { "featureConfigs": [ { "featureId": "feature_name_1", "driftThreshold": 0.2 }, { "featureId": "feature_name_2", "driftThreshold": 0.2 } ] } } ] }
Python
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Python の設定手順を完了してください。詳細については、Vertex AI Python API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
from google.cloud import aiplatform
from vertexai.resources.preview import feature_store
aiplatofrm.init(project="PROJECT_ID", location="LOCATION_ID")
feature_group = FeatureGroup.get("FEATUREGROUP_NAME")
feature_monitor = feature_group.get_feature_monitor(FEATURE_MONITOR_NAME)
feature_monitor_jobs = feature_monitor.list_feature_monitor_jobs()
次のように置き換えます。
- LOCATION_ID:
Feature
リソースが配置されているリージョン(us-central1
など)。 - PROJECT_ID: プロジェクト ID。
- FEATUREGROUP_NAME:
FeatureMonitor
リソースを含む特徴グループの名前。 - FEATURE_MONITOR_NAME: 特徴モニタリング ジョブを一覧表示する
FeatureMonitor
リソースの名前。
モニタリング ジョブの特徴統計情報を表示する
次のサンプルは、特徴モニタリング ジョブ内のすべての特徴の特徴統計情報を表示する方法を示しています。特徴ごとに、統計情報と異常が FeatureNameStatistics
形式で表示されます。
REST
FeatureMonitorJob
リソースを取得してモニタリング ジョブの特徴統計情報を表示するには、featureMonitorJobs.get メソッドを使用して GET
リクエストを送信します。
リクエストのデータを使用する前に、次のように置き換えます。
- LOCATION_ID: 特徴モニタリング ジョブが実行されたリージョン(
us-central1
など)。 - PROJECT_ID: プロジェクト ID。
- FEATUREGROUP_NAME:
FeatureMonitor
リソースを含む特徴グループの名前。 - FEATURE_MONITOR_NAME: 特徴モニタリング ジョブが実行された
FeatureMonitor
リソースの名前。 - FEATURE_MONITOR_JOB_ID: 取得する FeatureMonitorJob リソースの ID。
HTTP メソッドと URL:
GET https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID"
PowerShell
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID", "createTime": "2024-12-19T19:18:18.077161Z", "finalStatus": {}, "jobSummary": { "featureStatsAndAnomalies": [ { "featureId": "feature_id_1", "featureStats": { "name": "feature_name_1", "type": "STRING", "stringStats": { "commonStats": { "numNonMissing": "6", "minNumValues": "1", "maxNumValues": "1", "avgNumValues": 1, "numValuesHistogram": { "buckets": [ { "lowValue": 1, "highValue": 1, "sampleCount": 0.6 }, { "lowValue": 1, "highValue": 1, "sampleCount": 0.6 } ], "type": "QUANTILES" }, "totNumValues": "6" }, "unique": "2", "topValues": [ { "value": "59", "frequency": 2 }, { "value": "19", "frequency": 1 } ], "avgLength": 2, "rankHistogram": { "buckets": [ { "label": "59", "sampleCount": 2 }, { "lowRank": "1", "highRank": "1", "label": "19", "sampleCount": 1 } ] } } }, "statsTime": "2024-12-19T19:18:18.077161Z", "featureMonitorJobId": "FEATURE_MONITOR_JOB_ID", "featureMonitorId": "FEATURE_MONITOR_NAME" }, { "featureId": "feature_id_2", "featureStats": { "name": "feature_name_1", "type": "STRING", "stringStats": { "commonStats": { "numNonMissing": "6", "minNumValues": "1", "maxNumValues": "1", "avgNumValues": 1, "numValuesHistogram": { "buckets": [ { "lowValue": 1, "highValue": 1, "sampleCount": 0.6 }, { "lowValue": 1, "highValue": 1, "sampleCount": 0.6 } ], "type": "QUANTILES" }, "totNumValues": "6" }, "unique": "2", "topValues": [ { "value": "59", "frequency": 2 }, { "value": "19", "frequency": 1 } ], "avgLength": 2, "rankHistogram": { "buckets": [ { "label": "59", "sampleCount": 2 }, { "lowRank": "1", "highRank": "1", "label": "19", "sampleCount": 1 } ] } } }, "statsTime": "2024-12-19T19:18:18.077161Z", "featureMonitorJobId": "FEATURE_MONITOR_JOB_ID", "featureMonitorId": "FEATURE_MONITOR_NAME" } ] }, "driftBaseFeatureMonitorJobId": "2250003330000300000", "driftBaseSnapshotTime": "2024-12-12T16:00:01.211686Z", "featureSelectionConfig": { "featureConfigs": [ { "featureId": "feature_id_1", "driftThreshold": 0.2 }, { "featureId": "feature_id_2", "driftThreshold": 0.2 } ] }, "triggerType": "FEATURE_MONITOR_JOB_TRIGGER_ON_DEMAND" }
Python
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Python の設定手順を完了してください。詳細については、Vertex AI Python API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
from google.cloud import aiplatform
from vertexai.resources.preview import feature_store
aiplatofrm.init(project="PROJECT_ID", location="LOCATION_ID")
feature_group = FeatureGroup.get("FEATUREGROUP_NAME"})
feature_monitor = feature_group.get_feature_monitor("FEATURE_MONITOR_NAME")
feature_monitor_job = feature_monitor.get_feature_monitor_job("FEATURE_MONITOR_JOB_ID)")
# Retrieve feature stats and anomalies
feature_stats_and_anomalies = feature_monitor_job.feature_stats_and_anomalies
print(feature_stats_and_anomalies)
次のように置き換えます。
- LOCATION_ID: 特徴モニタリング ジョブが実行されたリージョン(
us-central1
など)。 - PROJECT_ID: プロジェクト ID。
- FEATUREGROUP_NAME:
FeatureMonitor
リソースを含む特徴グループの名前。 - FEATURE_MONITOR_NAME: 特徴モニタリング ジョブが実行された
FeatureMonitor
リソースの名前。 - FEATURE_MONITOR_JOB_ID: 取得する
FeatureMonitorJob
リソースの ID。
特徴の特徴統計情報を表示する
特定の特徴の詳細を取得し、統計情報を取得するモニタリング ジョブの数を指定して、最近実行された特徴モニタリング ジョブから特定の特徴の特徴統計情報を取得できます。統計情報と異常は FeatureNameStatistics
形式で表示されます。
次のサンプルは、指定した数の最近の特徴モニタリング ジョブから特定の特徴の特徴統計情報を表示する方法を示しています。
REST
Feature
リソース内の特定の特徴の特徴統計情報を表示するには、features.get メソッドを使用して GET
リクエストを送信し、統計情報を取得するモニタリング ジョブの数を指定します。
リクエストのデータを使用する前に、次のように置き換えます。
- LOCATION_ID: 特徴モニタリング ジョブが実行されたリージョン(
us-central1
など)。 - PROJECT_ID: プロジェクト ID。
- FEATUREGROUP_NAME: 特徴を含む特徴グループの名前。
- FEATURE_NAME: 特徴統計情報を取得する
Feature
リソースの名前。 - LATEST_STATS_COUNT: 特徴統計情報を取得する最新のモニタリング ジョブの数。
HTTP メソッドと URL:
GET https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/features/FEATURE_NAME?feature_stats_and_anomaly_spec.latest_stats_count=LATEST_STATS_COUNT
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/features/FEATURE_NAME?feature_stats_and_anomaly_spec.latest_stats_count=LATEST_STATS_COUNT"
PowerShell
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/features/FEATURE_NAME?feature_stats_and_anomaly_spec.latest_stats_count=LATEST_STATS_COUNT" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/features/FEATURE_NAME", "createTime": "2024-12-19T21:17:23.373559Z", "updateTime": "2024-12-19T21:17:23.373559Z", "etag": "sample_etag", "featureStatsAndAnomaly": [ { "featureStats": { "name": "FEATURE_NAME", "type": "STRING", "stringStats": { "commonStats": { "numNonMissing": "4", "minNumValues": "1", "maxNumValues": "1", "avgNumValues": 1, "numValuesHistogram": { "buckets": [ { "lowValue": 1, "highValue": 1, "sampleCount": 0.4 }, { "lowValue": 1, "highValue": 1, "sampleCount": 0.4 }, { "lowValue": 1, "highValue": 1, "sampleCount": 0.4 }, { "lowValue": 1, "highValue": 1, "sampleCount": 0.4 } ], "type": "QUANTILES" }, "totNumValues": "4" }, "unique": "4", "topValues": [ { "value": "feature_value_1", "frequency": 1 }, { "value": "feature_value_2", "frequency": 1 }, { "value": "feature_value_3", "frequency": 1 }, { "value": "feature_value_4", "frequency": 1 } ], "avgLength": 4, "rankHistogram": { "buckets": [ { "label": "label_1", "sampleCount": 1 }, { "lowRank": "1", "highRank": "1", "label": "label_2", "sampleCount": 1 }, { "lowRank": "2", "highRank": "2", "label": "label_3", "sampleCount": 1 }, { "lowRank": "3", "highRank": "3", "label": "label_4", "sampleCount": 1 } ] } } }, "driftDetectionThreshold": 0.1, "statsTime": "2024-12-19T22:00:02.734796Z", "featureMonitorJobId": "feature_monitor_job_id_1", "featureMonitorId": "feature_monitor_name_1" } ], "versionColumnName": "version_column_name" }
Python
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Python の設定手順を完了してください。詳細については、Vertex AI Python API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
from google.cloud import aiplatform
from vertexai.resources.preview import feature_store
aiplatofrm.init(project="PROJECT_ID", location="LOCATION_ID")
feature_group = FeatureGroup.get("FEATUREGROUP_NAME"})
feature_stats_and_anomalies = feature_group.get_feature("FEATURE_NAME", latest_stats_count=LATEST_STATS_COUNT)
print(feature_stats_and_anomalies)
次のように置き換えます。
- LOCATION_ID: 特徴モニタリング ジョブが実行されたリージョン(
us-central1
など)。 - PROJECT_ID: プロジェクト ID。
- FEATUREGROUP_NAME:
FeatureMonitor
リソースを含む特徴グループの名前。 - FEATURE_NAME: 特徴統計情報を取得する特徴の名前。
- LATEST_STATS_COUNT: 特徴統計情報を取得する最新のモニタリング ジョブの数。
ユースケースの例: 特徴モニタリングを使用して特徴ドリフトを検出する
特徴モニタリングを使用すると、特徴ドリフトと呼ばれる特徴データの異常を検出できます。ドリフトとは、時間の経過とともに BigQuery 内の特徴データに予期しない大きな変化が生じることを指します。Vertex AI Feature Store は、モニタリング ジョブの実行時のスナップショットを、前のモニタリング ジョブの実行時のデータ スナップショットと比較することで、特徴のドリフトを特定するのに役立ちます。
特徴モニタに含まれる特徴について、2 つのスナップショットの差が drift_threshold
パラメータで指定されたしきい値を超えると、Vertex AI Feature Store は特徴のドリフトを特定し、FeatureMonitorJob
リソースに次の情報を返します。
driftDetected
パラメータがtrue
に設定されている。2 つのスナップショット間の分布の偏差。数値特徴の場合、Vertex AI Feature Store はジェンセン・シャノン ダイバージェンスを使用してこの値を計算します。カテゴリ特徴の場合、Vertex AI Feature Store はチェビシェフ距離を使用してこの値を計算します。
ドリフト スコアによって超過したしきい値。
次のサンプルは、FeatureMonitorJob
リソースを取得して、ドリフトが検出されたかどうかを確認する方法を示しています。
REST
FeatureMonitorJob
リソースを取得するには、featureMonitorJobs.get メソッドを使用して GET
リクエストを送信します。
リクエストのデータを使用する前に、次のように置き換えます。
- LOCATION_ID: 特徴モニタリング ジョブが実行されたリージョン(
us-central1
など)。 - PROJECT_ID: プロジェクト ID。
- FEATUREGROUP_NAME:
FeatureMonitor
リソースを含む特徴グループの名前。 - FEATURE_MONITOR_NAME: 特徴モニタリング ジョブが実行された
FeatureMonitor
リソースの名前。 - FEATURE_MONITOR_JOB_ID: 取得する
FeatureMonitorJob
リソースの ID。
HTTP メソッドと URL:
GET https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID"
PowerShell
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID", "createTime": "2024-12-14T19:45:30.026522Z", "finalStatus": {}, "jobSummary": { "featureStatsAndAnomalies": [ { "featureId": "feature_id_1", "featureStats": { "name": "feature_name_1", "type": "STRING", "stringStats": { "commonStats": { "numNonMissing": "3", "minNumValues": "1", "maxNumValues": "1", "avgNumValues": 1, "numValuesHistogram": { "buckets": [ { "lowValue": 1, "highValue": 1, "sampleCount": 0.9 }, { "lowValue": 1, "highValue": 1, "sampleCount": 0.9 }, { "lowValue": 1, "highValue": 1, "sampleCount": 0.9 } ], "type": "QUANTILES" }, "totNumValues": "3" }, "unique": "3", "topValues": [ { "value": "sample_value_1", "frequency": 1 }, { "value": "sample_value_2", "frequency": 1 }, { "value": "sample_value_3", "frequency": 1 } ], "avgLength": 3, "rankHistogram": { "buckets": [ { "label": "sample_label_1", "sampleCount": 1 }, { "lowRank": "1", "highRank": "1", "label": "sample_label_2", "sampleCount": 1 }, { "lowRank": "2", "highRank": "3", "label": "sample_label_3", "sampleCount": 1 } ] } } }, "distributionDeviation": 0.1388880008888000, "driftDetectionThreshold": 0.1, "driftDetected": true, "statsTime": "2024-12-15T19:45:37.026522Z", "featureMonitorJobId": "FEATURE_MONITOR_JOB_ID", "featureMonitorId": "FEATURE_MONITOR_NAME" } ] }, "driftBaseFeatureMonitorJobId": "2250003330000300000", "driftBaseSnapshotTime": "2024-12-12T18:18:18.077161Z", "description": "sample_feature_monitor_job_description", "featureSelectionConfig": { "featureConfigs": [ { "featureId": "feature_name", "driftThreshold": 0.1 } ] }, "triggerType": "FEATURE_MONITOR_JOB_TRIGGER_ON_DEMAND" }
Python
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Python の設定手順を完了してください。詳細については、Vertex AI Python API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
from google.cloud import aiplatform
from vertexai.resources.preview import feature_store
aiplatofrm.init(project="PROJECT_ID", location="LOCATION_ID")
feature_group = FeatureGroup.get("FEATUREGROUP_NAME"})
feature_monitor = feature_group.get_feature_monitor("FEATURE_MONITOR_NAME")
feature_monitor_job = feature_monitor.get_feature_monitor_job("FEATURE_MONITOR_JOB_ID)")
# Retrieve feature stats and anomalies
feature_stats_and_anomalies = feature_monitor_job.feature_stats_and_anomalies
print(feature_stats_and_anomalies)
# Check whether drifts are detected
for feature_stats_and_anomalies in feature_monitor_job.feature_stats_and_anomalies:
print("feature: ", feature_stats_and_anomalies.feature_id)
print("drift score: ", feature_stats_and_anomalies.distribution_deviation)
print("drift detected: ", feature_stats_and_anomalies.drift_detected)
次のように置き換えます。
- LOCATION_ID: 特徴モニタリング ジョブが実行されたリージョン(
us-central1
など)。 - PROJECT_ID: プロジェクト ID。
- FEATUREGROUP_NAME:
FeatureMonitor
リソースを含む特徴グループの名前。 - FEATURE_MONITOR_NAME: 特徴モニタリング ジョブが実行された
FeatureMonitor
リソースの名前。 - FEATURE_MONITOR_JOB_ID: 取得する
FeatureMonitorJob
リソースの ID。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2025-01-09 UTC。