Menyajikan nilai fitur

Vertex AI Feature Store memungkinkan Anda menyajikan nilai fitur secara online dari tampilan fitur dalam toko online. Misalnya, Anda dapat menampilkan nilai fitur dari tampilan fitur untuk prediksi online. Tampilan fitur harus disinkronkan setidaknya sekali sebelum Anda dapat menyajikan fitur dari fitur itu secara online.

Jika tampilan fitur ditentukan berdasarkan grup fitur dan fitur, Vertex AI Feature Store akan mengambil nilai fitur terbaru yang sesuai dengan ID entity tertentu. Jika ada beberapa data dengan nilai yang sama di kolom ID, Vertex AI Feature Store akan mengambil nilai fitur non-null terbaru, berdasarkan kolom feature_timestamp.

Jika tampilan fitur dikaitkan langsung dengan sumber data BigQuery tanpa mengaitkan grup fitur dan fitur, Vertex AI Feature Store akan mengambil semua nilai fitur dari sumber data. Dalam hal ini, setiap baris dalam sumber data harus berisi ID unik.

Anda hanya dapat menayangkan nilai fitur dari satu ID per permintaan.

Bergantung pada jenis penayangan online yang dikonfigurasi untuk toko online, Anda dapat menayangkan nilai fitur dengan salah satu cara berikut:

Mengambil nilai fitur menggunakan penyajian online Bigtable

Gunakan contoh berikut untuk mengambil nilai fitur berdasarkan ID entity tertentu menggunakan penayangan online Bigtable.

REST

Untuk mengambil semua nilai fitur terbaru untuk ID entitas tertentu dari instance FeatureView, kirim permintaan POST menggunakan metode featureViews.fetchFeatureValues.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • LOCATION_ID: Region tempat toko online berada, seperti us-central1.
  • PROJECT_ID: Project ID Anda.
  • FEATUREONLINESTORE_NAME: Nama penyimpanan online yang berisi tampilan fitur.
  • FEATUREVIEW_NAME: Nama tampilan fitur tempat Anda ingin menyajikan nilai fitur.
  • ENTITY_ID: Nilai kolom ID di data fitur tempat Anda ingin menyajikan nilai fitur terbaru.
  • FORMAT: Opsional: Format yang Anda inginkan untuk mengambil nilai fitur. Format yang didukung mencakup format pasangan nilai kunci JSON dan Struct proto.

Metode HTTP dan URL:

POST http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:fetchFeatureValues

Isi JSON permintaan:

{
  data_key: "ENTITY_ID",
  data_format: "FORMAT"
}

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 \
"http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:fetchFeatureValues"

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 "http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:fetchFeatureValues" | Select-Object -Expand Content

Anda akan melihat respons JSON seperti berikut:

key_values {
  features {
    value {
      int64_value: 258348
    }
    name: "feature_0"
  }
  features {
    value {
      double_value: 0.96300036744534068
    }
    name: "feature_1"
  }
  features {
    value {
      double_value: 0.42787383695351083
    }
    name: "feature_2"
  }
  features {
    value {
      double_value: 0.12219888824743128
    }
    name: "feature_3"
  }
  features {
    value {
      double_value: 0.037523154697944622
    }
    name: "feature_4"
  }
  features {
    value {
      double_value: 0.1766952509448767
    }
    name: "feature_5"
  }
}

Python

Gunakan contoh berikut untuk mengambil nilai fitur berdasarkan ID entity tertentu menggunakan penyajian online Bigtable.

from google.cloud.aiplatform_v1 import FeatureOnlineStoreServiceClient
from google.cloud.aiplatform_v1.types import feature_online_store_service as feature_online_store_service_pb2

data_client = FeatureOnlineStoreServiceClient(
  client_options={"api_endpoint": f"LOCATION_ID-aiplatform.googleapis.com"}
)
data_client.fetch_feature_values(
  request=feature_online_store_service_pb2.FetchFeatureValuesRequest(
    feature_view=f"projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME",
    data_key=feature_online_store_service_pb2.FeatureViewDataKey(key="ENTITY_ID"),
    data_format=feature_online_store_service_pb2.FeatureViewDataFormat.FORMAT,
  )
)

Ganti kode berikut:

  • LOCATION_ID: Region tempat toko online berada, seperti us-central1.

  • PROJECT_ID: Project ID Anda.

  • FEATUREONLINESTORE_NAME: Nama penyimpanan online yang berisi tampilan fitur.

  • FEATUREVIEW_NAME: Nama tampilan fitur tempat Anda ingin menyajikan nilai fitur.

  • ENTITY_ID: Nilai kolom ID di data fitur tempat Anda ingin menyajikan nilai fitur terbaru.

  • FORMAT: Opsional: Format yang Anda inginkan untuk mengambil nilai fitur. Format yang didukung mencakup format pasangan KEY_VALUE JSON dan proto PROTO_STRUCT.

Mengambil nilai fitur menggunakan Penyajian online yang dioptimalkan dari endpoint publik

Jika Anda telah mengonfigurasi instance toko online untuk menyajikan nilai fitur menggunakan Penayangan online yang dioptimalkan dari endpoint publik, Anda perlu melakukan langkah-langkah berikut untuk mengambil nilai fitur dari tampilan fitur dalam toko online:

  1. Ambil nama domain endpoint publik untuk instance FeatureOnlineStore.

  2. Ambil nilai fitur dari ID entity menggunakan nama domain endpoint publik.

Mengambil nama domain endpoint publik untuk toko online

Saat Anda membuat dan mengonfigurasi instance toko online untuk Penayangan online yang dioptimalkan dengan endpoint publik, Vertex AI Feature Store akan membuat nama domain endpoint publik untuk toko online. Sebelum dapat mulai menayangkan nilai fitur dari tampilan fitur di toko online, Anda harus mengambil nama domain endpoint publik dari detail toko online.

Gunakan contoh berikut untuk mengambil detail instance toko online.

REST

Untuk mengambil detail resource FeatureOnlineStore dalam project Anda, kirim permintaan GET menggunakan metode featureOnlineStores.get.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • LOCATION_ID: Region tempat toko online berada, seperti us-central1.
  • PROJECT_ID: Project ID Anda.
  • FEATUREONLINESTORE_NAME: Nama instance toko online.

Metode HTTP dan URL:

GET http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Jalankan perintah berikut:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME"

PowerShell

Jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME" | Select-Object -Expand Content

Anda akan melihat respons JSON seperti berikut:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME_1",
  "createTime": "2023-09-06T23:25:04.256314Z",
  "updateTime": "2023-09-06T23:25:04.256314Z",
  "etag": "AMEw9yMgoV0bAsYuKwVxz4Y7lOmxV7riNVHg217KaQAKORqvdqGCrQ1DIt8yHgoGXf8=",
  "state": "STABLE",
  "dedicatedServingEndpoint": {
    "publicEndpointDomainName": "PUBLIC_ENDPOINT_DOMAIN_NAME"
  },
  "optimized": {}
}

Anda memerlukan PUBLIC_ENDPOINT_DOMAIN_NAME dari respons untuk mengambil nilai fitur pada langkah berikut.

Mengambil nilai fitur dari ID entity

Setelah Anda mengambil nama domain endpoint publik untuk instance toko online, gunakan contoh berikut untuk mengambil nilai fitur untuk ID entity tertentu menggunakan Penayangan online yang dioptimalkan.

REST

Untuk mengambil semua nilai fitur terbaru untuk ID entity tertentu dari instance FeatureView, kirim permintaan POST menggunakan metode featureViews.fetchFeatureValues.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PUBLIC_ENDPOINT_DOMAIN_NAME: Nama domain endpoint publik untuk instance toko online yang Anda ambil menggunakan metode featureOnlineStores.get.
  • LOCATION_ID: Region tempat toko online berada, seperti us-central1.
  • PROJECT_ID: Project ID Anda.
  • FEATUREONLINESTORE_NAME: Nama penyimpanan online yang berisi tampilan fitur.
  • FEATUREVIEW_NAME: Nama tampilan fitur tempat Anda ingin menyajikan nilai fitur.
  • ENTITY_ID: Nilai kolom ID di data fitur tempat Anda ingin menyajikan nilai fitur terbaru.
  • FORMAT: Opsional: Format yang Anda inginkan untuk mengambil nilai fitur. Format yang didukung mencakup format pasangan nilai kunci JSON dan Struct proto.

Metode HTTP dan URL:

POST http://PUBLIC_ENDPOINT_DOMAIN_NAME/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:fetchFeatureValues

Isi JSON permintaan:

{
  id: "ENTITY_ID",
  data_format: "FORMAT"
}

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 \
"http://PUBLIC_ENDPOINT_DOMAIN_NAME/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:fetchFeatureValues"

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 "http://PUBLIC_ENDPOINT_DOMAIN_NAME/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:fetchFeatureValues" | Select-Object -Expand Content

Anda akan melihat respons JSON seperti berikut:

key_values {
  features {
    value {
      int64_value: 258348
    }
    name: "feature_0"
  }
  features {
    value {
      double_value: 0.96300036744534068
    }
    name: "feature_1"
  }
  features {
    value {
      double_value: 0.42787383695351083
    }
    name: "feature_2"
  }
  features {
    value {
      double_value: 0.12219888824743128
    }
    name: "feature_3"
  }
  features {
    value {
      double_value: 0.037523154697944622
    }
    name: "feature_4"
  }
  features {
    value {
      double_value: 0.1766952509448767
    }
    name: "feature_5"
  }
}

Python

Gunakan contoh berikut untuk mengambil nilai fitur berdasarkan ID entitas tertentu menggunakan Penayangan online yang dioptimalkan.

from google.cloud.aiplatform_v1 import FeatureOnlineStoreServiceClient
from google.cloud.aiplatform_v1.types import feature_online_store_service as feature_online_store_service_pb2

data_client = FeatureOnlineStoreServiceClient(
  client_options={"api_endpoint": f"PUBLIC_ENDPOINT_DOMAIN_NAME"}
)
data_client.fetch_feature_values(
  request=feature_online_store_service_pb2.FetchFeatureValuesRequest(
    feature_view=f"projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME",
    id=f"ENTITY_ID",
    format=feature_online_store_service_pb2.FetchFeatureValuesRequest.Format.FORMAT,
  )
)

Ganti kode berikut:

  • PUBLIC_ENDPOINT_DOMAIN_NAME: Nama domain endpoint publik untuk instance toko online yang Anda ambil menggunakan metode featureOnlineStores.get.

  • LOCATION_ID: Region tempat toko online berada, seperti us-central1.

  • PROJECT_ID: Project ID Anda.

  • FEATUREONLINESTORE_NAME: Nama penyimpanan online yang berisi tampilan fitur.

  • FEATUREVIEW_NAME: Nama tampilan fitur tempat Anda ingin menyajikan nilai fitur.

  • ENTITY_ID: Nilai kolom ID di data fitur tempat Anda ingin menyajikan nilai fitur terbaru.

  • FORMAT: Opsional: Format yang Anda inginkan untuk mengambil nilai fitur. Format yang didukung mencakup format pasangan KEY_VALUE JSON dan proto PROTO_STRUCT.

Mengambil nilai fitur menggunakan Penayangan online yang dioptimalkan dari endpoint Private Service Connect

Jika Anda telah mengonfigurasi instance toko online untuk menyajikan nilai fitur menggunakan Penayangan online yang dioptimalkan dari endpoint Private Service Connect, Anda perlu melakukan langkah-langkah berikut untuk mengambil nilai fitur dari tampilan fitur dalam toko online:

  1. Mengambil konfigurasi Private Service Connect untuk instance FeatureOnlineStore.

  2. Tambahkan endpoint untuk Private Service Connect ke konfigurasi jaringan Anda.

  3. Hubungkan ke endpoint Private Service Connect melalui gRPC.

  4. Ambil nilai fitur dari ID entity.

Mengambil string lampiran layanan untuk toko online

Saat Anda membuat dan mengonfigurasi instance toko online untuk Penayangan online yang dioptimalkan dengan endpoint Private Service Connect, Vertex AI Feature Store akan membuat string lampiran layanan yang dapat Anda gunakan untuk menyiapkan endpoint Private Service Connect. Anda dapat mengambil string lampiran layanan dari detail toko online.

Gunakan contoh berikut untuk mengambil detail instance toko online.

REST

Untuk mengambil detail resource FeatureOnlineStore dalam project Anda, kirim permintaan GET menggunakan metode featureOnlineStores.get.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • LOCATION_ID: Region tempat toko online berada, seperti us-central1.
  • PROJECT_ID: Project ID Anda.
  • FEATUREONLINESTORE_NAME: Nama instance toko online.

Metode HTTP dan URL:

GET http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Jalankan perintah berikut:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME"

PowerShell

Jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME" | Select-Object -Expand Content

Anda akan melihat respons JSON seperti berikut:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME_1",
  "createTime": "2023-09-06T23:25:04.256314Z",
  "updateTime": "2023-09-06T23:25:04.256314Z",
  "etag": "AMEw9yMgoV0bAsYuKwVxz4Y7lOmxV7riNVHg217KaQAKORqvdqGCrQ1DIt8yHgoGXf8=",
  "state": "STABLE",
  "dedicatedServingEndpoint": {
    "privateServiceConnectConfig": {
      "enablePrivateServiceConnect": "true",
      "projectAllowlist": [
        "PROJECT_NAME"
      ]
    },
    serviceAttachment: "SERVICE_ATTACHMENT_STRING"
  },
  "optimized": {}
}

Anda memerlukan SERVICE_ATTACHMENT_STRING dari respons untuk mengambil nilai fitur pada langkah berikut.

Menambahkan endpoint untuk Private Service Connect

Guna menambahkan endpoint Private Service Connect untuk Penayangan online yang dioptimalkan ke konfigurasi jaringan Anda, lakukan langkah-langkah berikut:

  1. Di Konsol Google Cloud, pilih project yang berisi instance toko online.

  2. Buat endpoint untuk Private Service Connect dengan menentukan SERVICE_ATTACHMENT_STRING sebagai Target service. Guna mengetahui informasi cara membuat endpoint untuk Private Service Connect, lihat Membuat endpoint.

Setelah dibuat, endpoint akan muncul di tab Endpoint yang terhubung di halaman Private Service Connect. Alamat IP endpoint akan muncul di kolom Alamat IP.

Buka tab Endpoint yang terhubung

Anda harus menggunakan alamat IP ini untuk terhubung ke endpoint instance toko online Anda ke endpoint Private Service Connect melalui gRPC pada langkah berikut.

Menghubungkan ke endpoint Private Service Connect melalui gRPC

Gunakan contoh kode berikut untuk menghubungkan ke endpoint Private Service Connect yang dibuat untuk toko online Anda melalui gRPC.

Python

from google.cloud.aiplatform_v1 import FeatureOnlineStoreServiceClient
from google.cloud.aiplatform_v1.services.feature_online_store_service.transports.grpc import FeatureOnlineStoreServiceGrpcTransport
import grpc

data_client = FeatureOnlineStoreServiceClient(
  transport = FeatureOnlineStoreServiceGrpcTransport(
    # Add the IP address of the Endpoint you just created.
    channel = grpc.insecure_channel("ENDPOINT_IP:10002")
  )
)

Ganti kode berikut:

  • ENDPOINT_IP: Alamat IP endpoint di kolom Alamat IP pada halaman Private Service Connect.

Mengambil nilai fitur dari ID entity

Setelah Anda terhubung ke endpoint Private Service Connect melalui gRPC, gunakan contoh berikut untuk mengambil nilai fitur untuk ID entity tertentu menggunakan Penayangan online yang dioptimalkan.

Python

data_client.fetch_feature_values(
  feature_view=f"projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME", id=ENTITY_ID)

Ganti kode berikut:

  • LOCATION_ID: Region tempat toko online berada, seperti us-central1.

  • PROJECT_ID: Project ID Anda.

  • FEATUREONLINESTORE_NAME: Nama penyimpanan online yang berisi tampilan fitur.

  • FEATUREVIEW_NAME: Nama tampilan fitur tempat Anda ingin menyajikan nilai fitur.

  • ENTITY_ID: Nilai kolom ID di data fitur tempat Anda ingin menyajikan nilai fitur terbaru.

  • FORMAT: Opsional: Format yang Anda inginkan untuk mengambil nilai fitur. Format yang didukung mencakup format pasangan nilai kunci JSON dan Struct proto.

Langkah selanjutnya