Sebelum dapat mendapatkan prediksi online dari model terlatih, Anda harus men-deploy model ke endpoint. Hal ini dapat dilakukan dengan menggunakan konsol Google Cloud, Google Cloud CLI, atau Vertex AI API.
Dokumen ini menjelaskan proses deployment model ke endpoint.
Yang terjadi saat Anda men-deploy model
Men-deploy model akan mengaitkan resource fisik dengan model tersebut, sehingga dapat menyajikan prediksi online dengan latensi rendah.
Anda dapat men-deploy beberapa model ke satu endpoint, atau men-deploy model yang sama ke beberapa endpoint. Untuk mengetahui informasi selengkapnya, lihat Alasan men-deploy lebih dari satu model ke endpoint yang sama.
Bersiap untuk men-deploy model ke endpoint
Selama deployment model, Anda membuat keputusan penting berikut terkait cara menjalankan prediksi online:
Resource yang dibuat | Setelan yang ditentukan saat pembuatan resource |
---|---|
Endpoint | Lokasi tempat menjalankan prediksi |
Model | Container yang akan digunakan (ModelContainerSpec ) |
DeployedModel | Resource komputasi yang akan digunakan untuk prediksi online |
Setelah model di-deploy ke endpoint, setelan deployment ini tidak dapat diubah. Untuk mengubahnya, Anda harus men-deploy ulang model.
Langkah pertama dalam proses deployment adalah menentukan jenis endpoint yang akan digunakan. Untuk informasi selengkapnya, lihat Memilih jenis endpoint.
Selanjutnya, pastikan model terlihat di Vertex AI Model Registry. Hal ini diperlukan agar model dapat di-deploy. Untuk informasi tentang Model Registry, termasuk cara mengimpor artefak model atau membuatnya langsung di Model Registry, lihat Pengantar Vertex AI Model Registry.
Keputusan berikutnya yang harus dibuat adalah resource komputasi yang akan digunakan untuk menayangkan model.
Jenis pelatihan model (AutoML atau kustom) dan jenis
data (AutoML) menentukan jenis resource fisik yang tersedia untuk model. Setelah
deployment model, Anda dapat
mutate
beberapa
resource tersebut tanpa harus membuat deployment baru.
Resource endpoint menyediakan endpoint layanan (URL) yang Anda gunakan untuk meminta prediksi. Contoh:
https://us-central1-aiplatform.googleapis.com/v1/projects/{project}/locations/{location}/endpoints/{endpoint}:predict
Men-deploy model ke endpoint
Anda dapat men-deploy model ke endpoint dengan menggunakan konsol Google Cloud atau dengan menggunakan gcloud CLI atau Vertex AI API.
Men-deploy model ke endpoint publik menggunakan konsol Google Cloud
Di Konsol Google Cloud, Anda dapat men-deploy model ke endpoint publik khusus atau bersama yang sudah ada, atau membuat endpoint baru selama proses deployment. Untuk mengetahui detailnya, lihat Men-deploy model menggunakan Konsol Google Cloud.
Men-deploy model ke endpoint publik menggunakan gcloud CLI atau Vertex AI API
Saat men-deploy model menggunakan gcloud CLI atau Vertex AI API, Anda harus membuat endpoint khusus atau bersama terlebih dahulu, lalu men-deploy model ke endpoint tersebut. Untuk mengetahui detailnya, baca artikel berikut:
- Membuat endpoint publik khusus atau bersama
- Men-deploy model menggunakan gcloud CLI atau Vertex AI API
Men-deploy model ke endpoint Private Service Connect
Untuk mengetahui detailnya, lihat Menggunakan endpoint Private Service Connect untuk prediksi online.
Menggunakan deployment bertahap untuk mengupdate model yang di-deploy
Anda dapat menggunakan deployment rolling untuk mengganti model yang di-deploy dengan versi baru dari model yang sama. Model baru menggunakan kembali resource komputasi dari model sebelumnya. Untuk mengetahui detailnya, lihat Menggunakan deployment rolling untuk mengganti model yang di-deploy.
Membatalkan deployment model dan menghapus endpoint
Anda dapat membatalkan deployment model dan menghapus endpoint. Untuk mengetahui detailnya, lihat Membatalkan deployment model dan menghapus endpoint.
Alasan untuk men-deploy lebih dari satu model ke endpoint yang sama
Dengan men-deploy dua model ke endpoint yang sama, Anda dapat mengganti satu model dengan model lainnya secara bertahap. Misalnya, Anda sedang menggunakan suatu model, dan menemukan cara untuk meningkatkan akurasi model tersebut dengan data pelatihan baru. Namun, Anda tidak ingin mengupdate aplikasi agar mengarah ke URL endpoint baru, dan tidak ingin membuat perubahan tiba-tiba dalam aplikasi. Anda dapat menambahkan model baru ke endpoint yang sama, menyalurkan sebagian kecil traffic, dan meningkatkan pemisahan traffic untuk model baru secara bertahap hingga model tersebut menyalurkan semua traffic.
Karena resource dikaitkan dengan model, bukan endpoint, Anda dapat men-deploy model dari berbagai jenis ke endpoint yang sama. Namun, praktik terbaiknya adalah men-deploy model dari jenis tertentu (misalnya, AutoML tabular atau dilatih khusus) ke endpoint. Konfigurasi ini lebih mudah dikelola.
Alasan untuk men-deploy model ke lebih dari satu endpoint
Anda mungkin ingin men-deploy model dengan resource yang berbeda untuk lingkungan aplikasi yang berbeda, seperti pengujian dan produksi. Anda mungkin juga ingin mendukung SLO yang berbeda untuk permintaan prediksi Anda. Mungkin salah satu aplikasi Anda memiliki kebutuhan performa yang jauh lebih tinggi daripada yang lain. Dalam hal ini, Anda dapat men-deploy model tersebut ke endpoint berperforma lebih tinggi dengan lebih banyak resource mesin. Untuk mengoptimalkan biaya, Anda juga dapat men-deploy model ke endpoint berperforma lebih rendah dengan resource mesin yang lebih sedikit.
Perilaku penskalaan
Saat men-deploy model untuk prediksi online sebagai DeployedModel
, Anda dapat mengonfigurasi
node prediksi agar diskalakan secara otomatis. Untuk melakukannya, tetapkan
dedicatedResources.maxReplicaCount
ke
nilai yang lebih besar dari dedicatedResources.minReplicaCount
.
Saat mengonfigurasi DeployedModel
, Anda harus menetapkan
dedicatedResources.minReplicaCount
setidaknya ke nilai 1. Dengan kata lain, Anda tidak dapat
mengonfigurasi DeployedModel
untuk diskalakan ke 0 node prediksi jika
tidak digunakan.
Secara default, operasi deployment hanya dianggap berhasil jika jumlah node prediksi mencapai dedicatedResources.minReplicaCount
sebelum nilai waktu tunggu permintaan deployment. Jika tidak, deployment akan ditandai sebagai gagal, dan
resource yang mendasarinya akan dirilis.
Deployment dan mutasi yang berhasil sebagian
Anda dapat mengubah perilaku deployment default dengan menetapkan
dedicatedResources.requiredReplicaCount
ke nilai yang kurang dari
dedicatedResources.minReplicaCount
. Dalam hal ini, saat jumlah node prediksi mencapai dedicatedResources.requiredReplicaCount
, operasi deployment akan ditandai sebagai berhasil, meskipun belum selesai. Deployment berlanjut hingga dedicatedResources.minReplicaCount
dicapai. Jika dedicatedResources.minReplicaCount
tidak tercapai
sebelum waktu permintaan deployment, operasi masih berhasil, tetapi
pesan error untuk replika yang gagal akan ditampilkan di
DeployedModel.status.message
.
Kuota untuk Penayangan model kustom dihitung berdasarkan penggunaan resource komputasi real-time dari model yang di-deploy Anda. Jika jumlah maxReplicaCount
untuk semua deployment di project Anda lebih besar dari kuota project, beberapa deployment mungkin gagal melakukan penskalaan otomatis karena kuota habis.
Endpoint diskalakan naik dan turun per mesin, tetapi kuota dihitung per
CPU atau GPU. Misalnya, jika model Anda di-deploy ke jenis mesin a2-highgpu-2g
, setiap replika aktif akan dihitung sebagai 24 CPU dan 2 GPU terhadap kuota project Anda. Untuk mengetahui informasi selengkapnya, lihat Kuota dan batas.
Node prediksi untuk prediksi batch tidak diskalakan secara otomatis.
Vertex AI menggunakan BatchDedicatedResources.startingReplicaCount
dan
mengabaikan BatchDedicatedResources.maxReplicaCount
.
Target pemanfaatan dan konfigurasi
Secara default, jika Anda men-deploy model tanpa resource GPU khusus, Vertex AI akan otomatis meningkatkan atau memperkecil skala jumlah replika sehingga penggunaan CPU cocok dengan nilai target default 60%.
Secara default, jika Anda men-deploy model dengan resource GPU khusus (jika
machineSpec.accelerator_count
lebih besar dari 0), Vertex AI akan otomatis meningkatkan atau memperkecil skala jumlah replika sehingga penggunaan CPU atau GPU, mana yang lebih tinggi, cocok dengan nilai target default 60%. Oleh karena itu, jika throughput prediksi Anda menyebabkan penggunaan GPU
yang tinggi, tetapi tidak menggunakan CPU yang tinggi, Vertex AI akan meningkatkan skala dan penggunaan
CPU akan menjadi sangat rendah sehingga terlihat dalam pemantauan. Sebaliknya,
jika penampung kustom Anda kurang memanfaatkan GPU, tetapi memiliki proses tidak terkait
yang meningkatkan penggunaan CPU lebih tinggi dari 60%, Vertex AI akan meningkatkan skala meskipun
hal ini mungkin tidak diperlukan untuk mencapai QPS dan target latensi.
Anda dapat mengganti metrik dan target nilai minimum default dengan menentukan
autoscalingMetricSpecs
.
Perlu diperhatikan bahwa jika deployment Anda dikonfigurasi untuk diskalakan hanya berdasarkan penggunaan CPU, deployment
tidak akan ditingkatkan skalanya meskipun penggunaan GPU tinggi.
Mengelola penggunaan resource
Anda dapat memantau endpoint untuk melacak metrik seperti penggunaan CPU dan Akselerator, jumlah permintaan, latensi, serta jumlah replika saat ini dan target. Informasi ini dapat membantu Anda memahami penggunaan resource dan perilaku penskalaan endpoint.
Perlu diingat bahwa setiap replika hanya menjalankan satu container. Artinya, jika container prediksi tidak dapat sepenuhnya menggunakan resource komputasi yang dipilih, seperti kode thread tunggal untuk mesin multi-core, atau model kustom yang memanggil layanan lain sebagai bagian dari pembuatan prediksi, node Anda mungkin tidak akan meningkat skalanya.
Misalnya, jika Anda menggunakan FastAPI, atau server model apa pun yang memiliki jumlah worker atau thread yang dapat dikonfigurasi, ada banyak kasus ketika memiliki lebih dari satu worker dapat meningkatkan pemanfaatan resource sehingga dapat meningkatkan kemampuan layanan untuk menskalakan jumlah replika secara otomatis.
Kami biasanya merekomendasikan untuk memulai dengan satu worker atau thread per core. Jika Anda melihat bahwa pemakaian CPU rendah, terutama saat beban tinggi, atau skala model Anda tidak ditingkatkan karena penggunaan CPU rendah, tingkatkan jumlah pekerja. Di sisi lain, jika Anda melihat bahwa pemakaian terlalu tinggi dan latensi meningkat lebih dari yang diharapkan berdasarkan beban, coba gunakan lebih sedikit worker. Jika Anda hanya menggunakan satu worker, coba gunakan jenis mesin yang lebih kecil.
Perilaku penskalaan dan jeda
Vertex AI menyesuaikan jumlah replika setiap 15 detik menggunakan data dari periode 5 menit sebelumnya. Untuk setiap siklus 15 detik, sistem akan mengukur penggunaan server dan menghasilkan jumlah target replika berdasarkan formula berikut:
target # of replicas = Ceil(current # of replicas * (current utilization / target utilization))
Misalnya, jika Anda memiliki dua replika yang digunakan hingga 100%, targetnya adalah 4:
4 = Ceil(3.33) = Ceil(2 * (100% / 60%))
Contoh lain, jika Anda memiliki 10 replika dan pemakaian menurun menjadi 1%, targetnya adalah 1:
1 = Ceil(.167) = Ceil(10 * (1% / 60%))
Di akhir setiap siklus 15 detik, sistem akan menyesuaikan jumlah replika agar cocok dengan nilai target tertinggi dari periode 5 menit sebelumnya. Perhatikan bahwa karena nilai target tertinggi dipilih, endpoint Anda tidak akan diperkecil skalanya jika ada lonjakan penggunaan selama periode 5 menit tersebut meskipun pemanfaatan secara keseluruhan sangat rendah. Di sisi lain, jika sistem perlu ditingkatkan skalanya, sistem akan melakukannya dalam waktu 15 detik karena yang dipilih adalah nilai target tertinggi, bukan rata-rata.
Perlu diingat bahwa meskipun Vertex AI menyesuaikan jumlah replika, perlu waktu untuk memulai atau menonaktifkan replika. Dengan demikian, ada jeda tambahan sebelum endpoint dapat menyesuaikan dengan traffic. Faktor utama yang memengaruhi situasi ini mencakup:
- Waktu untuk menyediakan dan memulai VM Compute Engine
- Waktu untuk mendownload container dari registry
- Waktu untuk memuat model dari penyimpanan
Cara terbaik untuk memahami perilaku penskalaan yang sebenarnya dari model Anda adalah dengan
menjalankan uji beban dan mengoptimalkan karakteristik yang penting bagi model dan
kasus penggunaan Anda. Jika autoscaler tidak meningkatkan skala aplikasi Anda
dengan cukup cepat, sediakan min_replicas
yang cukup untuk menangani traffic dasar pengukuran yang Anda
harapkan.
Memperbarui konfigurasi penskalaan
Jika Anda menentukanDedicatedResources
atau AutomaticResources
saat men-deploy model, Anda dapat memperbarui konfigurasi penskalaan tanpa harus men-deploy ulang
model dengan memanggil
mutateDeployedModel
.
Misalnya, permintaan berikut memperbarui max_replica
,
autoscaling_metric_specs
, dan menonaktifkan logging container.
{
"deployedModel": {
"id": "2464520679043629056",
"dedicatedResources": {
"maxReplicaCount": 9,
"autoscalingMetricSpecs": [
{
"metricName": "aiplatform.googleapis.com/prediction/online/cpu/utilization",
"target": 50
}
]
},
"disableContainerLogging": true
},
"update_mask": {
"paths": [
"dedicated_resources.max_replica_count",
"dedicated_resources.autoscaling_metric_specs",
"disable_container_logging"
]
}
}
Catatan penggunaan:
- Anda tidak dapat mengubah jenis mesin atau beralih dari
DedicatedResources
keAutomaticResources
atau sebaliknya. Satu-satunya kolom konfigurasi penskalaan yang dapat Anda ubah adalah:min_replica
,max_replica
,required_replica
, danAutoscalingMetricSpec
(khususDedicatedResources
). - Anda harus mencantumkan setiap kolom yang perlu diperbarui di
updateMask
. Kolom yang tidak tercantum akan diabaikan. - DeployedModel
harus dalam status
DEPLOYED
. Hanya boleh ada maksimal satu operasi mutasi aktif per model yang di-deploy. mutateDeployedModel
juga memungkinkan Anda mengaktifkan atau menonaktifkan logging penampung. Untuk mengetahui informasi selengkapnya, lihat Logging prediksi online.
Langkah berikutnya
- Pilih jenis endpoint.
- Men-deploy model menggunakan Konsol Google Cloud.
- Pelajari Logging respons permintaan prediksi untuk endpoint khusus dan endpoint Private Service Connect.
- Pelajari cara mendapatkan prediksi online.
- Pelajari cara mengubah setelan default untuk logging prediksi.