Menggunakan Private Service Connect untuk prediksi online

Private Service Connect memungkinkan Anda mengakses Vertex AI secara online dengan aman dari berbagai project konsumen dan jaringan VPC tanpa memerlukan alamat IP publik, akses internet publik, atau rentang alamat IP internal yang di-peering secara eksplisit.

Kami merekomendasikan Private Service Connect untuk penggunaan prediksi online kasus yang memenuhi persyaratan berikut:

  • Wajibkan koneksi pribadi dan aman
  • Memerlukan latensi rendah
  • Tidak harus dapat diakses secara publik

Private Service Connect menggunakan aturan penerusan di jaringan VPC untuk mengirim traffic secara searah ke Layanan prediksi online Vertex AI. Aturan penerusan terhubung ke lampiran layanan yang mengekspos layanan Vertex AI ke jaringan VPC Anda. Untuk informasi selengkapnya, lihat Tentang mengakses layanan Vertex AI melalui Private Service Connect. Untuk mempelajari lebih lanjut cara menyiapkan Private Service Connect, lihat Ringkasan Private Service Connect di Dokumentasi Virtual Private Cloud (VPC).

Membuat endpoint prediksi online

Gunakan salah satu metode berikut untuk membuat endpoint prediksi online dengan Private Service Connect diaktifkan:

Konsol

  1. Di Konsol Google Cloud, di Vertex AI, buka Halaman Prediksi online.

    Buka Prediksi online

  2. Klik Create.

  3. Berikan nama tampilan untuk endpoint.

  4. Pilih Pribadi.

  5. Pilih Private Service Connect.

  6. Klik Pilih project ID.

  7. Pilih project yang akan ditambahkan ke daftar yang diizinkan untuk endpoint.

  8. Klik Lanjutkan.

  9. Pilih spesifikasi model Anda. Untuk informasi selengkapnya, lihat Men-deploy model ke endpoint.

  10. Klik Create untuk membuat endpoint dan men-deploy model Anda ke endpoint tersebut.

  11. Catat ID endpoint dalam respons.

API

REST

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • VERTEX_AI_PROJECT_ID: ID project Google Cloud tempat Anda membuat endpoint prediksi online.
  • REGION: wilayah tempat Anda menggunakan Vertex AI.
  • VERTEX_AI_ENDPOINT_NAME: nama tampilan untuk prediksi online endpoint.
  • ALLOWED_PROJECTS: daftar yang dipisahkan koma untuk project ID Google Cloud, masing-masing diapit dengan tanda kutip, misalnya, ["PROJECTID1", "PROJECTID2"]. Jika project tidak ada dalam daftar ini, Anda tidak akan dapat mengirim permintaan prediksi ke endpoint Vertex AI. Pastikan untuk menyertakan VERTEX_AI_PROJECT_ID dalam daftar ini sehingga Anda bisa memanggil endpoint dari project yang sama.

Metode HTTP dan URL:

POST https://REGION-aiplatform.googleapis.com/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints

Meminta isi JSON:

{
  "displayName": "VERTEX_AI_ENDPOINT_NAME",
  "privateServiceConnectConfig": {
    "enablePrivateServiceConnect": true,
    "projectAllowlist": ["ALLOWED_PROJECTS"]
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

{
  "name": "projects/VERTEX_AI_PROJECT_NUMBER/locations/REGION/endpoints/ENDPOINT_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateEndpointOperationMetadata",
    "genericMetadata": {
      "createTime": "2020-11-05T17:45:42.812656Z",
      "updateTime": "2020-11-05T17:45:42.812656Z"
    }
  }
}
Catat ENDPOINT_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 informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

PROJECT_ID = "VERTEX_AI_PROJECT_ID"
REGION = "REGION"
VERTEX_AI_ENDPOINT_NAME = "VERTEX_AI_ENDPOINT_NAME"

from google.cloud import aiplatform

aiplatform.init(project=PROJECT_ID, location=REGION)

# Create the forwarding rule in the consumer project
psc_endpoint = aiplatform.PrivateEndpoint.create(
display_name=VERTEX_AI_ENDPOINT_NAME,
project=PROJECT_ID,
location=REGION,
private_service_connect_config=aiplatform.PrivateEndpoint.PrivateServiceConnectConfig(
    project_allowlist=["ALLOWED_PROJECTS"],
    ),
)

Ganti kode berikut:

  • VERTEX_AI_PROJECT_ID: ID project Google Cloud di mana Anda membuat endpoint prediksi online
  • REGION: wilayah tempat Anda menggunakan Vertex AI
  • VERTEX_AI_ENDPOINT_NAME: nama tampilan untuk endpoint prediksi online
  • ALLOWED_PROJECTS: daftar Google Cloud yang dipisahkan koma ID project, masing-masing diapit dengan tanda kutip. Contoh, ["PROJECTID1", "PROJECTID2"]. Jika sebuah project tidak tercantum dalam daftar ini, Anda tidak akan dapat mengirim permintaan prediksi ke endpoint Vertex AI dari layanan tersebut. Pastikan untuk menyertakan VERTEX_AI_PROJECT_ID dalam daftar ini sehingga Anda dapat memanggil endpoint dari project yang sama dengannya.

Catat ENDPOINT_ID di akhir file yang ditampilkan URI endpoint:

INFO:google.cloud.aiplatform.models:To use this PrivateEndpoint in another session:
INFO:google.cloud.aiplatform.models:endpoint = aiplatform.PrivateEndpoint('projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID')

Men-deploy model

Setelah Anda membuat endpoint prediksi online dengan Private Service Connect diaktifkan, deploy model Anda ke Private Service Connect, dengan mengikuti langkah-langkah yang diuraikan dalam Men-deploy model ke endpoint.

Mendapatkan URI lampiran layanan

Saat Anda men-deploy model, lampiran layanan akan dibuat untuk model endpoint prediksi. Lampiran layanan ini mewakili Layanan prediksi online Vertex AI yang terekspos ke Jaringan VPC. Jalankan Perintah gcloud ai endpoints describe untuk mendapatkan URI lampiran layanan.

  1. Hanya cantumkan nilai serviceAttachment dari detail endpoint:

    gcloud ai endpoints describe ENDPOINT_ID \
    --project=VERTEX_AI_PROJECT_ID \
    --region=REGION \
    | grep -i serviceAttachment
    

    Ganti kode berikut:

    • ENDPOINT_ID: ID endpoint prediksi online Anda
    • VERTEX_AI_PROJECT_ID: ID project Google Cloud tempat Anda telah membuat endpoint prediksi online
    • REGION: wilayah untuk permintaan ini

    Outputnya mirip dengan hal berikut ini:

    serviceAttachment: projects/ac74a9f84c2e5f2a1-tp/regions/us-central1/serviceAttachments/gkedpm-c6e6a854a634dc99472bb802f503c1
    
  2. Catat seluruh string di kolom serviceAttachment. Ini adalah URI lampiran layanan.

Membuat aturan penerusan

Anda dapat memesan alamat IP internal dan membuat aturan penerusan dengan alamat tersebut. Untuk membuat aturan penerusan, Anda memerlukan URI lampiran layanan dari langkah sebelumnya.

  1. Untuk mencadangkan alamat IP internal bagi aturan penerusan, gunakan Perintah gcloud compute addresses create:

    gcloud compute addresses create ADDRESS_NAME \
    --project=VPC_PROJECT_ID \
    --region=REGION \
    --subnet=SUBNETWORK \
    --addresses=INTERNAL_IP_ADDRESS
    

    Ganti kode berikut:

    • ADDRESS_NAME: nama untuk alamat IP internal
    • VPC_PROJECT_ID: ID project Google Cloud yang menghosting jaringan VPC Anda. Jika endpoint prediksi online Anda aturan penerusan Private Service Connect dihosting di proyek, gunakan VERTEX_AI_PROJECT_ID untuk parameter ini.
    • REGION: region Google Cloud tempat Aturan penerusan Private Service Connect akan dibuat
    • SUBNETWORK: nama subnet VPC yang berisi alamat IP
    • INTERNAL_IP_ADDRESS: alamat IP internal untuk cadangan. Parameter ini bersifat opsional.

      • Jika parameter ini ditentukan, alamat IP harus berada dalam di rentang alamat IP primer subnet. Alamat IP dapat berupa Alamat RFC 1918 atau subnet dengan rentang non-RFC.
      • Jika parameter ini dihilangkan, alamat IP internal akan dialokasikan secara otomatis.
      • Untuk informasi selengkapnya, lihat Cadangkan alamat IPv4 atau IPv6 internal statis baru.
  2. Untuk memverifikasi bahwa alamat IP sudah dicadangkan, gunakan Perintah gcloud compute addresses list:

    gcloud compute addresses list --filter="name=(ADDRESS_NAME)" \
    --project=VPC_PROJECT_ID
    

    Dalam respons, verifikasi bahwa status RESERVED muncul untuk alamat IP.

  3. Untuk membuat aturan penerusan dan mengarahkannya ke lampiran layanan prediksi online, gunakan Perintah gcloud compute forwarding-rules create:

    gcloud compute forwarding-rules create PSC_FORWARDING_RULE_NAME \
        --address=ADDRESS_NAME \
        --project=VPC_PROJECT_ID \
        --region=REGION \
        --network=VPC_NETWORK_NAME \
        --target-service-attachment=SERVICE_ATTACHMENT_URI
    

    Ganti kode berikut:

    • PSC_FORWARDING_RULE_NAME: nama untuk aturan penerusan
    • VPC_NETWORK_NAME: nama jaringan VPC tempat endpoint akan dibuat
    • SERVICE_ATTACHMENT_URI: lampiran layanan yang Anda buat catatan sebelumnya
  4. Untuk memverifikasi bahwa lampiran layanan menerima endpoint, gunakan metode Perintah gcloud compute forwarding-rules describe:

    gcloud compute forwarding-rules describe PSC_FORWARDING_RULE_NAME \
    --project=VPC_PROJECT_ID \
    --region=REGION
    

    Dalam respons, verifikasi bahwa status ACCEPTED muncul di Kolom pscConnectionStatus.

Opsional: Dapatkan alamat IP internal

Jika Anda tidak menentukan nilai untuk INTERNAL_IP_ADDRESS saat membuat aturan penerusan, Anda bisa mendapatkan alamat yang dialokasikan secara otomatis dengan menggunakan Perintah gcloud compute forwarding-rules describe:

gcloud compute forwarding-rules describe PSC_FORWARDING_RULE_NAME \
--project=VERTEX_AI_PROJECT_ID \
--region=REGION \
| grep -i IPAddress

Ganti kode berikut:

  • VERTEX_AI_PROJECT_ID: project ID Anda
  • REGION: nama wilayah untuk permintaan ini

Mendapatkan prediksi online

Mendapatkan prediksi online dari endpoint dengan Private Service Connect mirip dengan mendapatkan prediksi online dari endpoint publik, kecuali untuk pertimbangan berikut:

  • Permintaan harus dikirim dari project yang ditentukan dalam projectAllowlist saat endpoint prediksi online dibuat.
  • Jika akses global tidak diaktifkan, permintaan harus dikirim dari region yang sama.
  • Untuk mendapatkan prediksi menggunakan REST, Anda harus terhubung menggunakan Alamat IP, kecuali jika Anda membuat data DNS untuk alamat IP internal. Sebagai misalnya, Anda harus mengirimkan predict permintaan ke endpoint berikut:

    https://INTERNAL_IP_ADDRESS/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict
    

    Ganti INTERNAL_IP_ADDRESS dengan alamat IP internal yang Anda telah dipesan sebelumnya.

  • Berikut adalah contoh cara mengirim prediksi permintaan menggunakan Python:

    REQUEST_FILE = "PATH_TO_INPUT_FILE"
    import json
    
    import urllib3
    
    urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
    
    with open(REQUEST_FILE) as json_file:
        data = json.load(json_file)
        response = psc_endpoint.predict(
            instances=data["instances"], endpoint_override=INTERNAL_IP_ADDRESS
        )
    print(response)
    

    Ganti PATH_TO_INPUT_FILE dengan jalur ke file JSON yang berisi input permintaan.

Opsional: Membuat data DNS untuk alamat IP internal

Kami merekomendasikan agar Anda membuat data DNS sehingga Anda bisa mendapatkan prediksi online dari endpoint tanpa perlu menentukan alamat IP internal.

Untuk informasi selengkapnya, lihat Cara lain untuk mengonfigurasi DNS.

  1. Buat zona DNS pribadi dengan menggunakan perintah Perintah gcloud dns managed-zones create. Zona ini dikaitkan dengan jaringan VPC yang tempat aturan penerusan dibuat.

    DNS_NAME_SUFFIX="prediction.p.vertexai.goog."  # DNS names have "." at the end.
    gcloud dns managed-zones create ZONE_NAME \
    --project=VPC_PROJECT_ID \
    --dns-name=$DNS_NAME_SUFFIX \
    --networks=VPC_NETWORK_NAME \
    --visibility=private \
    --description="A DNS zone for Vertex AI endpoints using Private Service Connect."
    
    

    Ganti kode berikut:

    • ZONE_NAME: nama zona DNS
  2. Untuk membuat DNS yang ada di zona tersebut, gunakan Perintah gcloud dns record-sets create:

    DNS_NAME=ENDPOINT_ID.REGION-VERTEX_AI_PROJECT_NUMBER.$DNS_NAME_SUFFIX
    gcloud dns record-sets create $DNS_NAME \
    --rrdatas=INTERNAL_IP_ADDRESS \
    --zone=ZONE_NAME \
    --type=A \
    --ttl=60 \
    --project=VPC_PROJECT_ID
    

    Ganti kode berikut:

    • VERTEX_AI_PROJECT_NUMBER: nomor project untuk project VERTEX_AI_PROJECT_ID. Anda dapat menemukan nomor project di Konsol Google Cloud. Untuk informasi selengkapnya, lihat Mengidentifikasi project.
    • INTERNAL_IP_ADDRESS: alamat IP internal endpoint prediksi online

    Sekarang Anda dapat mengirim permintaan predict ke:

    https://ENDPOINT_ID.REGION-VERTEX_AI_PROJECT_NUMBER.prediction.p.vertexai.goog/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict
    

Berikut adalah contoh cara mengirim prediksi permintaan ke zona DNS menggunakan Python:

REQUEST_FILE = "PATH_TO_INPUT_FILE"
import json

import urllib3

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

with open(REQUEST_FILE) as json_file:
    data = json.load(json_file)
    response = psc_endpoint.predict(
        instances=data["instances"], endpoint_override=DNS_NAME
    )
print(response)

Ganti DNS_NAME dengan nama DNS yang Anda tentukan di perintah gcloud dns record-sets create.

Batasan

Endpoint Vertex AI dengan Private Service Connect tunduk kepada batasan berikut:

  • Traffic keluar pribadi dari dalam endpoint tidak didukung. Karena Aturan penerusan Private Service Connect bersifat searah, pribadi lainnya Workload Google Cloud tidak dapat diakses di dalam container Anda.
  • Konfigurasi projectAllowlist endpoint tidak dapat diubah.
  • Logging akses tidak didukung.
  • Logging permintaan dan respons tidak didukung.
  • Vertex Explainable AI tidak didukung.

Batasan pratinjau

Dalam Pratinjau, batasan tambahan berikut berlaku:

  • Jika Anda membatalkan deployment semua model Private Service Connect dan men-deploy ulang Anda harus membuat ulang aturan penerusan, meskipun lampiran layanan sama.
  • Semua endpoint harus memiliki konfigurasi projectAllowlist yang sama.

Langkah selanjutnya