Prototipe hingga Produksi: Mendapatkan prediksi dari model terlatih kustom

1. Ringkasan

Di lab ini, Anda akan menggunakan Vertex AI untuk mendapatkan prediksi batch dan online dari model terlatih kustom.

Lab ini merupakan bagian dari seri video Prototipe hingga Produksi. Pastikan untuk menyelesaikan lab sebelumnya sebelum mencoba lab ini. Anda dapat menonton video yang disertakan untuk mempelajari lebih lanjut:

.

Yang Anda pelajari

Anda akan mempelajari cara:

  • Mengupload model ke Vertex AI Model Registry
  • Men-deploy model ke endpoint
  • Mendapatkan prediksi batch dan online dengan UI dan SDK

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

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.

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 Workbench

Ringkasan produk Vertex

3. Menyiapkan lingkungan Anda

Selesaikan langkah-langkah di lab Melatih model kustom dengan Vertex AI untuk menyiapkan lingkungan Anda.

4. Mengupload model ke registry

Sebelum bisa menggunakan model untuk mendapatkan prediksi, kita harus menguploadnya ke Vertex AI Model Registry, yang merupakan repositori tempat Anda dapat mengelola siklus proses model ML Anda.

Anda dapat mengupload model saat mengonfigurasi tugas pelatihan kustom, seperti yang ditunjukkan di bawah.

training_prediction

Atau, Anda dapat mengimpor model setelah tugas pelatihan selesai selama Anda menyimpan artefak model yang disimpan di bucket Cloud Storage. Ini adalah opsi yang akan kita gunakan di lab ini.

Buka bagian Model dalam konsol.

menu model

Pilih IMPOR

import_model

Pilih Impor sebagai model baru, lalu namai model Anda

new_model

Di bagian Setelan model, impor model dengan container yang telah dibangun sebelumnya dan gunakan TensorFlow 2.8. Anda dapat melihat daftar lengkap container prediksi yang telah dibangun sebelumnya di sini.

Kemudian, berikan jalur ke bucket Cloud Storage tempat Anda menyimpan artefak model dalam tugas pelatihan kustom. Tampilannya akan terlihat seperti gs://{PROJECT_ID}-bucket/model_output

Kita akan melewati bagian Penjelasan, tetapi jika Anda ingin mempelajari lebih lanjut Vertex Explainable AI, lihat dokumennya.

Saat model diimpor, Anda akan melihatnya dalam registry.

flower_model

Perhatikan bahwa jika ingin melakukannya melalui SDK alih-alih UI, Anda dapat menjalankan perintah berikut dari notebook Workbench untuk mengupload model.

from google.cloud import aiplatform

my_model = aiplatform.Model.upload(display_name='flower-model',
                                  artifact_uri='gs://{PROJECT_ID}-bucket/model_output',
                                  serving_container_image_uri='us-docker.pkg.dev/vertex-ai/prediction/tf2-cpu.2-8:latest')

5. Men-deploy model ke endpoint

Ada dua jenis tugas prediksi yang dapat kita jalankan di Vertex AI: batch dan online.

Prediksi batch adalah konten asinkron. Jenis ini cocok untuk Anda jika tidak memerlukan respons langsung dan ingin memproses data yang terakumulasi dengan satu permintaan.

Di sisi lain, jika ingin mendapatkan prediksi latensi rendah dari data yang diteruskan ke model Anda dengan cepat, Anda dapat menggunakan prediksi online.

Setelah model berada dalam registry, kita dapat menggunakannya untuk prediksi batch.

Namun, jika ingin mendapatkan prediksi online, kita harus men-deploy model ke endpoint. Hal ini mengaitkan artefak model yang disimpan dengan resource fisik untuk prediksi latensi rendah.

Untuk men-deploy endpoint, pilih tiga titik di ujung kanan model, lalu pilih Deploy ke endpoint.

deploy_model

Namai endpoint Anda, lalu biarkan setelan lainnya apa adanya dan klik LANJUTKAN

endpoint_name

Endpoint mendukung penskalaan otomatis, yang artinya Anda dapat menetapkan batas minimum serta maksimum, dan node komputasi akan melakukan penskalaan untuk memenuhi permintaan traffic dalam batas tersebut.

Karena lab ini hanya untuk demonstrasi dan kita tidak akan menggunakan endpoint ini untuk traffic yang tinggi, Anda dapat menetapkan Jumlah maksimum node komputasi ke 1, dan memilih n1-standard-4 sebagai Jenis mesin.

endpoint_compute

Kita akan melewati Pemantauan model, tetapi jika Anda ingin mempelajari lebih lanjut fitur ini, lihat dokumennnya.

Lalu, klik DEPLOY

Proses deploy akan memerlukan waktu beberapa menit, tetapi setelah selesai, Anda akan melihat status deployment model yang telah berubah ke Di-deploy di Vertex AI.

Jika Anda ingin men-deploy model melalui SDK, jalankan perintah di bawah.

my_model = aiplatform.Model("projects/{PROJECT_NUMBER}/locations/us-central1/models/{MODEL_ID}")

endpoint = my_model.deploy(
     deployed_model_display_name='my-endpoint',
     traffic_split={"0": 100},
     machine_type="n1-standard-4",
     accelerator_count=0,
     min_replica_count=1,
     max_replica_count=1,
   )

6. Mendapatkan prediksi

Prediksi online

Saat model di-deploy ke endpoint, Anda dapat menekannya seperti endpoint lainnya. Artinya, Anda dapat memanggilnya dari cloud function, chatbot, aplikasi web, dll.

Untuk tujuan demonstrasi, kita akan memanggil endpoint ini dari Workbench.

Kembali ke notebook yang Anda buat di lab sebelumnya. Dari peluncur, buat notebook TensorFlow 2 baru.

tf_kernel

Impor Vertex AI Python SDK, numpy, dan PIL

from google.cloud import aiplatform

import numpy as np
from PIL import Image

Download gambar di bawah dan upload ke instance workbench Anda. Kita akan menguji model pada gambar dandelion ini.

test_image

Pertama-tama, tentukan endpoint. Anda harus mengganti {PROJECT_NUMBER} dan {ENDPOINT_ID} di bawah.

endpoint = aiplatform.Endpoint(
    endpoint_name="projects/{PROJECT_NUMBER}/locations/us-central1/endpoints/{ENDPOINT_ID}")

Anda dapat menemukan endpoint_id di bagian Endpoint pada Konsol Cloud.

endpoint_id

Dan, Anda dapat menemukan Nomor Project Anda di halaman beranda konsol. Perhatikan bahwa ini berbeda dengan ID Project.

project_number

Kode di bawah akan terbuka dan mengubah ukuran gambar dengan PIL.

IMAGE_PATH = "test-image.jpg"
im = Image.open(IMAGE_PATH)

Lalu, konversikan data numpy ke jenis float32 dan ke daftar. Kita mengonversi ke daftar karena data numpy tidak dapat diserialisasi JSON, jadi kita tidak dapat mengirimnya ke isi permintaan.

x_test = np.asarray(im).astype(np.float32).tolist()

Terakhir, panggil endpoint.predict.

endpoint.predict(instances=x_test).predictions

Hasil yang Anda dapatkan adalah output model, yang merupakan lapisan softmax dengan 5 unit. Jika ingin menulis logika kustom untuk mengembalikan label string alih-alih indeks, Anda dapat menggunakan rutinitas prediksi kustom.

Prediksi batch

Ada berbagai cara untuk memformat data Anda untuk prediksi batch. Agar mudah, kita akan memindahkan data numpy ke file JSON dan menyimpan file tersebut ke Cloud Storage.

with open('test-data.json', 'w') as fp:
    json.dump(x_test, fp)

!gsutil cp test-data.json gs://{YOUR_BUCKET}

Selanjutnya, tentukan model. Hal ini mirip dengan menentukan endpoint, hanya saja Anda harus memberikan MODEL_ID alih-alih ENDPOINT_ID.

my_model=aiplatform.Model("projects/{PROJECT_NUMBER}/locations/us-central1/models/{MODEL_ID}")

Anda dapat menemukan ID model dengan memilih versi dan nama model dari bagian Model pada konsol, lalu memilih DETAIL VERSI

model_id

Terakhir, gunakan SDK untuk memanggil tugas prediksi batch, dengan meneruskan di jalur Cloud Storage tempat Anda menyimpan file JSON, dan memberikan lokasi Cloud Storage untuk menyimpan hasil prediksi.

batch_prediction_job = my_model.batch_predict(
    job_display_name='flower_batch_predict',
    gcs_source='gs://{YOUR_BUCKET}/test-data.json',
    gcs_destination_prefix='gs://{YOUR_BUCKET}/prediction-results',
    machine_type='n1-standard-4',)

Anda dapat melacak progres tugas di bagian Prediksi Batch pada konsol. Perhatikan bahwa menjalankan tugas prediksi batch untuk satu gambar tidaklah efisien.

batch_pred

Langkah berikutnya

Dalam contoh ini, kita akan mengonversi gambar pengujian ke NumPy terlebih dahulu sebelum melakukan panggilan prediksi. Untuk kasus pengguna yang lebih realistis, Anda mungkin ingin mengirim gambar itu sendiri dan tidak harus memuatnya ke NumPy terlebih dahulu. Untuk melakukannya, Anda harus menyesuaikan fungsi TensorFlow Serving guna mendekode byte gambar. Hal ini memerlukan upaya lebih, tetapi akan jauh lebih efisien untuk membangun aplikasi dan gambar yang lebih besar. Anda dapat melihat contohnya di notebook ini.

🎉 Selamat! 🎉

Anda telah mempelajari cara menggunakan Vertex AI untuk:

  • Mengupload model ke Vertex AI Model Registry
  • Mendapatkan prediksi online dan batch

Untuk mempelajari lebih lanjut berbagai bagian Vertex, lihat dokumentasinya.

7. Pembersihan

Anda dapat membatalkan deployment model dari endpoint tersebut jika tidak berencana menggunakannya. Anda juga dapat menghapus endpoint secara keseluruhan. Anda dapat men-deploy ulang model ke endpoint kapan saja jika diperlukan.

undeploy_model

Notebook terkelola Workbench akan kehabisan waktu secara otomatis setelah 180 menit tidak ada aktivitas, jadi jangan khawatir untuk menonaktifkan instance-nya. Jika Anda ingin menonaktifkan instance secara manual, klik tombol Hentikan di bagian Vertex AI Workbench pada konsol. Jika Anda ingin menghapus notebook secara keseluruhan, klik tombol Hapus.

Hentikan instance

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

Hapus penyimpanan