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


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

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

Tutorial ini ditujukan untuk administrator jaringan perusahaan, data ilmuwan, dan peneliti yang sudah terbiasa dengan Vertex AI, Virtual Private Cloud (VPC), konsol Google Cloud, dan Cloud Shell. Pemahaman tentang Vertex AI Workbench adalah 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 pada contoh diagram:
    • Satu (vertex-networking-vpc) ditujukan untuk mengakses Google API untuk batch prediksi.
    • Lainnya (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 diteruskan permintaan pribadi ke REST API prediksi batch Vertex AI.
  • Mengonfigurasi 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 mengirimkan batch permintaan prediksi 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 ID project Google Cloud dan simpan project ID ke 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 informasi selengkapnya, lihat Temukan project ID Anda.
  6. Jika Anda bukan pemilik proyek, mintalah pemilik proyek untuk memberi Anda Admin IAM Project (roles/resourcemanager.projectIamAdmin) peran. Anda harus memiliki peran ini untuk memberikan peran IAM pada langkah berikutnya langkah waktu ini.
  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. Aktifkan API DNS, Artifact Registry, IAM, Compute Engine, Notebooks, and Vertex AI:

    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 API lainnya untuk menyimulasikan lokal jaringan. Di masing-masing dari dua VPC jaringan, Anda membuat Cloud Router dan gateway Cloud NAT. Gateway Cloud NAT menyediakan konektivitas keluar untuk Compute Engine instance virtual machine (VM) 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. Membuat 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 Jaringan dalam project saat ini di halaman VPC networks.

    Buka jaringan VPC

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

  3. Klik tab Subnets in current project.

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

Mengonfigurasi konektivitas hybrid

Di bagian ini, Anda akan membuat dua VPN HA {i>gateway<i} yang terhubung satu sama lain. Salah satunya tinggal di Jaringan VPC vertex-networking-vpc. Yang lainnya tinggal 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. Membuat gateway VPN dengan ketersediaan tinggi (HA) untuk onprem-vpc Jaringan 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 VPN.

    Buka VPN

  4. Verifikasi bahwa kedua gateway (vertex-networking-vpn-gw1 dan onprem-vpn-gw1) telah dibuat dan setiap {i>gateway<i} memiliki dua alamat IP antarmuka.

Membuat Cloud Router dan gateway Cloud NAT

Di kedua jaringan VPC, Anda membuat dua Cloud Router: satu umum dan satu regional. Di setiap Cloud Router, Anda membuat gateway Cloud NAT. Gateway Cloud NAT menyediakan konektivitas keluar untuk Compute Engine instance mesin virtual (VM) 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. Membuat 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. Membuat Cloud Router regional untuk VPC onprem-vpc jaringan:

    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 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 me-refresh tab browser Konsol Google Cloud untuk melihat versi baru masing-masing.

  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 tanda 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 cloud-nat-us-central1-on-prem Gateway Cloud NAT telah dibuat.

Buat tunnel VPN

  1. Di Cloud Shell, pada 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, verifikasi bahwa keempat tunnel VPN telah dibuat.

Membuat sesi BGP

Cloud Router menggunakan Border Gateway Protocol (BGP) untuk bertukar rute di antara jaringan VPC Anda (dalam kasus ini, vertex-networking-vpc) dan jaringan lokal (diwakili oleh onprem-vpc). Di Cloud Router, konfigurasikan 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 {i>router<i} Anda, mereka akan secara otomatis mulai bertukar rute.

Membuat sesi BGP untuk vertex-networking-vpc

  1. Di Cloud Shell, pada 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, verifikasi bahwa nilai di Kolom Status sesi BGP untuk setiap tunnel telah diubah dari Konfigurasikan sesi BGP ke BGP dibuat. Anda mungkin perlu memuat ulang tab browser konsol Google Cloud untuk melihat nilai baru.

Validasi vertex-networking-vpc rute yang dipelajari

  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) di daftar Region, lalu klik View.

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

Validasi onprem-vpc rute yang dipelajari

  1. Klik tanda 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) di daftar Region, lalu klik View.

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

Membuat endpoint konsumen Private Service Connect

  1. Di Cloud Shell, pesan 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 rute kustom yang diiklankan untuk vertex-networking-vpc

Di bagian ini, Anda akan mengonfigurasi mode iklan kustom Cloud Router untuk Iklankan IP kustom rentang untuk vertex-networking-vpc-router1 (Cloud Router untuk vertex-networking-vpc) untuk 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 Iklankan semua subnet yang terlihat oleh Cloud Router untuk terus mengiklankan subnet yang tersedia untuk Cloud Router. Pengaktifan opsi ini meniru perilaku Cloud Router di 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 Description, masukkan teks berikut:

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

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 dimulai dengan onprem-vpc-router1-bgp-vertex-networking-vpc-tunnel0 dan onprem-vpc-router1-bgp-vfertex-networking-vpc-tunnel1, dan bahwa kedua klien tersebut memiliki rentang IP tujuan sebesar 192.168.0.1.

      Jika entri ini tidak langsung muncul, tunggu beberapa menit, lalu refresh 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 klien lokal aplikasi yang mengirim permintaan prediksi batch. Mengikuti Compute Engine dan IAM praktik terbaik, VM ini menggunakan akun layanan yang dikelola pengguna, bukan Compute Engine akun layanan default.

Membuat akun layanan yang dikelola pengguna

  1. Di Cloud Shell, jalankan perintah 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. Tugaskan Pengguna Vertex AI (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 tugas administratif, akses 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 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 Compute Engine API.

  1. Di Cloud Shell, login ke instance VM on-prem-client menggunakan pembelian dalam aplikasi (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 mirip seperti 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:
    ;; <>/span>->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 ketika Anda mengirim permintaan prediksi batch, mereka akan diarahkan ke Endpoint PSC. Endpoint PSC selanjutnya meneruskan permintaan pribadi ini ke REST API prediksi batch Vertex AI.

Perbarui file /etc/hosts agar mengarah ke endpoint PSC

Pada langkah ini, Anda akan menambahkan baris ke file /etc/hosts yang menyebabkan permintaan dikirim ke endpoint layanan masyarakat (us-central1-aiplatform.googleapis.com) untuk 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, lalu tekan Enter untuk menyimpan file, lalu ketik Control+X untuk keluar.
  4. Melakukan ping Vertex AI endpoint seperti 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.

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 membuat akun layanan yang dikelola pengguna, lalu menetapkan IAM peran ke akun layanan. Saat membuat instance, Anda menentukan akun layanan Anda.

  1. Di Cloud Shell, jalankan perintah 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. Tugaskan Pengguna Vertex AI (roles/aiplatform.user) Peran IAM ke akun layanan:

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

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

    gcloud projects add-iam-policy-binding $projectid \
      --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \
      --role="roles/storage.admin"
    
  6. Tugaskan Logs Viewer (roles/logging.viewer) Peran IAM 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, yang 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 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 Pilih.

  6. Saat {i>notebook<i} baru Anda terbuka, ada sel kode default di mana Anda dapat memasukkan kode. Sepertinya [ ]: 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  Jalankan sel yang dipilih dan melanjutkan:

    !pip3 install --upgrade google-cloud-bigquery scikit-learn==1.2
    
  7. Di langkah ini dan setiap berikutnya, tambahkan sel kode baru (jika yang diperlukan) dengan mengklik Sisipkan sel di bawah, tempelkan kode ke dalam sel, lalu klik  Jalankan sel yang dipilih dan lanjutkan.

    Untuk menggunakan paket yang baru diinstal di {i>runtime<i} Jupyter, Anda harus mulai 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. Atur variabel lingkungan berikut ini di {i>notebook<i} JupyterLab Anda, 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 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 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 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 dataframe 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 dan menyimpannya ke bucket staging.

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

    !mkdir -p training_package/trainer
    

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

  2. Menentukan fitur, target, label, dan langkah-langkah untuk pelatihan dan ekspor model menjadi 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 __init__.py di setiap subdirektori untuk menjadikan 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. Menggunakan 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 bahwa bucket staging berisi tiga file:

    !gcloud storage 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 pelatihan kustom pekerjaan.

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

    !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 dalam setiap jalur tugas kustom adalah nomor project (PROJECT_NUMBER). Yang kedua adalah ID tugas kustom (CUSTOM_JOB_ID). Perhatikan hal-hal berikut angka sehingga 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 streaming log dari saat dijalankan:

    !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 sedang berjalan. Perlu waktu sekitar 10 menit untuk selesai.

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

Mengimpor model

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

  1. Di notebook JupyterLab Anda, impor model dengan menjalankan perintah berikut 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-nya akan terlihat seperti berikut. Jika dua atau lebih model terdaftar, yang pertama dalam daftar adalah 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 menampilkan daftar model dalam project sebagai berikut:

    Di Konsol Google Cloud, di bagian Vertex AI, buka ke 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. Batch permintaan prediksi dibuat dari instance VM on-prem-client.

Membuat permintaan prediksi batch

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

  1. Di Cloud Shell, jalankan perintah 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 hal berikut teks:

    {
      "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 tahap model Anda
  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. Dibutuhkan sekitar 20 menit untuk berlari.

  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. Kapan selesai, statusnya akan berubah menjadi Finished.

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

    Atau, Anda dapat mengeklik Melihat output prediksi di Cloud Storage (antara kolom Terakhir diperbarui dan Menu Tindakan).

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

    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 setiap resource 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 Anda (income-classification-batch-job), klik Menu Tindakan, dan pilih Hapus tugas prediksi batch.

  2. Hapus model seperti berikut:

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

      Buka halaman Model Registry

    2. Di samping nama model Anda (income-classifier-model), klik Menu Tindakan, dan 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 workbench-tutorial Instance Vertex AI Workbench lalu 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, dan klik Hapus.

  5. Menghapus tunnel VPN sebagai berikut:

    1. Di Konsol Google Cloud, buka halaman VPN.

      Buka VPN

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

    3. Pada daftar tunnel VPN, pilih empat tunnel VPN yang telah Anda buat dalam tutorial ini dan klik Hapus.

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

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

      Buka Cloud VPN Gateways

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

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

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

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

  7. Hapus Cloud Router sebagai berikut:

    1. Buka halaman Cloud Routers.

      Buka Cloud Router

    2. Dalam daftar Cloud Router, pilih empat router yang yang dibuat 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 jaringan VPC

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

    3. Di halaman VPC network details, klik Hapus Jaringan VPC.

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

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

    5. Di halaman VPC network details, klik Hapus Jaringan VPC.

  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