Vertex AI: Mengekspor dan men-deploy Model Machine Learning BigQuery untuk Prediksi

1. Ringkasan

Di lab ini, Anda akan melatih model dengan BigQuery Machine Learning, lalu mengekspor dan men-deploy model tersebut ke Vertex AI. Ini adalah penawaran produk AI terbaru di Google Cloud.

Yang Anda pelajari

Anda akan mempelajari cara:

  • Melatih model dengan BigQuery Machine Learning (BQML)
  • Mengekspor model BQML ke Cloud Storage
  • Men-deploy BQML terlatih ke Vertex AI
  • Mendapatkan prediksi pada model yang di-deploy

Total biaya untuk menjalankan lab ini di Google Cloud adalah sekitar $2.

2. Pengantar Vertex AI

Lab ini menggunakan penawaran produk AI terbaru yang tersedia di Google Cloud. Vertex AI mengintegrasikan penawaran ML di Google Cloud ke dalam pengalaman pengembangan yang lancar. Sebelumnya, model yang dilatih dengan AutoML dan model kustom dapat diakses melalui layanan terpisah. Penawaran baru ini menggabungkan kedua model ini menjadi satu API, beserta produk baru lainnya. Anda juga dapat memigrasikan project yang sudah ada ke Vertex AI. Jika Anda memiliki masukan, harap lihat halaman dukungan.

Vertex AI mencakup banyak produk yang berbeda untuk mendukung alur kerja ML secara menyeluruh. Lab ini akan berfokus pada produk yang disorot di bawah: Prediksi dan Notebooks.

Ringkasan produk Vertex

3. Menyiapkan lingkungan Anda

Anda memerlukan project Google Cloud Platform dengan penagihan yang diaktifkan untuk menjalankan codelab ini. Untuk membuat project, ikuti petunjuk di sini.

Langkah 1: Aktifkan Compute Engine API

Buka Compute Engine dan pilih Aktifkan jika belum diaktifkan. Anda akan memerlukan ini untuk membuat instance notebook.

Langkah 2: Aktifkan Vertex AI API

Buka bagian Vertex AI di Cloud Console Anda, lalu klik Aktifkan Vertex AI API.

Dasbor Vertex AI

Langkah 3: Buat instance Notebooks

Kita akan menggunakan Notebooks untuk mendapatkan prediksi setelah men-deploy model. Dari bagian Vertex AI di Konsol Cloud Anda, klik Notebooks:

Menu Vertex AI

Dari sana, pilih New Instance. Kemudian, pilih jenis instance TensorFlow Enterprise 2.3 tanpa GPU:

Instance TFE

Gunakan opsi default, lalu klik Create. Setelah instance dibuat, pilih Open JupyterLab:

Buka Notebook CAIP

4. Latih model BigQuery ML

BigQuery ML memungkinkan Anda melatih model machine learning kustom menggunakan data yang disimpan di BigQuery. Anda dapat melatih dan mendapatkan prediksi dari model, semuanya di SQL. Untuk lab ini, kita akan menggunakan set data yang tersedia untuk publik di BigQuery guna memprediksi kemungkinan pembayaran kartu kredit akan menjadi default.

Langkah 1: Buat set data BigQuery di project Anda

Untuk melatih model di BigQuery ML, Anda harus membuat set data dalam project untuk menyimpan model ini. Klik project Anda di panel menu kiri, lalu pilih Create Dataset:

Membuat set data BQ

Di kolom ID set data, masukkan cc_default. Biarkan kolom lainnya apa adanya dan klik Create dataset.

Langkah 2: Jalankan kueri CREATE MODEL

Di Query editor BigQuery, jalankan kueri CREATE MODEL berikut untuk membuat dan melatih model ML BigQuery pada set data publik yang akan kita gunakan. Pastikan untuk mengganti your-project dengan nama project Cloud Anda:

CREATE OR REPLACE MODEL
  `your-project.cc_default.logistic_model` OPTIONS(model_type='LOGISTIC_REG',
    input_label_cols=['default_payment_next_month']) AS
SELECT
  limit_balance,
  sex,
  education_level,
  marital_status,
  age,
  pay_0,
  pay_2,
  pay_3,
  pay_4,
  pay_5,
  pay_6,
  bill_amt_1,
  bill_amt_2,
  bill_amt_3,
  bill_amt_4,
  bill_amt_5,
  bill_amt_6,
  pay_amt_1,
  pay_amt_2,
  pay_amt_3,
  pay_amt_4,
  pay_amt_5,
  pay_amt_6,
  default_payment_next_month
FROM
  `bigquery-public-data.ml_datasets.credit_card_default`

Tindakan ini akan membuat model regresi logistik yang menghasilkan nilai numerik mulai dari 0 hingga 1, yang menunjukkan proses yang memakan waktu sekitar satu menit. Setelah selesai, Anda akan melihat model di bawah set data Anda:

Detail model BQML

Anda dapat mengklik model tersebut untuk melihat metrik pelatihan dan evaluasinya.

5. Mengekspor model BigQuery ML Anda

Dengan model BQML terlatih, kita dapat menggunakan sintaksis SQL BQML untuk mendapatkan prediksi atau mengekspor model untuk men-deploy-nya di tempat lain. Di sini kita akan mengekspor model sehingga kita dapat men-deploy-nya ke Vertex AI untuk menyalurkan model secara skalabel dan mendapatkan prediksi.

Langkah 1: Buat Bucket Cloud Storage untuk model Anda

Di detail model, klik Ekspor Model:

Ekspor model BQML

Setelah itu, Anda akan diminta untuk memasukkan lokasi Google Cloud Storage (GCS) tempat aset model ingin diekspor. Jika Anda belum memiliki bucket GCS, jangan khawatir. Kita akan membuatnya. Pertama, klik Jelajahi:

Menjelajahi bucket GCS

Lalu klik ikon + untuk membuat bucket baru:

Bucket GCS baru

Berikan nama yang unik (Nama bucket Storage harus unik secara global). Klik Lanjutkan. Pada langkah berikutnya, di bagian Location type, pilih Region, lalu pilih salah satu wilayah dari dropdown:

Lokasi bucket

Gunakan kelas penyimpanan default, dan di bagian kontrol akses, pastikan Uniform dipilih di bawah kontrol akses:

Kontrol akses seragam

Klik lanjutkan dan gunakan opsi default untuk opsi lainnya. Lalu klik Buat.

Langkah 2: Ekspor model BQML

Setelah bucket baru dibuat, masukkan model-assets (atau apa pun yang Anda inginkan) di kolom Name, lalu klik Select:

Jalur ekspor model

Kemudian, klik Export. Tindakan ini akan membuat tugas di BigQuery untuk mengekspor model Anda dalam format TersimpanModel TensorFlow ke bucket GCS yang baru dibuat yang Anda tentukan. Perlu waktu sekitar satu menit untuk mengekspor.

Selagi model Anda diekspor, buka bagian Storage di Konsol Cloud. Setelah tugas selesai, Anda akan melihat aset model diekspor ke bucket yang baru saja dibuat di subdirektori model-assets:

Aset model yang diekspor

6. Impor model ke Vertex AI

Pada langkah ini, kita akan mereferensikan lokasi penyimpanan GCS tempat kita baru saja mengekspor aset model untuk membuat dan mengimpor model ke Vertex AI.

Langkah 1: Impor model

Di Konsol Cloud, buka bagian Model Vertex AI. Dari sana, pilih Impor:

Impor model

Pada langkah pertama, beri nama model Anda predict_default. Pilih region yang sama tempat Anda membuat bucket (us-central1, europe-west4, atau asia-east1. Kemudian, klik Continue. Di Setelan model, simpan "Impor artefak model ke penampung baru yang telah dibangun sebelumnya" dipilih.

Di menu dropdown Model framework, pilih TensorFlow. Kemudian, pilih 2.3 sebagai versi framework.

Di kolom Lokasi artefak model, klik Jelajahi, klik bucket GCS yang baru saja Anda buat, lalu klik direktori model-assets:

Jalur aset model

Lalu klik Impor. Perlu waktu beberapa menit untuk mengimpor model Anda. Setelah dibuat, Anda akan melihatnya di bagian model di Konsol Cloud:

Bagian model

7. Men-deploy model ke endpoint

Setelah mengupload model, langkah berikutnya adalah membuat Endpoint di Vertex. Resource Model di Vertex dapat memiliki beberapa endpoint yang terkait dengannya, dan Anda dapat membagi traffic di antara endpoint.

Langkah 1: Membuat endpoint

Di halaman model, buka tab Deploy and test lalu klik Deploy to endpoint:

Men-deploy dan menguji

Beri nama endpoint Anda, seperti default_pred_v1, biarkan setelan pemisahan traffic apa adanya, lalu pilih jenis mesin untuk deployment model Anda. Kita menggunakan n1-highcpu-2 di sini, tetapi Anda dapat memilih jenis mesin mana pun yang diinginkan.

Kemudian, pilih Selesai, lalu klik Lanjutkan. Biarkan setelan lokasi yang dipilih apa adanya, lalu klik Deploy. Deployment endpoint Anda akan memerlukan waktu beberapa menit. Jika sudah selesai, Anda akan melihat tanda centang hijau di sampingnya:

Endpoint yang di-deploy

Anda semakin dekat! Sekarang Anda siap untuk mendapatkan prediksi tentang model yang di-deploy.

8. Mendapatkan prediksi pada model yang di-deploy

Ada beberapa opsi untuk mendapatkan prediksi model:

  • UI Vertex AI
  • Vertex AI API

Di sini kami akan menunjukkan cara mendapatkan prediksi melalui API

Langkah 1: Mendapatkan prediksi model dengan Vertex AI API

Untuk menunjukkan cara mendapatkan prediksi model di sini, kita akan menggunakan instance Vertex Notebook yang Anda buat di awal lab ini.

Selanjutnya, buka instance notebook yang Anda buat, dan buka notebook Python 3 dari Peluncur:

Buka notebook

Di notebook Anda, jalankan perintah berikut dalam sel untuk menulis contoh pengujian ke file JSON bernama default-pred.json. Kita akan mengirim contoh ini ke model untuk prediksi:

%%writefile default-pred.json
{
  "instances": [
    {"age": 39,
    "bill_amt_1": 47174,
    "bill_amt_2": 47974,
    "bill_amt_3": 48630,
    "bill_amt_4": 50803,
    "bill_amt_5": 30789,
    "bill_amt_6": 15874,
    "education_level": "1",
    "limit_balance": 50000,
    "marital_status": "2",
    "pay_0": 0,
    "pay_2":0,
    "pay_3": 0,
    "pay_4": 0,
    "pay_5": "0",
    "pay_6": "0",
    "pay_amt_1": 1800,
    "pay_amt_2": 2000,
    "pay_amt_3": 3000,
    "pay_amt_4": 2000,
    "pay_amt_5": 2000,
    "pay_amt_6": 2000,
    "sex": "1"}
  ]
}

Selanjutnya, di Vertex UI, klik Sample Request untuk endpoint yang baru saja Anda deploy:

Permintaan sampel

Salin kode dari Langkah 4 di tab REST ke notebook Anda dan jalankan sel:

Variabel permintaan

Kemudian, tambahkan variabel untuk region tempat Anda membuat bucket dan model. Ganti your-region pada string di bawah ini:

REGION="your-region" # either us-central1, europe-west4, or asia-east1

Terakhir, buat permintaan prediksi ke endpoint menggunakan curl dengan menyalin kode berikut ke notebook Anda:

!curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-prediction-aiplatform.googleapis.com/v1alpha1/projects/$PROJECT_ID/locations/$REGION/endpoints/$ENDPOINT_ID:predict \
-d "@default-pred.json"

Anda akan melihat sesuatu seperti berikut (nilai prediksi yang tepat akan sedikit berbeda):

{
  "predictions": [
    {
      "default_payment_next_month_values": [
        "1",
        "0"
      ],
      "default_payment_next_month_probs": [
        0.180815295299778,
        0.819184704700222
      ],
      "predicted_default_payment_next_month": [
        "0"
      ]
    }
  ],
  "deployedModelId": "your-model-id"
}

Nilai dalam default_payment_next_month_probs menunjukkan probabilitas untuk setiap class. Untuk contoh ini, model kami memprediksi ada 81% kemungkinan bahwa orang ini tidak akan default pada pembayaran berikutnya. Nilai .819 sesuai dengan class 0 (bukan default).

🎉 Selamat! 🎉

Anda telah mempelajari cara:

  • Melatih model di BQML
  • Mengekspor model BQML ke Cloud Storage
  • Mengimpor model BQML ke Vertex AI untuk prediksi
  • Membuat model Vertex AI dan men-deploy model tersebut ke endpoint
  • Dapatkan prediksi tentang endpoint yang di-deploy melalui Vertex Notebooks dan curl

Untuk mempelajari lebih lanjut berbagai bagian Vertex AI, lihat dokumentasinya.

9. Pembersihan

Jika ingin terus menggunakan notebook yang Anda buat di lab ini, sebaiknya nonaktifkan notebook tersebut saat tidak digunakan. Dari UI Notebooks di Konsol Cloud, pilih notebook, lalu pilih Stop:

Hentikan instance

Jika Anda ingin menghapus notebook secara keseluruhan, cukup klik tombol Hapus di kanan atas.

Untuk menghapus endpoint yang di-deploy, buka bagian Endpoint di konsol Vertex AI, lalu klik ikon hapus:

Menghapus endpoint

Untuk menghapus Bucket Penyimpanan menggunakan menu Navigasi di Cloud Console, jelajahi Penyimpanan, pilih bucket Anda, lalu klik Hapus:

Hapus penyimpanan