Pemantauan

Di Vertex AI Feature Store (Lama), Anda dapat memantau dan menyetel pemberitahuan untuk featurestore dan fitur. Misalnya, tim operasi dapat memantau featurestore untuk melacak pemakaian CPU-nya. Pemilik fitur, seperti data scientist, dapat memantau nilai fitur untuk mendeteksi penyimpangan dari waktu ke waktu.

Metode untuk memantau featurestore dan fitur dijelaskan di bagian berikut:

Pemantauan featurestore

Vertex AI Feature Store (Lama) melaporkan metrik tentang featurestore, seperti beban CPU, kapasitas penyimpanan, dan latensi permintaan, ke Cloud Monitoring. Vertex AI mengumpulkan dan melaporkan metrik ini untuk Anda. Anda tidak perlu mengonfigurasi atau mengaktifkan pemantauan featurestore.

Untuk mengonfigurasi nilai minimum dan notifikasi, gunakan Cloud Monitoring. Misalnya, Anda dapat menyetel pemberitahuan jika rata-rata beban CPU melebihi 70%, yang mungkin mengharuskan Anda meningkatkan jumlah node featurestore.

Anda juga dapat melihat metrik featurestore di bagian Vertex AI pada Konsol Google Cloud untuk melihat tren dari waktu ke waktu. Untuk beberapa diagram, konsol akan menampilkan nilai agregat atau terkalkulasi untuk menjadikan informasi lebih mudah digunakan. Anda dapat melihat data mentah kapan saja di Cloud Monitoring.

Untuk informasi selengkapnya, lihat metrik pemantauan Vertex AI Feature Store (Lama) di halaman Cloud Monitoring Vertex AI.

Pemantauan nilai fitur

Dengan memantau nilai fitur, Anda dapat melacak seberapa besar perubahan distribusi nilai fitur di featurestore. Jenis pemantauan nilai fitur berikut ini didukung:

  • Analisis Snapshot: Vertex AI Feature Store (Lama) mengambil snapshot nilai fitur Anda secara berkala. Seiring waktu, saat Anda menyerap lebih banyak data, Anda mungkin melihat distribusi nilai fitur ini berubah. Perubahan ini menunjukkan bahwa model apa pun yang menggunakan fitur tersebut mungkin perlu dilatih ulang. Anda dapat menentukan nilai minimum sehingga anomali dicatat ke dalam konsol Cloud Logging setiap kali penyimpangan distribusi melampaui batas.

    Untuk set data yang melebihi 5 juta ID entity, Vertex AI Feature Store (Lama) membuat snapshot berdasarkan 5 juta ID entity yang dipilih secara acak dalam periode waktu yang Anda tentukan sebagai jumlah hari tidak berlaku.

  • Analisis Impor Fitur: Setiap operasi ImportFeatureValues menghasilkan statistik distribusi untuk nilai yang diserap ke Vertex AI Feature Store (Lama). Anda dapat memilih untuk mendeteksi anomali dengan membandingkan statistik distribusi dengan distribusi nilai fitur yang diimpor sebelumnya atau, jika diaktifkan, distribusi snapshot.

    Untuk set data yang melebihi 5 juta instance, Vertex AI Feature Store (Lama) akan membuat snapshot berdasarkan data yang dipilih secara acak, sebagai berikut:

    • Jika jumlah instance dalam set data yang diserap melebihi 5 juta, tetapi tidak melebihi 50 juta, snapshot akan dibuat berdasarkan 5 juta instance yang dipilih secara acak.
    • Jika jumlah instance dalam set data yang diserap melebihi 50 juta, snapshot akan dibuat berdasarkan 10% instance, yang dipilih secara acak.

Misalnya, pertimbangkan sebuah fitur yang mengumpulkan harga rumah yang baru-baru ini terjual, lalu memasukkan nilainya ke dalam model untuk memprediksi harga rumah. Harga rumah yang baru-baru ini terjual mungkin menyimpang secara signifikan dari waktu ke waktu, atau batch nilai yang diimpor mungkin berisi data yang sangat berbeda dengan data pelatihan. Vertex AI Feature Store (Lama) memberi tahu Anda tentang perubahan ini. Selanjutnya, Anda dapat melatih ulang model Anda untuk menggunakan informasi terbaru.

Menetapkan konfigurasi pemantauan

Untuk memulai pemantauan, Anda dapat menentukan konfigurasi pemantauan pada jenis entity, yang memungkinkan pemantauan atas semua fitur dari jenis berikut:

  • BOOL
  • STRING
  • DOUBLE
  • INT64

Anda dapat menetapkan konfigurasi pemantauan saat membuat jenis entity. Anda juga dapat memilih untuk tidak memantau fitur tertentu dengan menyetel properti disableMonitoring. Konfigurasi pemantauan jenis entity menentukan hal berikut:

  • Apakah pemantauan diaktifkan atau tidak. Pemantauan dinonaktifkan secara default.
  • Nilai minimum yang digunakan untuk mendeteksi anomali. Nilai minimum default adalah 0,3.
  • Periode lihat balik selain interval antar-snapshot (untuk analisis snapshot). Nilai defaultnya adalah 21.
  • Apakah analisis fitur impor diaktifkan atau tidak. Default-nya adalah dinonaktifkan.

Untuk informasi selengkapnya, lihat jenis FeaturestoreMonitoringConfig dalam referensi API.

Membuat jenis entity dengan pemantauan diaktifkan

Contoh berikut akan membuat jenis entity, dengan pemantauan fitur diaktifkan:

UI web

Hanya analisis snapshot yang didukung dari UI.

  1. Di bagian Vertex AI pada Konsol Google Cloud, buka halaman Features.

    Buka halaman Fitur

  2. Pilih sebuah wilayah dari menu drop-down Region.
  3. Klik Create Entity Type.
  4. Balik bagian Feature monitoring ke Enabled.
  5. Masukkan jumlah hari antar-snapshot di kolom Monitoring time interval.
    Tugas pemantauan untuk suatu jenis entity atau fitur berjalan pada jam pembulatan terdekat sesuai waktu saat Anda mengaktifkan pemantauan untuk jenis entity atau fitur tersebut. Misalnya, jika Anda mengaktifkan pemantauan pada hari Senin pukul 22.30 dan menentukan dua hari sebagai interval waktu pemantauan, tugas pemantauan pertama akan berjalan pada hari Rabu pukul 23.00.
  6. Masukkan jumlah hari untuk melihat kembali setiap snapshot di kolom Monitoring lookback window.
  7. Masukkan jumlah nilai minimum yang digunakan untuk mendeteksi anomali fitur numerik di kolom Numerical alerting threshold.
  8. Masukkan jumlah nilai minimum yang digunakan untuk mendeteksi anomali fitur kategoris di EntityType ini di kolom Categorical alerting threshold.
    Untuk informasi selengkapnya tentang cara mendeteksi anomali nilai fitur, lihat Melihat anomali nilai fitur.
  9. Klik Create.
  10. Pada tabel fitur, klik salah satu jenis entity.
  11. Untuk menambahkan fitur baru ke entity ini, klik Add Features.
  12. Untuk memilih tidak mengaktifkan pemantauan untuk fitur tertentu, nonaktifkan Enable monitoring.

REST

Untuk membuat suatu jenis entity, kirim permintaan POST menggunakan metode entityTypes.create.

Sebelum menggunakan data permintaan mana pun, lakukan penggantian berikut:

  • LOCATION_ID: Region tempat featurestore berada, seperti us-central1.
  • PROJECT_ID: Project ID Anda.
  • FEATURESTORE_ID: ID featurestore.
  • ENTITY_TYPE_ID: ID jenis entity.
  • DURATION: Durasi interval antar-snapshot dalam hari.
  • STALENESS_DAYS: Jumlah hari untuk melihat kembali snapshot yang diambil.
  • NUMERICAL_THRESHOLD_VALUE: Nilai minimum untuk mendeteksi anomali untuk fitur numerik pada jenis entity ini. Penyimpangan statistik dihitung berdasarkan Jenson-Shannon divergence.
  • CATEGORICAL_THRESHOLD_VALUE: Nilai minimum untuk mendeteksi anomali untuk fitur kategoris pada jenis entity ini. Penyimpangan statistik dihitung berdasarkan L-Infinity distance.
  • IMPORT_FEATURE_ANALYSIS_STATE: Status yang menunjukkan apakah analisis fitur impor diaktifkan atau tidak.
  • IMPORT_FEATURE_ANALYSIS_BASELINE: Baseline untuk analisis fitur impor jika diaktifkan.

Metode HTTP dan URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes?entityTypeId=ENTITY_TYPE_ID

Isi JSON permintaan:

{
  "monitoringConfig": {
    "snapshotAnalysis": {
      "monitoringIntervalDays": "DURATION"
      "stalenessDays": "STALENESS_DAYS"
    }
  },
 "numericalThresholdConfig": {
    "value": "NUMERICAL_THRESHOLD_VALUE"
  },
  "categoricalThresholdConfig": {
    "value": "CATEGORICAL_THRESHOLD_VALUE"
  },
  "importFeatureAnalysis": {
    "state": "IMPORT_FEATURE_ANALYSIS_STATE",
    "anomalyDetectionBaseline": "IMPORT_FEATURE_ANALYSIS_BASELINE"
  }
}

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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes?entityTypeId=ENTITY_TYPE_ID"

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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes?entityTypeId=ENTITY_TYPE_ID" | Select-Object -Expand Content

Anda akan melihat output yang mirip dengan berikut ini: Anda dapat menggunakan OPERATION_ID sebagai respons untuk mendapatkan status operasi.

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.ui.CreateEntityTypeOperationMetadata",
    "genericMetadata": {
      "createTime": "2022-04-29T20:29:05.206525Z",
      "updateTime": "2022-04-29T20:29:05.206525Z"
    }
  }
}

Java

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

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


import com.google.api.gax.longrunning.OperationFuture;
import com.google.cloud.aiplatform.v1.CreateEntityTypeOperationMetadata;
import com.google.cloud.aiplatform.v1.CreateEntityTypeRequest;
import com.google.cloud.aiplatform.v1.EntityType;
import com.google.cloud.aiplatform.v1.FeaturestoreMonitoringConfig;
import com.google.cloud.aiplatform.v1.FeaturestoreMonitoringConfig.SnapshotAnalysis;
import com.google.cloud.aiplatform.v1.FeaturestoreName;
import com.google.cloud.aiplatform.v1.FeaturestoreServiceClient;
import com.google.cloud.aiplatform.v1.FeaturestoreServiceSettings;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class CreateEntityTypeMonitoringSample {

  public static void main(String[] args)
      throws IOException, InterruptedException, ExecutionException, TimeoutException {
    // TODO(developer): Replace these variables before running the sample.
    String project = "YOUR_PROJECT_ID";
    String featurestoreId = "YOUR_FEATURESTORE_ID";
    String entityTypeId = "YOUR_ENTITY_TYPE_ID";
    String description = "YOUR_ENTITY_TYPE_DESCRIPTION";
    int monitoringIntervalDays = 1;
    String location = "us-central1";
    String endpoint = "us-central1-aiplatform.googleapis.com:443";
    int timeout = 300;
    createEntityTypeMonitoringSample(
        project,
        featurestoreId,
        entityTypeId,
        description,
        monitoringIntervalDays,
        location,
        endpoint,
        timeout);
  }

  static void createEntityTypeMonitoringSample(
      String project,
      String featurestoreId,
      String entityTypeId,
      String description,
      int monitoringIntervalDays,
      String location,
      String endpoint,
      int timeout)
      throws IOException, InterruptedException, ExecutionException, TimeoutException {

    FeaturestoreServiceSettings featurestoreServiceSettings =
        FeaturestoreServiceSettings.newBuilder().setEndpoint(endpoint).build();

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (FeaturestoreServiceClient featurestoreServiceClient =
        FeaturestoreServiceClient.create(featurestoreServiceSettings)) {

      FeaturestoreMonitoringConfig featurestoreMonitoringConfig =
          FeaturestoreMonitoringConfig.newBuilder()
              .setSnapshotAnalysis(
                  SnapshotAnalysis.newBuilder().setMonitoringIntervalDays(monitoringIntervalDays))
              .build();

      EntityType entityType =
          EntityType.newBuilder()
              .setDescription(description)
              .setMonitoringConfig(featurestoreMonitoringConfig)
              .build();

      CreateEntityTypeRequest createEntityTypeRequest =
          CreateEntityTypeRequest.newBuilder()
              .setParent(FeaturestoreName.of(project, location, featurestoreId).toString())
              .setEntityType(entityType)
              .setEntityTypeId(entityTypeId)
              .build();

      OperationFuture<EntityType, CreateEntityTypeOperationMetadata> entityTypeFuture =
          featurestoreServiceClient.createEntityTypeAsync(createEntityTypeRequest);
      System.out.format(
          "Operation name: %s%n", entityTypeFuture.getInitialFuture().get().getName());
      System.out.println("Waiting for operation to finish...");
      EntityType entityTypeResponse = entityTypeFuture.get(timeout, TimeUnit.SECONDS);
      System.out.println("Create Entity Type Monitoring Response");
      System.out.format("Name: %s%n", entityTypeResponse.getName());
    }
  }
}

Node.js

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

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

/**
 * TODO(developer): Uncomment these variables before running the sample.\
 * (Not necessary if passing values as arguments)
 */

// const project = 'YOUR_PROJECT_ID';
// const featurestoreId = 'YOUR_FEATURESTORE_ID';
// const entityTypeId = 'YOUR_ENTITY_TYPE_ID';
// const description = 'YOUR_ENTITY_TYPE_DESCRIPTION';
// const duration = <MONITORING_INTERVAL_IN_SECONDS>;
// const location = 'YOUR_PROJECT_LOCATION';
// const apiEndpoint = 'YOUR_API_ENDPOINT';
// const timeout = <TIMEOUT_IN_MILLI_SECONDS>;

// Imports the Google Cloud Featurestore Service Client library
const {FeaturestoreServiceClient} =
  require('@google-cloud/aiplatform').v1beta1;

// Specifies the location of the api endpoint
const clientOptions = {
  apiEndpoint: apiEndpoint,
};

// Instantiates a client
const featurestoreServiceClient = new FeaturestoreServiceClient(
  clientOptions
);

async function createEntityTypeMonitoring() {
  // Configure the parent resource
  const parent = `projects/${project}/locations/${location}/featurestores/${featurestoreId}`;

  const entityType = {
    description: description,
    monitoringConfig: {
      snapshotAnalysis: {
        monitoringInterval: {
          seconds: Number(duration),
        },
      },
    },
  };

  const request = {
    parent: parent,
    entityTypeId: entityTypeId,
    entityType: entityType,
  };

  // Create EntityType request
  const [operation] = await featurestoreServiceClient.createEntityType(
    request,
    {timeout: Number(timeout)}
  );
  const [response] = await operation.promise();

  console.log('Create entity type monitoring response');
  console.log(`Name : ${response.name}`);
  console.log('Raw response:');
  console.log(JSON.stringify(response, null, 2));
}
createEntityTypeMonitoring();

Bahasa tambahan

Untuk mempelajari cara menginstal dan menggunakan Vertex AI SDK untuk Python, lihat Menggunakan Vertex AI SDK untuk Python. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Vertex AI SDK untuk Python.

Memilih tidak mengaktifkan pemantauan untuk fitur baru

Contoh berikut membuat fitur baru dengan pemantauan dinonaktifkan:

REST

Untuk membuat fitur, kirim permintaan POST menggunakan metode features.create.

Sebelum menggunakan data permintaan mana pun, lakukan penggantian berikut:

  • LOCATION_ID: Region tempat featurestore berada, seperti us-central1.
  • PROJECT_ID: Project ID Anda.
  • FEATURESTORE_ID: ID featurestore.
  • ENTITY_TYPE_ID: ID jenis entity.
  • FEATURE_ID: ID fitur.
  • VALUE_TYPE: Jenis nilai fitur.
  • DISABLE_MONITORING: Tetapkan ke benar untuk memilih tidak mengaktifkan pemantauan secara eksplisit.

Metode HTTP dan URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID?featureId=/FEATURE_ID

Isi JSON permintaan:

{
  "disableMonitoring": "DISABLE_MONITORING",
  "valueType": "VALUE_TYPE"
}

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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID?featureId=/FEATURE_ID"

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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID?featureId=/FEATURE_ID" | Select-Object -Expand Content

Anda akan melihat output yang mirip dengan berikut ini: Anda dapat menggunakan OPERATION_ID sebagai respons untuk mendapatkan status operasi.

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.ui.CreateFeatureOperationMetadata",
    "genericMetadata": {
      "createTime": "2022-04-29T20:29:05.206525Z",
      "updateTime": "2022-04-29T20:29:05.206525Z"
    }
  }
}

Memperbarui konfigurasi pemantauan

Anda dapat menetapkan konfigurasi pemantauan saat memperbarui jenis entity. Anda juga dapat memilih untuk tidak memantau fitur tertentu dengan menyetel properti disableMonitoring.

Memperbarui konfigurasi pemantauan untuk jenis entity dan fitur

Contoh berikut memperbarui konfigurasi pemantauan untuk jenis entity yang ada dan fitur spesifik untuk jenis entity tersebut:

UI web

Hanya analisis snapshot yang didukung dari UI.

  1. Di bagian Vertex AI pada Konsol Google Cloud, buka halaman Features.
  2. Pilih sebuah wilayah dari menu drop-down Region.
  3. Di tabel fitur, lihat kolom Entity type untuk menemukan jenis entity yang ingin diperbarui.
  4. Klik nama jenis entity untuk melihat halaman detailnya.
  5. Dari panel tindakan, klik Edit Info.
  6. Di bagian Monitoring time interval, masukkan jumlah hari antar-snapshot.
    Tugas pemantauan untuk suatu jenis entity atau fitur berjalan pada jam pembulatan terdekat sesuai waktu saat Anda mengaktifkan pemantauan untuk jenis entity atau fitur tersebut. Misalnya, jika Anda mengaktifkan pemantauan pada hari Senin pukul 22.30 dan menentukan dua hari sebagai interval waktu pemantauan, tugas pemantauan pertama akan berjalan pada hari Rabu pukul 23.00.
  7. Klik Update.
  8. Demikian pula, dalam tabel fitur, lihat kolom Feature untuk menemukan fitur yang ingin diupdate.
  9. Klik nama fitur untuk melihat halaman detailnya.
  10. Dari panel tindakan, klik Edit Info.
  11. Untuk memilih tidak mengaktifkan pemantauan untuk fitur tertentu, nonaktifkan Monitoring enabled.

REST

Untuk memperbarui jenis entity, kirim permintaan PATCH menggunakan metode entityTypes.patch.

Sebelum menggunakan data permintaan mana pun, lakukan penggantian berikut:

  • LOCATION_ID: Region tempat featurestore berada, seperti us-central1.
  • PROJECT_ID: Project ID Anda.
  • FEATURESTORE_ID: ID featurestore.
  • ENTITY_TYPE_ID: ID jenis entity.
  • DURATION_IN_DAYS: Durasi interval antar-snapshot dalam hari.
  • STALENESS_DAYS: Jumlah hari untuk melihat kembali snapshot yang diambil.
  • NUMERICAL_THRESHOLD_VALUE: Nilai minimum untuk mendeteksi anomali untuk fitur numerik pada jenis entity ini. Penyimpangan statistik dihitung berdasarkan Jenson-Shannon divergence.
  • CATEGORICAL_THRESHOLD_VALUE: Nilai minimum untuk mendeteksi anomali untuk fitur kategoris pada jenis entity ini. Penyimpangan statistik dihitung berdasarkan L-Infinity distance.
  • IMPORT_FEATURE_ANALYSIS_STATE: Status yang menunjukkan apakah analisis fitur impor diaktifkan atau tidak.
  • IMPORT_FEATURE_ANALYSIS_BASELINE: Baseline yang menunjukkan ??

Metode HTTP dan URL:

PATCH https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID

Isi JSON permintaan:

{
  "monitoringConfig": {
    "snapshotAnalysis": {
      "monitoringIntervalDays": "DURATION_IN_DAYS",
      "stalenessDays": "STALENESS_DAYS"
    }
  },
  "numericalThresholdConfig": {
    "value": "NUMERICAL_THRESHOLD_VALUE"
  },
  "categoricalThresholdConfig": {
    "value": "CATEGORICAL_THRESHOLD_VALUE"
  },
  "importFeatureAnalysis": {
    "state": "IMPORT_FEATURE_ANALYSIS_STATE",
    "anomalyDetectionBaseline": "IMPORT_FEATURE_ANALYSIS_BASELINE"
  }
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

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

curl -X PATCH \
-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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID"

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 PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID" | Select-Object -Expand Content

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

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID",
  "createTime": "2021-07-22T23:18:31.339972Z",
  "updateTime": "2021-07-29T22:24:40.221821Z",
  "etag": "AMEw9yPGDpwUwHx39gIDIg5mTQz65GMhnYHRzRslVPonm1g8xTnsTC5YUibmWo2MIuI=",
  "monitoringConfig": {
    "snapshotAnalysis": {
      "monitoringIntervalDays": "DURATION_IN_DAYS",
      "stalenessDays": "STALENESS_DAYS"
    }
  },
  "numericalThresholdConfig": {
    "value": "NUMERICAL_THRESHOLD_VALUE"
  },
  "categoricalThresholdConfig": {
    "value": "CATEGORICAL_THRESHOLD_VALUE"
  },
  "importFeatureAnalysis": {
    "state": "IMPORT_FEATURE_ANALYSIS_STATE",
    "anomalyDetectionBaseline": "IMPORT_FEATURE_ANALYSIS_BASELINE"
  }
}

Java

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

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


import com.google.cloud.aiplatform.v1.EntityType;
import com.google.cloud.aiplatform.v1.EntityTypeName;
import com.google.cloud.aiplatform.v1.FeaturestoreMonitoringConfig;
import com.google.cloud.aiplatform.v1.FeaturestoreMonitoringConfig.SnapshotAnalysis;
import com.google.cloud.aiplatform.v1.FeaturestoreServiceClient;
import com.google.cloud.aiplatform.v1.FeaturestoreServiceSettings;
import com.google.cloud.aiplatform.v1.UpdateEntityTypeRequest;
import java.io.IOException;

public class UpdateEntityTypeMonitoringSample {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String project = "YOUR_PROJECT_ID";
    String featurestoreId = "YOUR_FEATURESTORE_ID";
    String entityTypeId = "YOUR_ENTITY_TYPE_ID";
    int monitoringIntervalDays = 1;
    String location = "us-central1";
    String endpoint = "us-central1-aiplatform.googleapis.com:443";
    updateEntityTypeMonitoringSample(
        project, featurestoreId, entityTypeId, monitoringIntervalDays, location, endpoint);
  }

  static void updateEntityTypeMonitoringSample(
      String project,
      String featurestoreId,
      String entityTypeId,
      int monitoringIntervalDays,
      String location,
      String endpoint)
      throws IOException {

    FeaturestoreServiceSettings featurestoreServiceSettings =
        FeaturestoreServiceSettings.newBuilder().setEndpoint(endpoint).build();

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (FeaturestoreServiceClient featurestoreServiceClient =
        FeaturestoreServiceClient.create(featurestoreServiceSettings)) {
      FeaturestoreMonitoringConfig featurestoreMonitoringConfig =
          FeaturestoreMonitoringConfig.newBuilder()
              .setSnapshotAnalysis(
                  SnapshotAnalysis.newBuilder().setMonitoringIntervalDays(monitoringIntervalDays))
              .build();
      EntityType entityType =
          EntityType.newBuilder()
              .setName(
                  EntityTypeName.of(project, location, featurestoreId, entityTypeId).toString())
              .setMonitoringConfig(featurestoreMonitoringConfig)
              .build();

      UpdateEntityTypeRequest updateEntityTypeRequest =
          UpdateEntityTypeRequest.newBuilder().setEntityType(entityType).build();
      EntityType entityTypeResponse =
          featurestoreServiceClient.updateEntityType(updateEntityTypeRequest);
      System.out.println("Update Entity Type Monitoring Response");
      System.out.println(entityTypeResponse);
    }
  }
}

Node.js

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

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

/**
 * TODO(developer): Uncomment these variables before running the sample.\
 * (Not necessary if passing values as arguments)
 */

// const project = 'YOUR_PROJECT_ID';
// const featurestoreId = 'YOUR_FEATURESTORE_ID';
// const entityTypeId = 'YOUR_ENTITY_TYPE_ID';
// const duration = <MONITORING_INTERVAL_IN_SECONDS>;
// const location = 'YOUR_PROJECT_LOCATION';
// const apiEndpoint = 'YOUR_API_ENDPOINT';
// const timeout = <TIMEOUT_IN_MILLI_SECONDS>;

// Imports the Google Cloud Featurestore Service Client library
const {FeaturestoreServiceClient} =
  require('@google-cloud/aiplatform').v1beta1;

// Specifies the location of the api endpoint
const clientOptions = {
  apiEndpoint: apiEndpoint,
};

// Instantiates a client
const featurestoreServiceClient = new FeaturestoreServiceClient(
  clientOptions
);

async function updateEntityTypeMonitoring() {
  // Configure the name resource
  const name = `projects/${project}/locations/${location}/featurestores/${featurestoreId}/entityTypes/${entityTypeId}`;

  // Constructing the monitoring configuration
  const monitoringConfig = {
    snapshotAnalysis: {
      monitoringInterval: {
        seconds: Number(duration),
      },
    },
  };

  // Constructing the entityType
  const entityType = {
    name: name,
    monitoringConfig: monitoringConfig,
  };

  const request = {
    entityType: entityType,
  };

  // Update EntityType request
  const [response] = await featurestoreServiceClient.updateEntityType(
    request,
    {timeout: Number(timeout)}
  );

  console.log('Update entity type monitoring response');
  console.log(`Name : ${response.name}`);
  console.log('Raw response:');
  console.log(JSON.stringify(response, null, 2));
}
updateEntityTypeMonitoring();

Memilih tidak mengaktifkan pemantauan untuk fitur

Contoh berikut menonaktifkan pemantauan untuk fitur yang ada:

REST

Untuk mengupdate fitur, kirim permintaan PATCH menggunakan metode features.patch.

Sebelum menggunakan data permintaan mana pun, lakukan penggantian berikut:

  • LOCATION_ID: Region tempat featurestore berada, seperti us-central1.
  • PROJECT_ID: Project ID Anda.
  • FEATURESTORE_ID: ID featurestore.
  • ENTITY_TYPE_ID: ID jenis entity.
  • FEATURE_ID: ID fitur yang akan diupdate.
  • DISABLE_MONITORING: Tetapkan ke benar untuk memilih tidak mengaktifkan pemantauan secara eksplisit.

Metode HTTP dan URL:

PATCH https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID/features/FEATURE_ID

Isi JSON permintaan:

{
  "disableMonitoring": "DISABLE_MONITORING"
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

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

curl -X PATCH \
-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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID/features/FEATURE_ID"

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 PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID/features/FEATURE_ID" | Select-Object -Expand Content

Anda akan menerima respons JSON yang mirip dengan berikut ini:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID/features/FEATURE_ID",
  "valueType": "FEATURE_VALUE_TYPE",
  "createTime": "2021-07-22T23:18:31.339972Z",
  "updateTime": "2021-07-29T22:24:40.221821Z",
  "etag": "AMEw9yPGDpwUwHx39gIDIg5mTQz65GMhnYHRzRslVPonm1g8xTnsTC5YUibmWo2MIuI=",
  "disableMonitoring": "DISABLE_MONITORING"
}

Melihat distribusi nilai fitur

Gunakan Konsol Google Cloud untuk melihat distribusi nilai fitur dari waktu ke waktu.

UI web

  1. Di bagian Vertex AI pada Konsol Google Cloud, buka halaman Features.

    Buka halaman Features

  2. Pilih sebuah wilayah dari menu drop-down Region.

  3. Untuk melihat distribusi nilai fitur bagi semua fitur dari suatu jenis entity, klik jenis entity di kolom Entity type.

  4. Untuk melihat metrik distribusi nilai fitur untuk sebuah fitur:

    1. Di kolom Feature, klik fitur yang dimaksud.

    2. Klik tab Metrics untuk melihat metrik distribusi nilai fitur.

Melihat anomali nilai fitur

Jika distribusi nilai fitur menyimpang melebihi batas yang ditentukan dalam pipeline pemantauan, nilai tersebut dianggap sebagai anomali. Ada dua jenis anomali: diferensiasi performa pelatihan dan penayangan dan penyimpangan. Untuk menghitung penyimpangan, Vertex AI membandingkan nilai fitur terbaru dalam produksi dengan baseline.

  • Untuk mendeteksi diferensiasi performa pelatihan dan penayangan, Vertex AI membandingkan nilai fitur terbaru dalam produksi dengan distribusi statistik nilai fitur dalam data pelatihan. Dalam hal ini, distribusi statistik nilai fitur dalam data pelatihan dianggap sebagai distribusi baseline. Pelajari lebih lanjut diferensiasi performa pelatihan dan penayangan.

  • Untuk mendeteksi penyimpangan, Vertex AI membandingkan nilai fitur terbaru dalam produksi dengan distribusi statistik nilai fitur dari proses pemantauan terbaru yang terjadi setidaknya satu jam lalu. Dalam hal ini, distribusi statistik nilai fitur dari proses pemantauan terbaru dianggap sebagai distribusi baseline. Pelajari penyimpangan lebih lanjut.

Dalam kedua kasus tersebut, distribusi baseline dibandingkan dengan nilai fitur terbaru dalam produksi untuk menghitung skor jarak.

  • Untuk fitur kategoris, skor jarak dihitung menggunakan L-infinity distance. Dalam hal ini, jika skor jarak melebihi nilai minimum yang Anda tentukan di kolom Categorical alerting threshold, skor tersebut dianggap sebagai anomali.

  • Untuk fitur numerik, skor jarak dihitung menggunakan Jensen-Shannon divergence. Dalam hal ini, jika skor jarak melebihi nilai minimum yang Anda tentukan di kolom Numerical alerting threshold, skor tersebut dianggap sebagai anomali.

Dalam kedua kasus tersebut, anomalinya dapat berupa diferensiasi performa pelatihan dan penayangan atau penyimpangan, tergantung distribusi baseline yang digunakan untuk menghitung skor jarak. Log anomali ditulis ke Cloud Logging dengan nama log featurestore_log. Anda dapat menyinkronkan log ke layanan downstream yang didukung Cloud Logging, seperti Pub/Sub.

Untuk informasi selengkapnya tentang cara menetapkan nilai minimum pemberitahuan, lihat Membuat jenis entity dengan pemantauan diaktifkan.

Contoh kueri untuk semua anomali yang dibuat untuk featurestore tertentu

logName="projects/model-monitoring-demo/logs/aiplatform.googleapis.com%2FFfeaturestore_log"
resource.labels.resource_container=<project_number>
resource.labels.featurestore_id=<featurestore_id>

Contoh entri log anomali

{
  "insertId": "ktbx5jf7vdn7b",
  "jsonPayload": {
    "threshold": 0.001,
    "featureName": "projects/<project_number>/locations/us-central1/featurestores/<featurestore_id>/entityTypes/<entity_type_id>/features/<feature_id>",
    "deviation": 1,
    "@type": "type.googleapis.com/google.cloud.aiplatform.logging.FeatureAnomalyLogEntry",
    "objective": "Featurestore Monitoring Snapshot Drift Anomaly"
  },
  "resource": {
    "type": "aiplatform.googleapis.com/Featurestore",
    "labels": {
      "resource_container": "<project_number>",
      "location": "us-central1",
      "featurestore_id": "<featurestore_id>"
    }
  },
  "timestamp": "2022-02-06T00:54:06.455501Z",
  "severity": "WARNING",
  "logName": "projects/model-monitoring-demo/logs/aiplatform.googleapis.com%2Ffeaturestore_log",
  "receiveTimestamp": "2022-02-06T00:54:06.476107155Z"
}

Memantau error penulisan ke penyimpanan offline untuk penyerapan streaming

Gunakan Konsol Google Cloud untuk memantau error penulisan ke penyimpanan offline selama penyerapan streaming.

Melihat metrik untuk penyerapan streaming ke penyimpanan offline

Anda dapat memantau metrik Offline storage write for streaming write untuk Vertex AI Feature Store (Lama) di Metrics Explorer.

UI web

  1. Di Konsol Google Cloud, buka halaman Metrics Explorer.

    Buka Metrics Explorer

  2. Di toolbar, pilih tab Explorer.

  3. Di tab Configuration, tentukan data yang akan ditampilkan di diagram:

    • Resource & Metric: Pilih metrik Vertex AI Feature Store - Offline storage write for streaming write.

    • Group by: Pilih error_code.

    • Minimum alignment period: Menentukan interval waktu minimum untuk menyelaraskan data dalam diagram.

  4. Setelah Anda memperbarui kolom ini, diagram akan menampilkan error penulisan ke penyimpanan offline untuk berbagai kode error.

    Setelah membuat diagram, Anda dapat menambahkannya ke dasbor kustom. Untuk informasi selengkapnya, lihat Menyimpan diagram untuk referensi pada masa mendatang.

Melihat log Vertex AI Feature Store (Lama)

Anda dapat melihat entri log untuk featurestore, termasuk log yang dihasilkan selama error penulisan ke penyimpanan offline, di Logs Explorer.

UI web

  1. Di Konsol Google Cloud, buka halaman Logs Explorer.

    Buka Logs Explorer

  2. Di Query builder, tambahkan parameter kueri berikut, lalu klik Run query:

    • Resource: Pilih Vertex AI Feature Store.
    • Log name: Di bagian Vertex AI API, pilih aiplatform.googlapis.com/featurestore_log.