Menggunakan Private Service Connect untuk mengakses prediksi batch Vertex AI dari infrastruktur 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 terlatih 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, ilmuwan data, 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 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.
    • Satunya lagi (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.
  • Bangun 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.
  • Konfigurasi iklan rute 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 menggunakan komponen Google Cloud yang dapat ditagih berikut:

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga. Pengguna baru Google Cloud 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. Di konsol Google Cloud, buka halaman Pemilih project.

    Buka pemilih project

  2. Pilih atau buat project Google Cloud.

  3. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  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, lihat Menemukan project ID Anda.
  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. Berikan peran ke Akun Google Anda. Jalankan perintah berikut satu kali untuk setiap peran IAM berikut: 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:EMAIL_ADDRESS" --role=ROLE
    • Ganti PROJECT_ID dengan project ID Anda.
    • Ganti EMAIL_ADDRESS dengan alamat email Anda.
    • Ganti ROLE dengan setiap peran individual.
  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 kedua jaringan VPC ini, Anda membuat Cloud Router dan gateway 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 bahwa jaringan VPC dikonfigurasi dengan benar

  1. Di Konsol Google Cloud, buka tab Network in current project di halaman VPC networks.

    Buka VPC networks

  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 terhubung satu sama lain. Salah satunya berada di jaringan VPC vertex-networking-vpc. Satunya lagi 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 masing-masing 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 Router.

    Buka Cloud Router

  8. Dalam daftar Cloud Routers, 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 tab browser Konsol Google Cloud untuk melihat nilai baru ini.

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

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

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

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

  13. Di halaman Router details, 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 keempat tunnel VPN telah dibuat.

Membuat sesi BGP

Cloud Router menggunakan Border Gateway Protocol (BGP) untuk menukar rute antara jaringan VPC Anda (dalam hal ini, vertex-networking-vpc) dan jaringan lokal Anda (diwakili oleh onprem-vpc). Di Cloud Router, Anda mengonfigurasi antarmuka dan peer BGP untuk router lokal Anda. Antarmuka dan konfigurasi peer BGP secara 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 antara router, keduanya akan otomatis mulai bertukar rute.

Menetapkan sesi BGP untuk vertex-networking-vpc

  1. Di Cloud Shell, pada jaringan vertex-networking-vpc, buat antarmuka BII 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. Pada 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. Pada 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
    

Menetapkan 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. Pada 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. Pada 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 status sesi BGP untuk setiap tunnel telah berubah dari Konfigurasi sesi BGP menjadi BGP yang ditetapkan. Anda mungkin perlu memuat ulang tab browser Konsol Google Cloud untuk melihat nilai baru.

Validasi rute yang dipelajari vertex-networking-vpc

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

    Buka VPC networks

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

  3. Klik tab Routes.

  4. Pilih us-central1 (Iowa) di daftar Region lalu klik View.

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

Validasi rute yang dipelajari onprem-vpc

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

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

  3. Klik tab Routes.

  4. Pilih us-central1 (Iowa) di daftar Region lalu klik View.

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

Membuat endpoint konsumen Private Service Connect

  1. Di Cloud Shell, cadangkan 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
    

Buat iklan rute kustom untuk vertex-networking-vpc

Di bagian ini, Anda akan membuat iklan rute 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 Router.

    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. Pilih kotak centang 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 Add a custom route.

  7. Untuk Sumber, pilih Rentang IP kustom.

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

    192.168.0.1
    
  9. Untuk Description, masukkan teks berikut:

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

Validasi 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, serta keduanya memiliki Rentang IP tujuan 192.168.0.1.

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

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

Di bagian ini, Anda akan membuat instance VM yang menyimulasikan aplikasi klien lokal 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, dengan mengganti 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, gunakan 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=http://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 akan 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. Dalam 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) dialihkan ke endpoint PSC (192.168.0.1).

  1. Dalam 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. Ping 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 PC:

    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.

Buat 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 perlu 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, dengan mengganti 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, akan ada sel kode default tempat Anda dapat memasukkan kode. Tampilannya terlihat seperti [ ]: diikuti dengan kolom teks. Kolom teks adalah tempat Anda menempelkan kode.

    Untuk menginstal Vertex AI SDK untuk Python, tempelkan kode berikut ke dalam sel, lalu klik  Jalankan sel yang dipilih dan lanjutkan:

    !pip3 install --upgrade google-cloud-bigquery scikit-learn==1.2
    
  7. Pada langkah ini dan setiap langkah berikutnya, tambahkan sel kode baru (jika perlu) dengan mengklik Insert a cell below, tempel kode ke dalam sel, lalu klik  Jalankan sel yang dipilih dan lanjutkan.

    Untuk menggunakan paket yang baru diinstal dalam 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 Anda, ganti 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}"
    !gsutil mb -l {REGION} -p {PROJECT_ID} {BUCKET_URI}
    

Menyiapkan data pelatihan

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

  1. Di notebook JupyterLab Anda, 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 memisahkan data 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 membangun aplikasi pelatihan Python, serta menyimpannya ke bucket staging.

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

    !mkdir -p training_package/trainer
    

    Anda sekarang 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:

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

    !gsutil ls $BUCKET_URI
    

    Output harus 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 Anda, jalankan perintah berikut untuk membuat tugas pelatihan khusus:

    !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 akan terlihat seperti berikut. Angka pertama di setiap jalur tugas kustom adalah nomor project (PROJECT_NUMBER). Nomor kedua adalah ID tugas kustom (CUSTOM_JOB_ID). Catat angka ini agar Anda dapat menggunakannya di langkah berikutnya.

    Using endpoint [http://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 tugas tersebut 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 sedang 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 Anda, 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. Buat daftar model Vertex AI dalam project sebagai berikut:

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

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

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

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

    Atau, Anda dapat mencantumkan model dalam project Anda 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. Dalam instance VM, Anda membuat file teks bernama request.json yang berisi payload untuk contoh permintaan curl yang Anda kirim ke model guna mendapatkan prediksi batch.

  1. Di Cloud Shell, jalankan perintah berikut, dengan mengganti 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. Dalam 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 \
       "http://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 sekarang berjalan secara asinkron. Perlu waktu sekitar 20 menit untuk menjalankannya.

  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 guna melihat file output untuk tugas batch Anda di Cloud Storage.

    Atau, Anda dapat mengklik ikon Lihat output prediksi di Cloud Storage (di antara kolom Last updated dan menu Actions).

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

    Output tugas prediksi batch Anda akan terlihat seperti 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 akun Google Cloud Anda tidak dikenai biaya untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.

Anda dapat menghapus resource individual di konsol Google Cloud sebagai 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 Tindakan, lalu pilih Hapus 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 instance Vertex AI Workbench workbench-tutorial, lalu klik Delete.

  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 Delete.

  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 Delete.

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

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

      Buka Gateway VPN Cloud

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

    3. Di halaman Cloud VPN gateway details, klik Delete VPN Gateway.

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

    5. Di halaman Cloud VPN gateway details, klik Delete 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. Di daftar aturan penerusan, klik pscvertex.

    3. Di halaman Detail aturan penerusan, klik Hapus.

  9. Hapus jaringan VPC sebagai berikut:

    1. Buka halaman VPC networks.

      Buka VPC networks

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

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

      Jika setiap jaringan dihapus, subnetwork, rute, dan aturan firewall-nya juga akan dihapus.

    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 Service accounts.

      Buka halaman Service accounts

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

Langkah selanjutnya