Fitur monitor

Vertex AI Feature Store memungkinkan Anda menjadwalkan dan menjalankan tugas pemantauan fitur untuk memantau data fitur, mengambil statistik fitur, dan mendeteksi penyimpangan fitur. Anda hanya dapat memantau data fitur jika telah mendaftarkan sumber data fitur di Feature Registry.

Untuk memantau data fitur, Anda dapat membuat resource FeatureMonitor di bagian resource FeatureGroup. Saat membuat resource FeatureMonitor, Anda dapat mengonfigurasi jadwal pemantauan untuk menjalankan tugas pemantauan secara berkala pada data fitur. Atau, Anda dapat menjalankan tugas pemantauan fitur secara manual untuk memantau data fitur di luar jadwal pemantauan.

Untuk setiap tugas pemantauan yang dijalankan, Vertex AI Feature Store akan menghasilkan resource FeatureMonitorJob, yang dapat Anda ambil untuk melihat statistik fitur dan informasi tentang penyimpangan yang terdeteksi dalam data fitur.

Sebelum memulai

Sebelum memantau fitur menggunakan Vertex AI Feature Store, selesaikan prasyarat yang tercantum di bagian ini.

Mendaftarkan sumber data fitur

Daftarkan sumber data fitur Anda dari BigQuery di Registry Fitur dengan membuat grup fitur dan fitur. Resource FeatureMonitor yang digunakan untuk mengambil dan memantau statistik fitur dikaitkan dengan grup fitur.

Melakukan Autentikasi ke Vertex AI

Lakukan autentikasi ke Vertex AI, kecuali jika Anda telah melakukannya.

Select the tab for how you plan to use the samples on this page:

Python

Untuk menggunakan contoh Python di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

  1. Install the Google Cloud CLI.
  2. To initialize the gcloud CLI, run the following command:

    gcloud init
  3. 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.

Untuk informasi selengkapnya, lihat Set up authentication for a local development environment.

REST

Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.

    Install the Google Cloud CLI, then initialize it by running the following command:

    gcloud init

Untuk informasi selengkapnya, lihat Mengautentikasi untuk menggunakan REST dalam dokumentasi autentikasi Google Cloud .

Membuat monitor fitur dengan jadwal pemantauan

Untuk mengambil dan memantau statistik fitur, buat resource FeatureMonitor yang menentukan jadwal untuk menjalankan tugas pemantauan fitur secara berkala dan mengambil statistik fitur untuk fitur yang terdaftar di grup fitur.

Gunakan contoh berikut untuk membuat resource FeatureMonitor. Untuk menyiapkan beberapa jadwal untuk grup fitur yang sama, Anda harus membuat beberapa resource FeatureMonitor.

REST

Untuk membuat resource FeatureMonitor dan menjadwalkan tugas pemantauan fitur, kirim permintaan POST menggunakan metode featureMonitors.create.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • LOCATION_ID: Region tempat Anda ingin membuat monitor fitur, seperti us-central1.
  • PROJECT_ID: Project ID Anda.
  • FEATUREGROUP_NAME: Nama grup fitur tempat Anda menyiapkan pemantauan fitur.
  • FEATURE_MONITOR_NAME: Nama untuk monitor fitur baru yang ingin Anda buat.
  • FEATURE_ID_1 dan FEATURE_ID_2: ID fitur yang ingin Anda pantau.
  • DRIFT_THRESHOLD_1 dan DRIFT_THRESHOLD_2: Nilai minimum penyimpangan untuk setiap fitur yang disertakan dalam monitor fitur. Nilai minimum penyimpangan digunakan untuk mendeteksi anomali, seperti penyimpangan fitur. Masukkan nilai dalam rentang [0, 1). Jika Anda tidak memasukkan nilai, nilai minimum akan ditetapkan ke 0.3 secara default.
    Vertex AI Feature Store membandingkan snapshot dari eksekusi tugas monitor fitur berturut-turut dan menghitung drift menggunakan fungsi ML.TFDV_VALIDATE di BigQuery. Untuk mengklasifikasikan anomali, jarak L-infinity digunakan untuk fitur kategoris dan divergensi Jensen-Shannon digunakan untuk fitur numerik.
  • CRON: Ekspresi jadwal cron yang mewakili frekuensi untuk menjalankan tugas pemantauan fitur. Untuk mengetahui informasi selengkapnya, lihat cron.

Metode HTTP dan 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

Isi JSON permintaan:

{
  "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"
  }
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

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

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$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

Anda akan menerima respons JSON yang mirip dengan yang berikut ini:

{
  "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

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di panduan memulai Vertex AI menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Python Vertex AI.

Untuk melakukan autentikasi ke Vertex AI, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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"
        )

Ganti kode berikut:

  • LOCATION_ID: Region tempat Anda ingin membuat monitor fitur, seperti us-central1.
  • PROJECT_ID: Project ID Anda.
  • FEATUREGROUP_NAME: Nama grup fitur tempat Anda menyiapkan pemantauan fitur.
  • FEATURE_MONITOR_NAME: Nama untuk monitor fitur baru yang ingin Anda buat.
  • FEATURE_ID_1 dan FEATURE_ID_2: ID fitur yang ingin Anda pantau.
  • DRIFT_THRESHOLD_1 dan DRIFT_THRESHOLD_2: Nilai minimum penyimpangan untuk setiap Fitur yang disertakan dalam monitor fitur. Ambang batas penyimpangan digunakan untuk mendeteksi penyimpangan fitur. Masukkan nilai antara 0 dan 1. Jika Anda tidak memasukkan nilai, nilai minimum akan ditetapkan ke 0.3 secara default.
    Vertex AI Feature Store membandingkan snapshot data dari tugas pemantauan fitur saat ini dengan snapshot data selama tugas pemantauan fitur sebelumnya. Perhatikan bahwa untuk menghitung skor drift, Vertex AI Feature Store menggunakan fungsi ML.TFDV_VALIDATE di BigQuery.
    Untuk metrik yang digunakan untuk membandingkan statistik, jarak L-infinity digunakan untuk fitur kategoris dan divergensi Jensen-Shannon digunakan untuk fitur numerik.
  • CRON: Ekspresi jadwal cron yang mewakili frekuensi untuk menjalankan tugas pemantauan fitur. Untuk mengetahui informasi selengkapnya, lihat cron.

Menjalankan tugas pemantauan fitur secara manual

Anda dapat melewati waktu tunggu antara tugas pemantauan fitur terjadwal berturut-turut dan menjalankan tugas pemantauan fitur secara manual. Hal ini berguna jika Anda ingin mengambil informasi pemantauan dan mendeteksi anomali dalam data fitur segera, bukan menunggu tugas pemantauan terjadwal berikutnya dijalankan.

REST

Untuk menjalankan tugas pemantauan fitur secara manual dengan membuat resource FeatureMonitorJob , kirim permintaan POST menggunakan metode featureMonitorJobs.create.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • LOCATION_ID: Region tempat Anda ingin menjalankan tugas pemantauan fitur, seperti us-central1.
  • FEATUREGROUP_NAME: Nama grup fitur yang berisi resource FeatureMonitor.
  • PROJECT_ID: Project ID Anda.
  • FEATURE_MONITOR_NAME: Nama resource FeatureMonitor yang ingin Anda jalankan tugas pemantauan fiturnya.

Metode HTTP dan URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_ID/featureMonitorJobs

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Jalankan perintah berikut:

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

Jalankan perintah berikut:

$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

Anda akan menerima respons JSON yang mirip seperti berikut:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID"
}

Python

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di panduan memulai Vertex AI menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Python Vertex AI.

Untuk melakukan autentikasi ke Vertex AI, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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()

Ganti kode berikut:

  • LOCATION_ID: Region tempat Anda ingin menjalankan tugas pemantauan fitur, seperti us-central1.
  • PROJECT_ID: Project ID Anda.
  • FEATUREGROUP_NAME: Nama grup fitur yang berisi resource FeatureMonitor.
  • FEATURE_MONITOR_NAME: Nama resource FeatureMonitor yang ingin Anda gunakan untuk menjalankan tugas pemantauan fitur.

Mengambil statistik fitur dari tugas pemantauan

Anda dapat mengambil statistik fitur untuk semua fitur dalam tugas pemantauan fitur dengan mengambil resource FeatureMonitorJob menggunakan ID tugas pemantauan fitur yang dihasilkan selama eksekusi tugas pemantauan fitur. Anda juga dapat mengambil statistik fitur untuk resource tertentu untuk tugas pemantauan terbaru.

Mencantumkan tugas pemantauan fitur

Contoh berikut menunjukkan cara mengambil daftar semua resource FeatureMonitorJob yang dibuat untuk resource FeatureMonitor tertentu.

REST

Untuk mengambil daftar resource FeatureMonitorJob untuk resource FeatureMonitor yang ditentukan, kirim permintaan GET menggunakan metode featureMonitorJobs.list.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • LOCATION_ID: Region tempat resource Feature berada, seperti us-central1.
  • PROJECT_ID: Project ID Anda.
  • FEATUREGROUP_NAME: Nama grup fitur yang berisi resource FeatureMonitor.
  • FEATURE_MONITOR_NAME: Nama resource FeatureMonitor yang ingin Anda cantumkan tugas pemantauan fiturnya.

Metode HTTP dan URL:

GET https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Jalankan perintah berikut:

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

Jalankan perintah berikut:

$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

Anda akan menerima respons JSON yang mirip seperti berikut:

{
  "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

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di panduan memulai Vertex AI menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Python Vertex AI.

Untuk melakukan autentikasi ke Vertex AI, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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()

Ganti kode berikut:

  • LOCATION_ID: Region tempat resource Feature berada, seperti us-central1.
  • PROJECT_ID: Project ID Anda.
  • FEATUREGROUP_NAME: Nama grup fitur yang berisi resource FeatureMonitor.
  • FEATURE_MONITOR_NAME: Nama resource FeatureMonitor yang ingin Anda cantumkan tugas pemantauan fiturnya.

Melihat statistik fitur dari tugas pemantauan

Contoh berikut menunjukkan cara melihat statistik fitur untuk semua fitur dalam tugas pemantauan fitur. Untuk setiap fitur, statistik dan anomali ditampilkan dalam format FeatureNameStatistics.

REST

Untuk melihat statistik fitur dari tugas pemantauan dengan mengambil resource FeatureMonitorJob, kirim permintaan GET menggunakan metode featureMonitorJobs.get.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • LOCATION_ID: Region tempat tugas pemantauan fitur dijalankan, seperti us-central1.
  • PROJECT_ID: Project ID Anda.
  • FEATUREGROUP_NAME: Nama grup fitur yang berisi resource FeatureMonitor.
  • FEATURE_MONITOR_NAME: Nama resource FeatureMonitor tempat tugas pemantauan fitur dijalankan.
  • FEATURE_MONITOR_JOB_ID: ID resource FeatureMonitorJob yang ingin Anda ambil.

Metode HTTP dan 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

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Jalankan perintah berikut:

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

Jalankan perintah berikut:

$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

Anda akan menerima respons JSON yang mirip seperti berikut:

{
  "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

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di panduan memulai Vertex AI menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Python Vertex AI.

Untuk melakukan autentikasi ke Vertex AI, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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)

Ganti kode berikut:

  • LOCATION_ID: Region tempat tugas pemantauan fitur dijalankan, seperti us-central1.
  • PROJECT_ID: Project ID Anda.
  • FEATUREGROUP_NAME: Nama grup fitur yang berisi resource FeatureMonitor.
  • FEATURE_MONITOR_NAME: Nama resource FeatureMonitor tempat tugas pemantauan fitur dijalankan.
  • FEATURE_MONITOR_JOB_ID: ID resource FeatureMonitorJob yang ingin Anda ambil.

Melihat statistik fitur untuk sebuah fitur

Anda dapat mengambil statistik fitur untuk fitur tertentu dari tugas pemantauan fitur terbaru yang dijalankan, dengan mengambil detail fitur dan menentukan jumlah tugas pemantauan yang ingin Anda ambil statistiknya. Statistik dan anomali ditampilkan dalam format FeatureNameStatistics.

Contoh berikut menunjukkan cara melihat statistik fitur untuk fitur tertentu dari sejumlah tugas pemantauan fitur terbaru yang ditentukan.

REST

Untuk melihat statistik fitur untuk fitur tertentu di resource Feature, kirim permintaan GET menggunakan metode features.get dan tentukan jumlah tugas pemantauan untuk mengambil statistik.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • LOCATION_ID: Region tempat tugas pemantauan fitur dijalankan, seperti us-central1.
  • PROJECT_ID: Project ID Anda.
  • FEATUREGROUP_NAME: Nama grup fitur yang berisi fitur.
  • FEATURE_NAME: Nama resource Feature yang statistik fiturnya ingin Anda ambil.
  • LATEST_STATS_COUNT: Jumlah tugas pemantauan terbaru untuk mengambil statistik fitur.

Metode HTTP dan 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

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Jalankan perintah berikut:

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

Jalankan perintah berikut:

$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

Anda akan menerima respons JSON yang mirip seperti berikut:

{
  "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

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di panduan memulai Vertex AI menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Python Vertex AI.

Untuk melakukan autentikasi ke Vertex AI, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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)

Ganti kode berikut:

  • LOCATION_ID: Region tempat tugas pemantauan fitur dijalankan, seperti us-central1.
  • PROJECT_ID: Project ID Anda.
  • FEATUREGROUP_NAME: Nama grup fitur yang berisi resource FeatureMonitor.
  • FEATURE_NAME: Nama fitur yang statistiknya ingin Anda ambil.
  • LATEST_STATS_COUNT: Jumlah tugas pemantauan terbaru untuk mengambil statistik fitur.

Contoh kasus penggunaan: Menggunakan pemantauan fitur untuk mendeteksi penyimpangan fitur

Anda dapat menggunakan pemantauan fitur untuk mendeteksi anomali dalam data fitur yang disebut drift fitur. Drift adalah perubahan yang signifikan dan tidak terduga pada data fitur di BigQuery dari waktu ke waktu. Vertex AI Feature Store membantu Anda mengidentifikasi penyimpangan fitur dengan membandingkan snapshot pada saat tugas pemantauan dijalankan, dengan snapshot data selama eksekusi tugas pemantauan sebelumnya.

Untuk setiap fitur yang disertakan dalam pemantauan fitur, jika perbedaan antara dua snapshot melebihi nilai minimum yang ditentukan dalam parameter drift_threshold, Vertex AI Feature Store akan mengidentifikasi drift fitur dan menampilkan informasi berikut di resource FeatureMonitorJob:

  • Parameter driftDetected disetel ke true.

  • Deviasi distribusi antara dua snapshot. Untuk fitur numerik, Vertex AI Feature Store menghitung nilai ini menggunakan divergensi Jensen-Shannon. Untuk fitur kategoris, Vertex AI Feature Store menghitung nilai ini menggunakan jarak L-infinity.

  • Batas yang terlampaui oleh skor drift.

Contoh berikut menunjukkan cara mengambil resource FeatureMonitorJob dan memverifikasi apakah penyimpangan terdeteksi.

REST

Untuk mengambil resource FeatureMonitorJob , kirim permintaan GET menggunakan metode featureMonitorJobs.get.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • LOCATION_ID: Region tempat tugas pemantauan fitur dijalankan, seperti us-central1.
  • PROJECT_ID: Project ID Anda.
  • FEATUREGROUP_NAME: Nama grup fitur yang berisi resource FeatureMonitor.
  • FEATURE_MONITOR_NAME: Nama resource FeatureMonitor tempat tugas pemantauan fitur dijalankan.
  • FEATURE_MONITOR_JOB_ID: ID resource FeatureMonitorJob yang ingin Anda ambil.

Metode HTTP dan 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

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Jalankan perintah berikut:

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

Jalankan perintah berikut:

$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

Anda akan menerima respons JSON yang mirip seperti berikut:

{
  "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

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di panduan memulai Vertex AI menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Python Vertex AI.

Untuk melakukan autentikasi ke Vertex AI, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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)

Ganti kode berikut:

  • LOCATION_ID: Region tempat tugas pemantauan fitur dijalankan, seperti us-central1.
  • PROJECT_ID: Project ID Anda.
  • FEATUREGROUP_NAME: Nama grup fitur yang berisi resource FeatureMonitor.
  • FEATURE_MONITOR_NAME: Nama resource FeatureMonitor tempat tugas pemantauan fitur dijalankan.
  • FEATURE_MONITOR_JOB_ID: ID resource FeatureMonitorJob yang ingin Anda ambil.