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 Anda ke Cloud Storage
  • Men-deploy BQML terlatih Anda 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: Prediction 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 Notebook

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

Menu Vertex AI

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

Instance TFE

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

Buka Notebook CAIP

4. Latih model BigQuery ML

Dengan BigQuery ML, Anda dapat 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 untuk memprediksi kemungkinan gagal bayar pada pembayaran kartu kredit.

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 sebelah kiri, lalu pilih Create Dataset:

Buat set data BigQuery

Di kolom Dataset ID, masukkan cc_default. Biarkan kolom lainnya seperti apa adanya, lalu klik Create dataset.

Langkah 2: Jalankan kueri CREATE MODEL

Di Editor kueri BigQuery, jalankan kueri CREATE MODEL berikut untuk membuat dan melatih model BigQuery ML 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 dalam rentang 0 hingga 1, yang menunjukkan bahwa proses ini akan memerlukan waktu sekitar satu menit untuk dijalankan. Setelah selesai, Anda akan melihat model di bawah set data Anda:

Detail model BQML

Anda dapat mengklik model untuk melihat metrik pelatihan dan evaluasinya.

5. Mengekspor model BigQuery ML

Dengan model BQML yang 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 agar dapat men-deploy-nya ke Vertex AI untuk menyajikan model dan mendapatkan prediksi secara terukur.

Langkah 1: Buat Bucket Cloud Storage untuk model Anda

Di detail model, klik Ekspor Model:

Mengekspor model BQML

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

Menjelajahi bucket GCS

Kemudian, klik ikon + untuk membuat bucket baru:

Bucket GCS baru

Beri nama yang unik (Nama bucket Storage harus unik secara global). Klik Lanjutkan. Pada langkah berikutnya, di bagian Jenis lokasi, pilih Region, lalu pilih salah satu region dari dropdown:

Lokasi bucket

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

Kontrol akses seragam

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

Langkah 2: Ekspor model BQML

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

Jalur ekspor model

Kemudian, klik Ekspor. Tindakan ini akan membuat tugas di BigQuery untuk mengekspor model Anda dalam format SavedModel TensorFlow ke bucket GCS yang baru dibuat dan Anda tentukan. Proses ekspor ini akan memerlukan waktu sekitar satu menit.

Saat model Anda diekspor, buka bagian Storage di konsol Cloud Anda. Setelah tugas selesai, Anda akan melihat aset model diekspor ke bucket yang baru saja Anda buat di bawah subdirektori model-assets:

Aset model yang diekspor

6. Mengimpor 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:

Mengimpor model

Pada langkah pertama, beri model Anda nama predict_default. Pilih region yang sama dengan tempat Anda membuat bucket (us-central1, europe-west4, atau asia-east1). Kemudian, klik Lanjutkan. Di Setelan model, biarkan "Impor artefak model ke container baru yang telah dibuat sebelumnya" tetap dipilih.

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

Di kolom Model artifact location, klik Browse, klik bucket GCS yang baru saja Anda buat, lalu klik direktori model-assets:

Jalur aset model

Kemudian, klik Impor. Proses impor model Anda akan memakan waktu beberapa menit. Setelah dibuat, Anda akan melihatnya di bagian model di Konsol Cloud:

Bagian Model

7. Men-deploy model ke endpoint

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

Langkah 1: Membuat endpoint

Di halaman model Anda, 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 apa pun yang Anda inginkan.

Kemudian pilih Selesai dan klik Lanjutkan. Biarkan setelan lokasi yang dipilih apa adanya, lalu klik Deploy. Endpoint Anda akan memerlukan waktu beberapa menit untuk di-deploy. Setelah selesai, Anda akan melihat tanda centang hijau di sampingnya:

Endpoint yang di-deploy

Anda hampir selesai. Sekarang Anda siap untuk mendapatkan prediksi pada model yang Anda 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: Dapatkan 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, lalu buka notebook Python 3 dari Peluncur:

Buka notebook

Di notebook Anda, jalankan perintah berikut di sel untuk menulis contoh pengujian ke file JSON bernama default-pred.json. Kita akan mengirim contoh ini ke model untuk mendapatkan 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 UI Vertex, klik Sample Request untuk endpoint yang baru saja Anda deploy:

Permintaan sampel

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

Variabel permintaan

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

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

Terakhir, buat permintaan prediksi ke endpoint Anda dengan 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 bahwa ada peluang sebesar 81% bahwa orang ini tidak akan gagal bayar pada pembayaran berikutnya. Nilai .819 sesuai dengan class 0 (bukan default).

🎉 Selamat! 🎉

Anda telah mempelajari cara:

  • Melatih model di BQML
  • Mengekspor model BQML Anda ke Cloud Storage
  • Mengimpor model BQML ke Vertex AI untuk prediksi
  • Buat model Vertex AI dan deploy model ke endpoint
  • Mendapatkan prediksi di endpoint yang di-deploy melalui Vertex Notebooks dan curl

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

9. Pembersihan

Jika Anda ingin terus menggunakan notebook yang Anda buat di lab ini, sebaiknya nonaktifkan notebook tersebut saat tidak digunakan. Dari UI Notebook di Konsol Cloud Anda, 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 Anda deploy, buka bagian Endpoints 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