Menggunakan Private Service Connect untuk mengakses prediksi batch Vertex AI dari lokal


Prediksi batch adalah permintaan asinkron yang meminta prediksi langsung dari resource model tanpa perlu men-deploy model ke endpoint.

Dalam tutorial ini, Anda menggunakan VPN dengan Ketersediaan Tinggi (HA VPN) untuk mengirim permintaan prediksi batch ke model yang dilatih secara pribadi, antara dua jaringan Virtual Private Cloud yang dapat berfungsi sebagai dasar untuk konektivitas pribadi multi-cloud dan lokal.

Tutorial ini ditujukan bagi administrator jaringan perusahaan, data scientist, dan peneliti yang sudah memahami Vertex AI, Virtual Private Cloud (VPC), konsol Google Cloud, dan Cloud Shell. Pemahaman tentang Vertex AI Workbench akan membantu, tetapi tidak bersifat wajib.

Diagram arsitektur penggunaan Private Service Connect untuk mengakses prediksi batch.

Tujuan

  • Buat dua jaringan Virtual Private Cloud (VPC), seperti yang ditunjukkan dalam diagram sebelumnya:
    • Satu (vertex-networking-vpc) digunakan untuk mengakses Google API untuk prediksi batch.
    • Yang lain (onprem-vpc) mewakili jaringan lokal.
  • Deploy gateway VPN dengan ketersediaan tinggi (HA), tunnel Cloud VPN, dan Cloud Router untuk menghubungkan vertex-networking-vpc dan onprem-vpc.
  • Buat model prediksi batch Vertex AI dan upload ke bucket Cloud Storage.
  • Buat endpoint Private Service Connect (PSC) untuk meneruskan permintaan pribadi ke REST API prediksi batch Vertex AI.
  • Konfigurasikan mode iklan kustom Cloud Router di vertex-networking-vpc untuk mengumumkan rute untuk endpoint Private Service Connect ke onprem-vpc.
  • Buat instance VM Compute Engine di onprem-vpc untuk mewakili aplikasi klien (on-prem-client) yang mengirim permintaan prediksi batch secara pribadi melalui VPN dengan ketersediaan tinggi (HA).

Biaya

Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih berikut:

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga. Pengguna Google Cloud baru mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.

Sebelum memulai

  1. In the Google Cloud console, go to the project selector page.

    Go to project selector

  2. Select or create a Google Cloud project.

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Buka Cloud Shell untuk menjalankan perintah yang tercantum dalam tutorial ini. Cloud Shell adalah lingkungan shell interaktif untuk Google Cloud yang dapat Anda gunakan untuk mengelola project dan resource dari browser web.
  5. Di Cloud Shell, tetapkan project saat ini ke project ID Google Cloud Anda dan simpan project ID yang sama ke dalam variabel shell projectid:
      projectid="PROJECT_ID"
      gcloud config set project ${projectid}
    Ganti PROJECT_ID dengan project ID Anda. Jika perlu, Anda dapat menemukan project ID di konsol Google Cloud. Untuk mengetahui informasi selengkapnya, baca Menemukan project ID.
  6. Jika Anda bukan pemilik project, minta pemilik project untuk memberi Anda peran Project IAM Admin (roles/resourcemanager.projectIamAdmin). Anda harus memiliki peran ini untuk memberikan peran IAM pada langkah berikutnya.
  7. Grant roles to your user account. Run the following command once for each of the following IAM roles: roles/compute.instanceAdmin.v1, roles/compute.networkAdmin, roles/compute.securityAdmin, roles/dns.admin, roles/iap.tunnelResourceAccessor, roles/notebooks.admin, roles/iam.serviceAccountAdmin, roles/iam.serviceAccountUser, roles/servicedirectory.editor, roles/serviceusage.serviceUsageAdmin, roles/storage.admin, roles/aiplatform.admin, roles/aiplatform.user, roles/resourcemanager.projectIamAdmin

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
    • Replace PROJECT_ID with your project ID.
    • Replace USER_IDENTIFIER with the identifier for your user account. For example, user:myemail@example.com.

    • Replace ROLE with each individual role.
  8. Enable the DNS, Artifact Registry, IAM, Compute Engine, Notebooks, and Vertex AI APIs:

    gcloud services enable dns.googleapis.com artifactregistry.googleapis.com iam.googleapis.com compute.googleapis.com notebooks.googleapis.com aiplatform.googleapis.com

Membuat jaringan VPC

Di bagian ini, Anda akan membuat dua jaringan VPC: satu untuk mengakses Google API untuk prediksi batch, dan satu lagi untuk menyimulasikan jaringan lokal. Di setiap dua jaringan VPC, Anda akan membuat gateway Cloud Router dan Cloud NAT. Gateway Cloud NAT menyediakan konektivitas keluar untuk instance virtual machine (VM) Compute Engine tanpa alamat IP eksternal.

  1. Buat jaringan VPC vertex-networking-vpc:

    gcloud compute networks create vertex-networking-vpc \
      --subnet-mode custom
    
  2. Di jaringan vertex-networking-vpc, buat subnet bernama workbench-subnet, dengan rentang IPv4 utama 10.0.1.0/28:

    gcloud compute networks subnets create workbench-subnet \
      --range=10.0.1.0/28 \
      --network=vertex-networking-vpc \
      --region=us-central1 \
      --enable-private-ip-google-access
    
  3. Buat jaringan VPC untuk menyimulasikan jaringan lokal (onprem-vpc):

    gcloud compute networks create onprem-vpc \
      --subnet-mode custom
    
  4. Di jaringan onprem-vpc, buat subnet bernama onprem-vpc-subnet1, dengan rentang IPv4 utama 172.16.10.0/29:

    gcloud compute networks subnets create onprem-vpc-subnet1 \
      --network onprem-vpc \
      --range 172.16.10.0/29 \
      --region us-central1
    

Memastikan jaringan VPC dikonfigurasi dengan benar

  1. Di konsol Google Cloud, buka tab Networks in current project di halaman VPC networks.

    Buka jaringan VPC

  2. Dalam daftar jaringan VPC, pastikan kedua jaringan telah dibuat: vertex-networking-vpc dan onprem-vpc.

  3. Klik tab Subnets in current project.

  4. Dalam daftar subnet VPC, pastikan subnet workbench-subnet dan onprem-vpc-subnet1 telah dibuat.

Mengonfigurasi konektivitas hybrid

Di bagian ini, Anda akan membuat dua gateway VPN dengan ketersediaan tinggi (HA) yang saling terhubung. Satu berada di jaringan VPC vertex-networking-vpc. Yang lainnya berada di jaringan VPC onprem-vpc. Setiap gateway berisi Cloud Router dan sepasang tunnel VPN.

Membuat gateway VPN dengan ketersediaan tinggi (HA)

  1. Di Cloud Shell, buat gateway VPN dengan ketersediaan tinggi (HA) untuk jaringan VPC vertex-networking-vpc:

    gcloud compute vpn-gateways create vertex-networking-vpn-gw1 \
       --network vertex-networking-vpc \
       --region us-central1
    
  2. Buat gateway VPN dengan ketersediaan tinggi (HA) untuk jaringan VPC onprem-vpc:

    gcloud compute vpn-gateways create onprem-vpn-gw1 \
       --network onprem-vpc \
       --region us-central1
    
  3. Di konsol Google Cloud, buka tab Cloud VPN Gateways di halaman VPN.

    Buka VPN

  4. Pastikan dua gateway (vertex-networking-vpn-gw1 dan onprem-vpn-gw1) telah dibuat dan setiap gateway memiliki dua alamat IP antarmuka.

Membuat Cloud Router dan gateway Cloud NAT

Di setiap jaringan VPC, Anda membuat dua Cloud Router: satu umum dan satu regional. Di setiap Cloud Router regional, Anda membuat gateway Cloud NAT. Gateway Cloud NAT menyediakan konektivitas keluar untuk instance virtual machine (VM) Compute Engine yang tidak memiliki alamat IP eksternal.

  1. Di Cloud Shell, buat Cloud Router untuk jaringan VPC vertex-networking-vpc:

    gcloud compute routers create vertex-networking-vpc-router1 \
       --region us-central1\
       --network vertex-networking-vpc \
       --asn 65001
    
  2. Buat Cloud Router untuk jaringan VPC onprem-vpc:

    gcloud compute routers create onprem-vpc-router1 \
       --region us-central1\
       --network onprem-vpc\
       --asn 65002
    
  3. Buat Cloud Router regional untuk jaringan VPC vertex-networking-vpc:

    gcloud compute routers create cloud-router-us-central1-vertex-nat \
      --network vertex-networking-vpc \
      --region us-central1
    
  4. Konfigurasikan gateway Cloud NAT di Cloud Router regional:

    gcloud compute routers nats create cloud-nat-us-central1 \
      --router=cloud-router-us-central1-vertex-nat \
      --auto-allocate-nat-external-ips \
      --nat-all-subnet-ip-ranges \
      --region us-central1
    
  5. Buat Cloud Router regional untuk jaringan VPC onprem-vpc:

    gcloud compute routers create cloud-router-us-central1-onprem-nat \
      --network onprem-vpc \
      --region us-central1
    
  6. Konfigurasikan gateway Cloud NAT di Cloud Router regional:

    gcloud compute routers nats create cloud-nat-us-central1-on-prem \
      --router=cloud-router-us-central1-onprem-nat \
      --auto-allocate-nat-external-ips \
      --nat-all-subnet-ip-ranges \
      --region us-central1
    
  7. Di konsol Google Cloud, buka halaman Cloud Function.

    Buka Cloud Router

  8. Dalam daftar Cloud Router, pastikan router berikut telah dibuat:

    • cloud-router-us-central1-onprem-nat
    • cloud-router-us-central1-vertex-nat
    • onprem-vpc-router1
    • vertex-networking-vpc-router1

    Anda mungkin perlu memuat ulang Google Cloud tab browser konsol untuk melihat nilai baru.

  9. Dalam daftar Cloud Router, klik cloud-router-us-central1-vertex-nat.

  10. Di halaman Detail router, pastikan gateway Cloud NAT cloud-nat-us-central1 telah dibuat.

  11. Klik panah kembali untuk kembali ke halaman Cloud Router.

  12. Dalam daftar router, klik cloud-router-us-central1-onprem-nat.

  13. Di halaman Detail router, pastikan gateway Cloud NAT cloud-nat-us-central1-on-prem telah dibuat.

Buat tunnel VPN

  1. Di Cloud Shell, di jaringan vertex-networking-vpc, buat tunnel VPN bernama vertex-networking-vpc-tunnel0:

    gcloud compute vpn-tunnels create vertex-networking-vpc-tunnel0 \
      --peer-gcp-gateway onprem-vpn-gw1 \
      --region us-central1 \
      --ike-version 2 \
      --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
      --router vertex-networking-vpc-router1 \
      --vpn-gateway vertex-networking-vpn-gw1 \
      --interface 0
    
  2. Di jaringan vertex-networking-vpc, buat tunnel VPN bernama vertex-networking-vpc-tunnel1:

    gcloud compute vpn-tunnels create vertex-networking-vpc-tunnel1 \
      --peer-gcp-gateway onprem-vpn-gw1 \
      --region us-central1 \
      --ike-version 2 \
      --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
      --router vertex-networking-vpc-router1 \
      --vpn-gateway vertex-networking-vpn-gw1 \
      --interface 1
    
  3. Di jaringan onprem-vpc, buat tunnel VPN bernama onprem-vpc-tunnel0:

    gcloud compute vpn-tunnels create onprem-vpc-tunnel0 \
      --peer-gcp-gateway vertex-networking-vpn-gw1 \
      --region us-central1\
      --ike-version 2 \
      --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
      --router onprem-vpc-router1 \
      --vpn-gateway onprem-vpn-gw1 \
      --interface 0
    
  4. Di jaringan onprem-vpc, buat tunnel VPN bernama onprem-vpc-tunnel1:

    gcloud compute vpn-tunnels create onprem-vpc-tunnel1 \
      --peer-gcp-gateway vertex-networking-vpn-gw1 \
      --region us-central1\
      --ike-version 2 \
      --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
      --router onprem-vpc-router1 \
      --vpn-gateway onprem-vpn-gw1 \
      --interface 1
    
  5. Di Konsol Google Cloud, buka halaman VPN.

    Buka VPN

  6. Dalam daftar tunnel VPN, pastikan empat tunnel VPN telah dibuat.

Membuat sesi BGP

Cloud Router menggunakan Border Gateway Protocol (BGP) untuk bertukar rute antara jaringan VPC (dalam hal ini, vertex-networking-vpc) dan jaringan lokal (diwakili oleh onprem-vpc). Di Cloud Router, Anda mengonfigurasi antarmuka dan peer BGP untuk router lokal. Antarmuka dan konfigurasi peer BGP bersama-sama membentuk sesi BGP. Di bagian ini, Anda akan membuat dua sesi BGP untuk vertex-networking-vpc dan dua untuk onprem-vpc.

Setelah Anda mengonfigurasi antarmuka dan peer BGP di antara router, antarmuka dan peer BGP tersebut akan otomatis mulai bertukar rute.

Membuat sesi BGP untuk vertex-networking-vpc

  1. Di Cloud Shell, di jaringan vertex-networking-vpc, buat antarmuka BGP untuk vertex-networking-vpc-tunnel0:

    gcloud compute routers add-interface vertex-networking-vpc-router1 \
      --interface-name if-tunnel0-to-onprem \
      --ip-address 169.254.0.1 \
      --mask-length 30 \
      --vpn-tunnel vertex-networking-vpc-tunnel0 \
      --region us-central1
    
  2. Di jaringan vertex-networking-vpc, buat peer BGP untuk bgp-onprem-tunnel0:

    gcloud compute routers add-bgp-peer vertex-networking-vpc-router1 \
      --peer-name bgp-onprem-tunnel0 \
      --interface if-tunnel0-to-onprem \
      --peer-ip-address 169.254.0.2 \
      --peer-asn 65002 \
      --region us-central1
    
  3. Di jaringan vertex-networking-vpc, buat antarmuka BGP untuk vertex-networking-vpc-tunnel1:

    gcloud compute routers add-interface vertex-networking-vpc-router1 \
      --interface-name if-tunnel1-to-onprem \
      --ip-address 169.254.1.1 \
      --mask-length 30 \
      --vpn-tunnel vertex-networking-vpc-tunnel1 \
      --region us-central1
    
  4. Di jaringan vertex-networking-vpc, buat peer BGP untuk bgp-onprem-tunnel1:

    gcloud compute routers add-bgp-peer vertex-networking-vpc-router1 \
      --peer-name bgp-onprem-tunnel1 \
      --interface if-tunnel1-to-onprem \
      --peer-ip-address 169.254.1.2 \
      --peer-asn 65002 \
      --region us-central1
    

Membuat sesi BGP untuk onprem-vpc

  1. Di jaringan onprem-vpc, buat antarmuka BGP untuk onprem-vpc-tunnel0:

    gcloud compute routers add-interface onprem-vpc-router1 \
      --interface-name if-tunnel0-to-vertex-networking-vpc \
      --ip-address 169.254.0.2 \
      --mask-length 30 \
      --vpn-tunnel onprem-vpc-tunnel0 \
      --region us-central1
    
  2. Di jaringan onprem-vpc, buat peer BGP untuk bgp-vertex-networking-vpc-tunnel0:

    gcloud compute routers add-bgp-peer onprem-vpc-router1 \
      --peer-name bgp-vertex-networking-vpc-tunnel0 \
      --interface if-tunnel0-to-vertex-networking-vpc \
      --peer-ip-address 169.254.0.1 \
      --peer-asn 65001 \
      --region us-central1
    
  3. Di jaringan onprem-vpc, buat antarmuka BGP untuk onprem-vpc-tunnel1:

    gcloud compute routers add-interface   onprem-vpc-router1  \
      --interface-name if-tunnel1-to-vertex-networking-vpc \
      --ip-address 169.254.1.2 \
      --mask-length 30 \
      --vpn-tunnel onprem-vpc-tunnel1 \
      --region us-central1
    
  4. Di jaringan onprem-vpc, buat peer BGP untuk bgp-vertex-networking-vpc-tunnel1:

    gcloud compute routers add-bgp-peer onprem-vpc-router1 \
      --peer-name bgp-vertex-networking-vpc-tunnel1 \
      --interface if-tunnel1-to-vertex-networking-vpc \
      --peer-ip-address 169.254.1.1 \
      --peer-asn 65001 \
      --region us-central1
    

Memvalidasi pembuatan sesi BGP

  1. Di Konsol Google Cloud, buka halaman VPN.

    Buka VPN

  2. Dalam daftar tunnel VPN, pastikan nilai di kolom BGP session status untuk setiap tunnel telah berubah dari Configure BGP session menjadi BGP established. Anda mungkin perlu memuat ulang tab browser konsol Google Cloud untuk melihat nilai baru.

Memvalidasi rute yang dipelajari vertex-networking-vpc

  1. Di konsol Google Cloud, buka halaman jaringan VPC.

    Buka jaringan VPC

  2. Dalam daftar jaringan VPC, klik vertex-networking-vpc.

  3. Klik tab Routes.

  4. Pilih us-central1 (Iowa) dalam daftar Region, lalu klik Lihat.

  5. Di kolom Destination IP range, pastikan rentang IP subnet onprem-vpc-subnet1 (172.16.10.0/29) muncul dua kali.

Memvalidasi rute yang dipelajari onprem-vpc

  1. Klik panah kembali untuk kembali ke halaman Jaringan VPC.

  2. Dalam daftar jaringan VPC, klik onprem-vpc.

  3. Klik tab Routes.

  4. Pilih us-central1 (Iowa) dalam daftar Region, lalu klik Lihat.

  5. Di kolom Rentang IP tujuan, pastikan rentang IP subnet workbench-subnet (10.0.1.0/28) muncul dua kali.

Membuat endpoint konsumen Private Service Connect

  1. Di Cloud Shell, reservasi alamat IP endpoint konsumen yang akan digunakan untuk mengakses Google API:

    gcloud compute addresses create psc-googleapi-ip \
      --global \
      --purpose=PRIVATE_SERVICE_CONNECT \
      --addresses=192.168.0.1 \
      --network=vertex-networking-vpc
    
  2. Buat aturan penerusan untuk menghubungkan endpoint ke Google API dan layanan Google.

    gcloud compute forwarding-rules create pscvertex \
     --global \
     --network=vertex-networking-vpc\
     --address=psc-googleapi-ip \
     --target-google-apis-bundle=all-apis
    

Membuat rute kustom yang diiklankan untuk vertex-networking-vpc

Di bagian ini, Anda akan mengonfigurasi mode iklan kustom Cloud Router untuk Mengiklankan rentang IP kustom untuk vertex-networking-vpc-router1 (Cloud Router untuk vertex-networking-vpc) guna mengiklankan alamat IP endpoint PSC ke jaringan onprem-vpc.

  1. Di konsol Google Cloud, buka halaman Cloud Function.

    Buka Cloud Router

  2. Dalam daftar Cloud Router, klik vertex-networking-vpc-router1.

  3. Di halaman detail Router, klik Edit.

  4. Di bagian Advertised routes untuk Routes, pilih Create custom routes.

  5. Centang kotak Beriklan semua subnet yang terlihat oleh Cloud Router untuk terus mengiklankan subnet yang tersedia untuk Cloud Router. Mengaktifkan opsi ini akan meniru perilaku Cloud Router dalam mode iklan default.

  6. Klik Tambahkan rute kustom.

  7. Untuk Sumber, pilih Rentang IP kustom.

  8. Untuk Rentang alamat IP, masukkan alamat IP berikut:

    192.168.0.1
    
  9. Untuk Deskripsi, masukkan teks berikut:

    Custom route to advertise Private Service Connect endpoint IP address
    
  10. Klik Selesai, lalu klik Simpan.

Memvalidasi bahwa onprem-vpc telah mempelajari rute yang diiklankan

  1. Di Konsol Google Cloud, buka halaman Routes.

    Buka Rute

  2. Pada tab Effective routes, lakukan hal berikut:

    1. Untuk Network, pilih onprem-vpc.
    2. Untuk Region, pilih us-central1 (Iowa).
    3. Klik View.
    4. Dalam daftar rute, pastikan ada entri yang namanya diawali dengan onprem-vpc-router1-bgp-vertex-networking-vpc-tunnel0 dan onprem-vpc-router1-bgp-vfertex-networking-vpc-tunnel1, dan keduanya memiliki Rentang IP tujuan 192.168.0.1.

      Jika entri ini tidak langsung muncul, tunggu beberapa menit, lalu muat ulang tab browser Google Cloud konsol.

Membuat VM di onprem-vpc yang menggunakan akun layanan yang dikelola pengguna

Di bagian ini, Anda akan membuat instance VM yang menyimulasikan aplikasi klien on-premise yang mengirim permintaan prediksi batch. Dengan mengikuti praktik terbaik Compute Engine dan IAM, VM ini menggunakan akun layanan yang dikelola pengguna, bukan akun layanan default Compute Engine.

Membuat akun layanan yang dikelola pengguna

  1. Di Cloud Shell, jalankan perintah berikut, ganti PROJECT_ID dengan project ID Anda:

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  2. Buat akun layanan bernama onprem-user-managed-sa:

    gcloud iam service-accounts create onprem-user-managed-sa \
      --display-name="onprem-user-managed-sa-onprem-client"
    
  3. Tetapkan peran Vertex AI User (roles/aiplatform.user) ke akun layanan:

    gcloud projects add-iam-policy-binding $projectid \
      --member="serviceAccount:onprem-user-managed-sa@$projectid.iam.gserviceaccount.com" \
      --role="roles/aiplatform.user"
    
  4. Tetapkan peran Storage Object Viewer (storage.objectViewer) ke akun layanan:

    gcloud projects add-iam-policy-binding $projectid \
      --member="serviceAccount:onprem-user-managed-sa@$projectid.iam.gserviceaccount.com" \
      --role="roles/storage.objectViewer"
    

Membuat instance VM on-prem-client

Instance VM yang Anda buat tidak memiliki alamat IP eksternal dan tidak mengizinkan akses langsung melalui internet. Untuk mengaktifkan akses administratif ke VM, Anda menggunakan penerusan TCP Identity-Aware Proxy (IAP).

  1. Di Cloud Shell, buat instance VM on-prem-client:

    gcloud compute instances create on-prem-client \
      --zone=us-central1-a \
      --image-family=debian-11 \
      --image-project=debian-cloud \
      --subnet=onprem-vpc-subnet1 \
      --scopes=https://www.googleapis.com/auth/cloud-platform \
      --no-address \
      --shielded-secure-boot \
      --service-account=onprem-user-managed-sa@$projectid.iam.gserviceaccount.com \
      --metadata startup-script="#! /bin/bash
        sudo apt-get update
        sudo apt-get install tcpdump dnsutils -y"
    
    
  2. Buat aturan firewall untuk mengizinkan IAP terhubung ke instance VM Anda:

    gcloud compute firewall-rules create ssh-iap-on-prem-vpc \
      --network onprem-vpc \
      --allow tcp:22 \
      --source-ranges=35.235.240.0/20
    

Memvalidasi akses publik ke Vertex AI API

Di bagian ini, Anda menggunakan utilitas dig untuk melakukan pencarian DNS dari instance VM on-prem-client ke Vertex AI API (us-central1-aiplatform.googleapis.com). Output dig menunjukkan bahwa akses default hanya menggunakan VIP publik untuk mengakses Vertex AI API.

Di bagian berikutnya, Anda akan mengonfigurasi akses pribadi ke Vertex AI API.

  1. Di Cloud Shell, login ke instance VM on-prem-client menggunakan IAP:

    gcloud compute ssh on-prem-client \
      --zone=us-central1-a \
      --tunnel-through-iap
    
  2. Di instance VM on-prem-client, jalankan perintah dig:

    dig us-central1-aiplatform.googleapis.com
    

    Anda akan melihat output dig yang mirip dengan berikut ini, dengan alamat IP di bagian jawaban adalah alamat IP publik:

    ; <<>> DiG 9.16.44-Debian <<>> us-central1.aiplatfom.googleapis.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42506
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 16, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 512
    ;; QUESTION SECTION:
    ;us-central1.aiplatfom.googleapis.com. IN A
    
    ;; ANSWER SECTION:
    us-central1.aiplatfom.googleapis.com. 300 IN A  173.194.192.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.250.152.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  172.217.219.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  209.85.146.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  209.85.147.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.250.125.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.250.136.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.250.148.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  209.85.200.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  209.85.234.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.251.171.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  108.177.112.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.250.128.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.251.6.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  172.217.212.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  74.125.124.95
    
    ;; Query time: 8 msec
    ;; SERVER: 169.254.169.254#53(169.254.169.254)
    ;; WHEN: Wed Sep 27 04:10:16 UTC 2023
    ;; MSG SIZE  rcvd: 321
    

Mengonfigurasi dan memvalidasi akses pribadi ke Vertex AI API

Di bagian ini, Anda akan mengonfigurasi akses pribadi ke Vertex AI API sehingga saat Anda mengirim permintaan prediksi batch, permintaan tersebut akan dialihkan ke endpoint PSC Anda. Endpoint PSC kemudian meneruskan permintaan pribadi ini ke REST API prediksi batch Vertex AI.

Update file /etc/hosts agar mengarah ke endpoint PSC

Pada langkah ini, Anda akan menambahkan baris ke file /etc/hosts yang menyebabkan permintaan yang dikirim ke endpoint layanan publik (us-central1-aiplatform.googleapis.com) diarahkan ke endpoint PSC (192.168.0.1).

  1. Di instance VM on-prem-client, gunakan editor teks seperti vim atau nano untuk membuka file /etc/hosts:

    sudo vim /etc/hosts
    
  2. Tambahkan baris berikut ke file:

    192.168.0.1 us-central1-aiplatform.googleapis.com
    

    Baris ini menetapkan alamat IP endpoint PSC (192.168.0.1) ke nama domain yang sepenuhnya memenuhi syarat untuk Vertex AI Google API (us-central1-aiplatform.googleapis.com).

    File yang diedit akan terlihat seperti ini:

    127.0.0.1       localhost
    ::1             localhost ip6-localhost ip6-loopback
    ff02::1         ip6-allnodes
    ff02::2         ip6-allrouters
    
    192.168.0.1 us-central1-aiplatform.googleapis.com  # Added by you
    172.16.10.6 on-prem-client.us-central1-a.c.vertex-genai-400103.internal on-prem-client  # Added by Google
    169.254.169.254 metadata.google.internal  # Added by Google
    
  3. Simpan file sebagai berikut:

    • Jika Anda menggunakan vim, tekan tombol Esc, lalu ketik :wq untuk menyimpan file dan keluar.
    • Jika Anda menggunakan nano, ketik Control+O dan tekan Enter untuk menyimpan file, lalu ketik Control+X untuk keluar.
  4. Kirim ping ke endpoint Vertex AI sebagai berikut:

    ping us-central1-aiplatform.googleapis.com
    

    Perintah ping akan menampilkan output berikut. 192.168.0.1 adalah alamat IP endpoint PSC:

    PING us-central1-aiplatform.googleapis.com (192.168.0.1) 56(84) bytes of data.
    
  5. Ketik Control+C untuk keluar dari ping.

  6. Ketik exit untuk keluar dari instance VM on-prem-client.

Membuat akun layanan yang dikelola pengguna untuk Vertex AI Workbench di vertex-networking-vpc

Di bagian ini, untuk mengontrol akses ke instance Vertex AI Workbench, Anda akan membuat akun layanan yang dikelola pengguna, lalu menetapkan peran IAM ke akun layanan. Saat membuat instance, Anda menentukan akun layanan.

  1. Di Cloud Shell, jalankan perintah berikut, ganti PROJECT_ID dengan project ID Anda:

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  2. Buat akun layanan bernama workbench-sa:

    gcloud iam service-accounts create workbench-sa \
      --display-name="workbench-sa"
    
  3. Tetapkan peran IAM Vertex AI User (roles/aiplatform.user) ke akun layanan:

    gcloud projects add-iam-policy-binding $projectid \
      --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \
      --role="roles/aiplatform.user"
    
  4. Tetapkan peran IAM BigQuery User (roles/bigquery.user) ke akun layanan:

    gcloud projects add-iam-policy-binding $projectid \
      --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \
      --role="roles/bigquery.user"
    
  5. Tetapkan peran IAM Storage Admin (roles/storage.admin) ke akun layanan:

    gcloud projects add-iam-policy-binding $projectid \
      --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \
      --role="roles/storage.admin"
    
  6. Tetapkan peran IAM Logs Viewer (roles/logging.viewer) ke akun layanan:

    gcloud projects add-iam-policy-binding $projectid \
      --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \
      --role="roles/logging.viewer"
    

Membuat instance Vertex AI Workbench

  1. Di Cloud Shell, buat instance Vertex AI Workbench, dengan menentukan akun layanan workbench-sa:

    gcloud workbench instances create workbench-tutorial \
      --vm-image-project=deeplearning-platform-release \
      --vm-image-family=common-cpu-notebooks \
      --machine-type=n1-standard-4 \
      --location=us-central1-a \
      --subnet-region=us-central1 \
      --shielded-secure-boot=True \
      --subnet=workbench-subnet \
      --disable-public-ip \
      --service-account-email=workbench-sa@$projectid.iam.gserviceaccount.com
    
  2. Di konsol Google Cloud, buka tab Instances di halaman Vertex AI Workbench.

    Buka Vertex AI Workbench

  3. Di samping nama instance Vertex AI Workbench (workbench-tutorial), klik Open JupyterLab.

    Instance Vertex AI Workbench akan membuka JupyterLab.

  4. Pilih File > New > Notebook.

  5. Dari menu Select Kernel, pilih Python 3 (Local), lalu klik Select.

  6. Saat notebook baru terbuka, ada sel kode default tempat Anda dapat memasukkan kode. Tampilannya seperti [ ]: diikuti dengan kolom teks. Kolom teks adalah tempat Anda menempelkan kode.

    Untuk menginstal Vertex AI SDK untuk Python, tempel kode berikut ke dalam sel dan klik  Run the selected cells and advance:

    !pip3 install --upgrade google-cloud-bigquery scikit-learn==1.2
    
  7. Pada langkah ini dan setiap langkah berikutnya, tambahkan sel kode baru (jika diperlukan) dengan mengklik Insert a cell below, tempelkan kode ke dalam sel, lalu klik  Run the selected cells and advance.

    Untuk menggunakan paket yang baru diinstal di runtime Jupyter ini, Anda perlu memulai ulang runtime:

    # Restart kernel after installs so that your environment can access the new packages
    import IPython
    
    app = IPython.Application.instance()
    app.kernel.do_shutdown(True)
    
  8. Tetapkan variabel lingkungan berikut di notebook JupyterLab, dengan mengganti PROJECT_ID dengan project ID Anda.

    # set project ID and location
    PROJECT_ID = "PROJECT_ID"
    REGION = "us-central1"
    
  9. Buat bucket Cloud Storage untuk melakukan staging tugas pelatihan:

    BUCKET_NAME = f"{PROJECT_ID}-ml-staging"
    BUCKET_URI = f"gs://{BUCKET_NAME}"
    !gcloud storage buckets create {BUCKET_URI} --location={REGION} --project={PROJECT_ID}
    

Menyiapkan data pelatihan

Di bagian ini, Anda akan menyiapkan data yang akan digunakan untuk melatih model prediksi.

  1. Di notebook JupyterLab, buat klien BigQuery:

    from google.cloud import bigquery
    bq_client = bigquery.Client(project=PROJECT_ID)
    
  2. Ambil data dari set data publik ml_datasets BigQuery:

    DATA_SOURCE = "bigquery-public-data.ml_datasets.census_adult_income"
    # Define the SQL query to fetch the dataset
    query = f"""
    SELECT * FROM `{DATA_SOURCE}` LIMIT 20000
    """
    # Download the dataset to a dataframe
    df = bq_client.query(query).to_dataframe()
    df.head()
    
  3. Gunakan library sklearn untuk membagi data untuk pelatihan dan pengujian:

    from sklearn.model_selection import train_test_split
    # Split the dataset
    X_train, X_test = train_test_split(df, test_size=0.3, random_state=43)
    # Print the shapes of train and test sets
    print(X_train.shape, X_test.shape)
    
  4. Ekspor frame data pelatihan dan pengujian ke file CSV di bucket staging:

    X_train.to_csv(f"{BUCKET_URI}/train.csv",index=False, quoting=1, quotechar='"')
    X_test[[i for i in X_test.columns if i != "income_bracket"]].iloc[:20].to_csv(f"{BUCKET_URI}/test.csv",index=False,quoting=1, quotechar='"')
    

Menyiapkan aplikasi pelatihan

Di bagian ini, Anda akan membuat dan mem-build aplikasi pelatihan Python dan menyimpannya ke bucket staging.

  1. Di notebook JupyterLab, buat folder baru untuk file aplikasi pelatihan:

    !mkdir -p training_package/trainer
    

    Sekarang Anda akan melihat folder bernama training_package di menu navigasi JupyterLab.

  2. Tentukan fitur, target, label, dan langkah-langkah untuk melatih dan mengekspor model ke file:

    %%writefile training_package/trainer/task.py
    from sklearn.ensemble import RandomForestClassifier
    from sklearn.feature_selection import SelectKBest
    from sklearn.pipeline import FeatureUnion, Pipeline
    from sklearn.preprocessing import LabelBinarizer
    import pandas as pd
    import argparse
    import joblib
    import os
    
    TARGET = "income_bracket"
    # Define the feature columns that you use from the dataset
    COLUMNS = (
      "age",
      "workclass",
      "functional_weight",
      "education",
      "education_num",
      "marital_status",
      "occupation",
      "relationship",
      "race",
      "sex",
      "capital_gain",
      "capital_loss",
      "hours_per_week",
      "native_country",
    )
    
    # Categorical columns are columns that have string values and
    # need to be turned into a numerical value to be used for training
    CATEGORICAL_COLUMNS = (
      "workclass",
      "education",
      "marital_status",
      "occupation",
      "relationship",
      "race",
      "sex",
      "native_country",
    )
    
    # load the arguments
    parser = argparse.ArgumentParser()
    parser.add_argument('--training-dir', dest='training_dir', default=os.getenv('AIP_MODEL_DIR'), type=str,help='get the staging directory')
    args = parser.parse_args()
    
    # Load the training data
    X_train = pd.read_csv(os.path.join(args.training_dir,"train.csv"))
    # Remove the column we are trying to predict ('income-level') from our features list
    # Convert the Dataframe to a lists of lists
    train_features = X_train.drop(TARGET, axis=1).to_numpy().tolist()
    # Create our training labels list, convert the Dataframe to a lists of lists
    train_labels = X_train[TARGET].to_numpy().tolist()
    
    # Since the census data set has categorical features, we need to convert
    # them to numerical values. We'll use a list of pipelines to convert each
    # categorical column and then use FeatureUnion to combine them before calling
    # the RandomForestClassifier.
    categorical_pipelines = []
    
    # Each categorical column needs to be extracted individually and converted to a numerical value.
    # To do this, each categorical column will use a pipeline that extracts one feature column via
    # SelectKBest(k=1) and a LabelBinarizer() to convert the categorical value to a numerical one.
    # A scores array (created below) will select and extract the feature column. The scores array is
    # created by iterating over the COLUMNS and checking if it is a CATEGORICAL_COLUMN.
    for i, col in enumerate(COLUMNS):
       if col in CATEGORICAL_COLUMNS:
          # Create a scores array to get the individual categorical column.
          # Example:
          #  data = [39, 'State-gov', 77516, 'Bachelors', 13, 'Never-married', 'Adm-clerical',
          #         'Not-in-family', 'White', 'Male', 2174, 0, 40, 'United-States']
          #  scores = [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
          #
          # Returns: [['Sate-gov']]
          scores = []
          # Build the scores array
          for j in range(len(COLUMNS)):
             if i == j:  # This column is the categorical column we want to extract.
                scores.append(1)  # Set to 1 to select this column
             else:  # Every other column should be ignored.
                scores.append(0)
          skb = SelectKBest(k=1)
          skb.scores_ = scores
          # Convert the categorical column to a numerical value
          lbn = LabelBinarizer()
          r = skb.transform(train_features)
          lbn.fit(r)
          # Create the pipeline to extract the categorical feature
          categorical_pipelines.append(
             (
                "categorical-{}".format(i),
                Pipeline([("SKB-{}".format(i), skb), ("LBN-{}".format(i), lbn)]),
             )
          )
    
    # Create pipeline to extract the numerical features
    skb = SelectKBest(k=6)
    # From COLUMNS use the features that are numerical
    skb.scores_ = [1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0]
    categorical_pipelines.append(("numerical", skb))
    
    # Combine all the features using FeatureUnion
    preprocess = FeatureUnion(categorical_pipelines)
    
    # Create the classifier
    classifier = RandomForestClassifier()
    
    # Transform the features and fit them to the classifier
    classifier.fit(preprocess.transform(train_features), train_labels)
    
    # Create the overall model as a single pipeline
    pipeline = Pipeline([("union", preprocess), ("classifier", classifier)])
    
    # Save the model pipeline
    joblib.dump(pipeline, os.path.join(args.training_dir,"model.joblib"))
    
  3. Buat file __init__.py di setiap subdirektori untuk menjadikannya sebuah paket:

    !touch training_package/__init__.py
    !touch training_package/trainer/__init__.py
    
  4. Buat skrip penyiapan paket Python:

    %%writefile training_package/setup.py
    from setuptools import find_packages
    from setuptools import setup
    
    setup(
       name='trainer',
       version='0.1',
       packages=find_packages(),
       include_package_data=True,
       description='Training application package for census income classification.'
    )
    
  5. Gunakan perintah sdist untuk membuat distribusi sumber aplikasi pelatihan:

    !cd training_package && python setup.py sdist --formats=gztar
    
  6. Salin paket Python ke bucket staging:

    !gcloud storage cp training_package/dist/trainer-0.1.tar.gz $BUCKET_URI/
    
  7. Pastikan bucket staging berisi tiga file:

    !gcloud storage ls $BUCKET_URI
    

    Outputnya akan berupa:

    gs://$BUCKET_NAME/test.csv
    gs://$BUCKET_NAME/train.csv
    gs://$BUCKET_NAME/trainer-0.1.tar.gz
    

Melatih model

Di bagian ini, Anda akan melatih model dengan membuat dan menjalankan tugas pelatihan kustom.

  1. Di notebook JupyterLab, jalankan perintah berikut untuk membuat tugas pelatihan kustom:

    !gcloud ai custom-jobs create --display-name=income-classification-training-job \
       --project=$PROJECT_ID \
       --worker-pool-spec=replica-count=1,machine-type='e2-highmem-2',executor-image-uri='us-docker.pkg.dev/vertex-ai/training/sklearn-cpu.1-0:latest',python-module=trainer.task \
       --python-package-uris=$BUCKET_URI/trainer-0.1.tar.gz \
       --args="--training-dir","/gcs/$BUCKET_NAME" \
       --region=$REGION
    

    Output-nya akan terlihat seperti berikut. Angka pertama di setiap jalur tugas kustom adalah nomor project (PROJECT_NUMBER). Angka kedua adalah ID tugas kustom (CUSTOM_JOB_ID). Catat angka ini agar Anda dapat menggunakannya di langkah berikutnya.

    Using endpoint [https://us-central1-aiplatform.googleapis.com/]
    CustomJob [projects/721032480027/locations/us-central1/customJobs/1100328496195960832] is submitted successfully.
    
    Your job is still active. You may view the status of your job with the command
    
    $ gcloud ai custom-jobs describe projects/721032480027/locations/us-central1/customJobs/1100328496195960832
    
    or continue streaming the logs with the command
    
    $ gcloud ai custom-jobs stream-logs projects/721032480027/locations/us-central1/customJobs/1100328496195960832
    
  2. Jalankan tugas pelatihan kustom dan tampilkan progres dengan melakukan streaming log dari tugas saat berjalan:

    !gcloud ai custom-jobs stream-logs projects/PROJECT_NUMBER/locations/us-central1/customJobs/CUSTOM_JOB_ID
    

    Ganti nilai berikut:

    • PROJECT_NUMBER: nomor project dari output perintah sebelumnya
    • CUSTOM_JOB_ID: ID tugas kustom dari output perintah sebelumnya

    Tugas pelatihan kustom Anda sekarang berjalan. Proses ini memerlukan waktu sekitar 10 menit.

    Setelah tugas selesai, Anda dapat mengimpor model dari bucket staging ke Vertex AI Model Registry.

Mengimpor model

Tugas pelatihan kustom Anda mengupload model terlatih ke bucket staging. Setelah tugas selesai, Anda dapat mengimpor model dari bucket ke Vertex AI Model Registry.

  1. Di notebook JupyterLab, impor model dengan menjalankan perintah berikut:

    !gcloud ai models upload --container-image-uri="us-docker.pkg.dev/vertex-ai/prediction/sklearn-cpu.1-2:latest" \
       --display-name=income-classifier-model \
       --artifact-uri=$BUCKET_URI \
       --project=$PROJECT_ID \
       --region=$REGION
    
  2. Cantumkan model Vertex AI dalam project sebagai berikut:

    !gcloud ai models list --region=us-central1
    

    Output akan terlihat seperti berikut. Jika dua model atau lebih tercantum, model pertama dalam daftar adalah model yang terakhir Anda impor.

    Catat nilai di kolom MODEL_ID. Anda memerlukannya untuk membuat permintaan prediksi batch.

    Using endpoint [https://us-central1-aiplatform.googleapis.com/]
    MODEL_ID             DISPLAY_NAME
    1871528219660779520  income-classifier-model
    

    Atau, Anda dapat mencantumkan model dalam project sebagai berikut:

    Di konsol Google Cloud, di bagian Vertex AI, buka halaman Vertex AI Model Registry.

    Buka halaman Vertex AI Model Registry

    Untuk melihat ID model dan detail lainnya untuk model, klik nama model, lalu klik tab Version Details.

Mendapatkan prediksi batch dari model

Sekarang Anda dapat meminta prediksi batch dari model. Permintaan prediksi batch dibuat dari instance VM on-prem-client.

Membuat permintaan prediksi batch

Pada langkah ini, Anda menggunakan ssh untuk login ke instance VM on-prem-client. Di instance VM, Anda membuat file teks bernama request.json yang berisi payload untuk permintaan curl sampel yang Anda kirim ke model untuk mendapatkan prediksi batch.

  1. Di Cloud Shell, jalankan perintah berikut, ganti PROJECT_ID dengan project ID Anda:

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  2. Login ke instance VM on-prem-client menggunakan ssh:

    gcloud compute ssh on-prem-client \
      --project=$projectid \
      --zone=us-central1-a
    
  3. Di instance VM on-prem-client, gunakan editor teks seperti vim atau nano untuk membuat file baru bernama request.json yang berisi teks berikut:

    {
      "displayName": "income-classification-batch-job",
      "model": "projects/PROJECT_ID/locations/us-central1/models/MODEL_ID",
      "inputConfig": {
        "instancesFormat": "csv",
        "gcsSource": {
          "uris": ["BUCKET_URI/test.csv"]
        }
      },
      "outputConfig": {
        "predictionsFormat": "jsonl",
        "gcsDestination": {
          "outputUriPrefix": "BUCKET_URI"
        }
      },
      "dedicatedResources": {
        "machineSpec": {
          "machineType": "n1-standard-4",
          "acceleratorCount": "0"
        },
        "startingReplicaCount": 1,
        "maxReplicaCount": 2
      }
    }
    

    Ganti nilai berikut:

    • PROJECT_ID: project ID Anda
    • MODEL_ID: ID model untuk model Anda
    • BUCKET_URI: URI untuk bucket penyimpanan tempat Anda melakukan staging model
  4. Jalankan perintah berikut untuk mengirim permintaan prediksi batch:

    curl -X POST \
       -H "Authorization: Bearer $(gcloud auth print-access-token)" \
       -H "Content-Type: application/json; charset=utf-8" \
       -d @request.json \
       "https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/batchPredictionJobs"
    

    Ganti PROJECT_ID dengan project ID Anda.

    Anda akan melihat baris berikut dalam respons:

    "state": "JOB_STATE_PENDING"
    

    Tugas prediksi batch Anda kini berjalan secara asinkron. Proses ini memerlukan waktu 20 menit untuk dijalankan.

  5. Di Konsol Google Cloud, di bagian Vertex AI, buka halaman Batch Predictions.

    Buka halaman Prediksi batch

    Saat tugas prediksi batch berjalan, statusnya adalah Running. Setelah selesai, statusnya akan berubah menjadi Finished.

  6. Klik nama tugas prediksi batch Anda (income-classification-batch-job), lalu klik link Export location di halaman detail untuk melihat file output untuk tugas batch Anda di Cloud Storage.

    Atau, Anda dapat mengklik ikon Lihat output prediksi di Cloud Storage (di antara kolom Terakhir diperbarui dan menu Tindakan).

  7. Klik link file prediction.results-00000-of-00002 atau prediction.results-00001-of-00002, lalu klik link Authenticated URL untuk membuka file.

    Output tugas prediksi batch Anda akan terlihat mirip dengan contoh ini:

    {"instance": ["27", " Private", "391468", " 11th", "7", " Divorced", " Craft-repair", " Own-child", " White", " Male", "0", "0", "40", " United-States"], "prediction": " <=50K"}
    {"instance": ["47", " Self-emp-not-inc", "192755", " HS-grad", "9", " Married-civ-spouse", " Machine-op-inspct", " Wife", " White", " Female", "0", "0", "20", " United-States"], "prediction": " <=50K"}
    {"instance": ["32", " Self-emp-not-inc", "84119", " HS-grad", "9", " Married-civ-spouse", " Craft-repair", " Husband", " White", " Male", "0", "0", "45", " United-States"], "prediction": " <=50K"}
    {"instance": ["32", " Private", "236543", " 12th", "8", " Divorced", " Protective-serv", " Own-child", " White", " Male", "0", "0", "54", " Mexico"], "prediction": " <=50K"}
    {"instance": ["60", " Private", "160625", " HS-grad", "9", " Married-civ-spouse", " Prof-specialty", " Husband", " White", " Male", "5013", "0", "40", " United-States"], "prediction": " <=50K"}
    {"instance": ["34", " Local-gov", "22641", " HS-grad", "9", " Never-married", " Protective-serv", " Not-in-family", " Amer-Indian-Eskimo", " Male", "0", "0", "40", " United-States"], "prediction": " <=50K"}
    {"instance": ["32", " Private", "178623", " HS-grad", "9", " Never-married", " Other-service", " Not-in-family", " Black", " Female", "0", "0", "40", " ?"], "prediction": " <=50K"}
    {"instance": ["28", " Private", "54243", " HS-grad", "9", " Divorced", " Transport-moving", " Not-in-family", " White", " Male", "0", "0", "60", " United-States"], "prediction": " <=50K"}
    {"instance": ["29", " Local-gov", "214385", " 11th", "7", " Divorced", " Other-service", " Unmarried", " Black", " Female", "0", "0", "20", " United-States"], "prediction": " <=50K"}
    {"instance": ["49", " Self-emp-inc", "213140", " HS-grad", "9", " Married-civ-spouse", " Exec-managerial", " Husband", " White", " Male", "0", "1902", "60", " United-States"], "prediction": " >50K"}
    

Pembersihan

Agar tidak dikenai biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.

Anda dapat menghapus setiap resource di konsol Google Cloud dengan cara berikut:

  1. Hapus tugas prediksi batch sebagai berikut:

    1. Di Konsol Google Cloud, di bagian Vertex AI, buka halaman Batch Predictions.

      Buka halaman Prediksi batch

    2. Di samping nama tugas prediksi batch (income-classification-batch-job), klik menu Tindakan, lalu pilih Hapus tugas prediksi batch.

  2. Hapus model sebagai berikut:

    1. Di konsol Google Cloud, di bagian Vertex AI, buka halaman Model Registry.

      Buka halaman Model Registry

    2. Di samping nama model Anda (income-classifier-model), klik menu Actions, lalu pilih Delete model.

  3. Hapus instance Vertex AI Workbench sebagai berikut:

    1. Di konsol Google Cloud, di bagian Vertex AI, buka tab Instances di halaman Workbench.

      Buka Vertex AI Workbench

    2. Pilih workbench-tutorial instance Vertex AI Workbench dan klik Hapus.

  4. Hapus instance VM Compute Engine sebagai berikut:

    1. Di konsol Google Cloud, buka halaman Compute Engine.

      Buka Compute Engine

    2. Pilih instance VM on-prem-client, lalu klik Hapus.

  5. Hapus tunnel VPN sebagai berikut:

    1. Di Konsol Google Cloud, buka halaman VPN.

      Buka VPN

    2. Di halaman VPN, klik tab Cloud VPN Tunnels.

    3. Dalam daftar tunnel VPN, pilih empat tunnel VPN yang Anda buat dalam tutorial ini, lalu klik Hapus.

  6. Hapus gateway VPN dengan ketersediaan tinggi (HA) sebagai berikut:

    1. Di halaman VPN, klik tab Cloud VPN Gateways.

      Buka Gateway VPN Cloud

    2. Dalam daftar gateway VPN, klik onprem-vpn-gw1.

    3. Di halaman Detail gateway Cloud VPN, klik Hapus VPN Gateway.

    4. Klik panah kembali jika perlu untuk kembali ke daftar gateway VPN, lalu klik vertex-networking-vpn-gw1.

    5. Di halaman Detail gateway Cloud VPN, klik Hapus VPN Gateway.

  7. Hapus Cloud Router sebagai berikut:

    1. Buka halaman Cloud Router.

      Buka Cloud Router

    2. Dalam daftar Cloud Router, pilih empat router yang Anda buat dalam tutorial ini.

    3. Untuk menghapus router, klik Hapus.

      Tindakan ini juga akan menghapus dua gateway Cloud NAT yang terhubung ke Cloud Router.

  8. Hapus aturan penerusan pscvertex untuk jaringan VPC vertex-networking-vpc sebagai berikut:

    1. Buka tab Frontends di halaman Load balancing.

      Buka Frontend

    2. Dalam daftar aturan penerusan, klik pscvertex.

    3. Di halaman Detail aturan penerusan, klik Hapus.

  9. Hapus jaringan VPC sebagai berikut:

    1. Buka halaman Jaringan VPC.

      Buka jaringan VPC

    2. Dalam daftar jaringan VPC, klik onprem-vpc.

    3. Di halaman VPC network details, klik Delete VPC Network.

      Menghapus setiap jaringan juga akan menghapus subjaringan, rute, dan aturan firewall-nya.

    4. Dalam daftar jaringan VPC, klik vertex-networking-vpc.

    5. Di halaman VPC network details, klik Delete VPC Network.

  10. Hapus bucket penyimpanan sebagai berikut:

    1. Di konsol Google Cloud, buka halaman Cloud Storage.

      Buka Cloud Storage

    2. Pilih bucket penyimpanan Anda, lalu klik Hapus.

  11. Hapus akun layanan workbench-sa dan onprem-user-managed-sa sebagai berikut:

    1. Buka halaman Akun layanan.

      Buka halaman Service accounts

    2. Pilih akun layanan onprem-user-managed-sa dan workbench-sa, lalu klik Hapus.

Langkah selanjutnya