Pengantar
Model Vertex AI di-deploy ke instance mesin virtual (VM) miliknya sendiri secara default. Vertex AI menawarkan kemampuan untuk meng-hosting bersama model di VM yang sama, yang memberikan manfaat berikut:
- Berbagi resource di beberapa deployment.
- Penyajian model yang hemat biaya.
- Pemanfaatan memori dan resource komputasi secara lebih optimal.
Panduan ini menjelaskan cara berbagi resource di beberapa deployment di Vertex AI.
Ringkasan
Dukungan hosting bersama model memperkenalkan konsep DeploymentResourcePool
, yang mengelompokkan deployment model yang berbagi resource dalam satu VM. Beberapa endpoint dapat di-deploy di VM yang sama dalam DeploymentResourcePool
. Setiap endpoint memiliki satu atau beberapa model yang di-deploy. Model yang di-deploy untuk endpoint tertentu dapat dikelompokkan dalam DeploymentResourcePool
yang sama atau yang berbeda.
Pada contoh berikut, Anda memiliki empat model dan dua endpoint:
Model_A
, Model_B
, dan Model_C
di-deploy ke Endpoint_1
dengan traffic yang dirutekan ke semua model tersebut. Model_D
di-deploy ke Endpoint_2
, yang menerima 100% traffic untuk endpoint tersebut.
Alih-alih menetapkan setiap model ke VM yang terpisah, Anda dapat mengelompokkan model dengan salah satu cara berikut:
- Mengelompokkan
Model_A
danModel_B
untuk berbagi satu VM, yang menjadikan keduanya sebagai bagian dariDeploymentResourcePool_X
. - Mengelompokkan
Model_C
danModel_D
(yang tidak sedang berada di endpoint yang sama) untuk berbagi satu VM, yang menjadikan keduanya sebagai bagian dariDeploymentResourcePool_Y
.
Kumpulan Resource Deployment yang berbeda tidak dapat berbagi satu VM.
Pertimbangan
Tidak ada batas atas terkait jumlah model yang dapat di-deploy ke satu Kumpulan Resource Deployment. Hal ini bergantung pada bentuk VM, ukuran model, dan pola traffic yang dipilih. Jika ada banyak model yang di-deploy tetapi traffic-nya rendah, menetapkan mesin khusus untuk setiap model yang di-deploy akan membuat pemanfaatan sumber daya menjadi tidak efektif, dalam hal ini hosting bersama akan sangat praktis.
Anda dapat men-deploy model ke Kumpulan Resource Deployment yang sama secara serentak. Namun, permintaan deployment serentak dibatasi maksimum 20 setiap saat.
Saat model sedang di-deploy, pemakaian CPU akan meningkat. Peningkatan pemakaian CPU dapat menyebabkan peningkatan latensi untuk traffic yang ada, atau dapat memicu penskalaan otomatis. Agar dapat berjalan dengan optimal, sebaiknya hindari traffic tinggi ke Kumpulan Resource Deployment saat men-deploy model baru ke kumpulan tersebut.
Traffic yang sudah berjalan ke Kumpulan Resource Deployment tidak akan terpengaruh saat Anda membatalkan deployment model dari kumpulan tersebut. Pembatalan deployment model tidak akan memengaruhi pemakaian CPU atau latensi pada traffic yang ada.
Kumpulan Resource Deployment yang kosong tidak akan mengurangi kuota resource Anda. Penyediaan resource ke Kumpulan Resource Deployment dimulai saat model pertama di-deploy dan dihentikan saat model terakhir tidak lagi di-deploy.
Model dalam satu Kumpulan Resource Deployment tidak diisolasi satu sama lain dalam hal resource seperti CPU dan memori. Jika satu model menggunakan sebagian besar resource, model tersebut akan memicu penskalaan otomatis.
Batasan
Saat men-deploy model dengan mengaktifkan berbagi resource, batasan berikut berlaku:
- Fitur ini hanya didukung untuk deployment model TensorFlow yang menggunakan container bawaan Tensorflow prediksi Vertex AI. Framework model lain dan container kustom belum didukung.
- Saat ini, hanya model yang dilatih secara khusus atau yang diimpor yang didukung. Model AutoML belum didukung.
- Hanya model dengan image container yang sama (termasuk versi framework) dari container bawaan TensorFlow Vertex AI untuk prediksi yang dapat di-deploy di Kumpulan Resource Deployment yang sama.
- Fitur berikut belum didukung: akun layanan kustom, logging container, Vertex Explainable AI, Kontrol Layanan VPC, dan endpoint pribadi.
Men-deploy model
Untuk men-deploy model ke DeploymentResourcePool
, selesaikan langkah-langkah berikut:
- Membuat Kumpulan Resource Deployment jika perlu.
- Membuat Endpoint jika perlu.
- Mengambil ID Endpoint.
- Men-deploy model ke Endpoint di Kumpulan Resource Deployment.
Membuat Kumpulan Resource Deployment
Jika Anda men-deploy model ke DeploymentResourcePool
yang sudah ada, lewati langkah ini:
Gunakan CreateDeploymentResourcePool
untuk membuat kumpulan resource.
Konsol Cloud
Di konsol Google Cloud, buka halaman Kumpulan Resource Deployment Vertex AI.
Klik Buat, lalu lengkapi formulir (ditampilkan di bawah ini).
REST
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- LOCATION_ID: Region tempat Anda menggunakan Vertex AI.
- PROJECT_ID: Project ID Anda.
-
MACHINE_TYPE: Opsional. Resource mesin yang digunakan untuk setiap node deployment ini. Setelan defaultnya adalah
n1-standard-2
. Pelajari jenis-jenis mesin lebih lanjut. - ACCELERATOR_TYPE: Jenis akselerator yang akan dipasang ke mesin. Opsional jika ACCELERATOR_COUNT tidak ditentukan atau nol. Tidak direkomendasikan untuk model AutoML atau model yang dilatih secara khusus yang menggunakan image non-GPU. Pelajari lebih lanjut.
- ACCELERATOR_COUNT: Jumlah akselerator untuk setiap replika yang akan digunakan. Opsional. Harus nol atau tidak ditentukan untuk model AutoML atau model yang dilatih secara khusus yang menggunakan image non-GPU.
- MIN_REPLICA_COUNT: Jumlah minimum node untuk deployment ini. Jumlah node dapat ditambah atau dikurangi sesuai kebutuhan oleh beban prediksi hingga mencapai jumlah maksimum node, dan node tidak pernah kurang dari jumlah ini. Nilai ini harus lebih besar dari atau sama dengan 1.
- MAX_REPLICA_COUNT: Jumlah maksimum node untuk deployment ini. Jumlah node dapat ditambah atau dikurangi sesuai kebutuhan oleh beban prediksi, node dapat ditambah hingga mencapai jumlah ini dan tidak pernah kurang dari jumlah minimum node.
-
DEPLOYMENT_RESOURCE_POOL_ID: Nama untuk
DeploymentResourcePool
Anda. Panjang maksimum adalah 63 karakter, dan karakter yang valid adalah /^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$/.
Metode HTTP dan URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/deploymentResourcePools
Meminta isi JSON:
{ "deploymentResourcePool":{ "dedicatedResources":{ "machineSpec":{ "machineType":"MACHINE_TYPE", "acceleratorType":"ACCELERATOR_TYPE", "acceleratorCount":"ACCELERATOR_COUNT" }, "minReplicaCount":MIN_REPLICA_COUNT, "maxReplicaCount":MAX_REPLICA_COUNT } }, "deploymentResourcePoolId":"DEPLOYMENT_RESOURCE_POOL_ID" }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan melihat respons JSON seperti berikut:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/deploymentResourcePools/DEPLOYMENT_RESOURCE_POOL_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1beta1.CreateDeploymentResourcePoolOperationMetadata", "genericMetadata": { "createTime": "2022-06-15T05:48:06.383592Z", "updateTime": "2022-06-15T05:48:06.383592Z" } } }
Anda dapat melakukan polling untuk status operasi hingga
responsnya menyertakan "done": true
.
Membuat Endpoint
Ikuti petunjuk ini untuk membuat Endpoint. Langkah ini sama dengan deployment model tunggal.
Mengambil ID Endpoint
Ikuti petunjuk ini untuk mengambil ID Endpoint. Langkah ini sama dengan deployment model tunggal.
Men-deploy model di Kumpulan Resource Deployment
Setelah membuat DeploymentResourcePool
dan Endpoint, Anda sudah dapat men-deploy menggunakan metode API DeployModel
. Proses ini mirip dengan deployment model tunggal. Jika ada DeploymentResourcePool
, tentukan shared_resources
dari DeployModel
dengan nama resource DeploymentResourcePool
yang Anda deploy.
Konsol Cloud
Di konsol Google Cloud, buka halaman Model Registry Vertex AI.
Temukan model Anda, lalu klik Deploy ke endpoint.
Di bagian Pengaturan model (ditampilkan di bawah ini), pilih Deploy ke kumpulan resource deployment bersama.
REST
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- LOCATION_ID: Region tempat Anda menggunakan Vertex AI.
- PROJECT: Project ID Anda.
- ENDPOINT_ID: ID untuk endpoint tersebut.
- MODEL_ID: ID untuk model yang akan di-deploy.
-
DEPLOYED_MODEL_NAME: Nama untuk
DeployedModel
. Anda juga dapat menggunakan nama tampilanModel
untukDeployedModel
. -
DEPLOYMENT_RESOURCE_POOL_ID: Nama untuk
DeploymentResourcePool
Anda. Panjang maksimum adalah 63 karakter, dan karakter yang valid adalah /^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$/. - TRAFFIC_SPLIT_THIS_MODEL: Persentase traffic prediksi ke endpoint ini yang akan dirutekan ke model yang di-deploy dengan operasi ini. Setelan defaultnya adalah 100. Semua persentase traffic harus berjumlah 100. Pelajari pemisahan traffic lebih lanjut.
- DEPLOYED_MODEL_ID_N: Opsional. Jika model lain di-deploy ke endpoint ini, Anda harus memperbarui persentase pemisahan traffic agar semua persentase berjumlah 100.
- TRAFFIC_SPLIT_MODEL_N: Nilai persentase pemisahan traffic untuk kunci ID model yang di-deploy.
- PROJECT_NUMBER: Nomor project yang dibuat secara otomatis untuk project Anda
Metode HTTP dan URL:
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT/locations/LOCATION/endpoints/ENDPOINT_ID:deployModel
Meminta isi JSON:
{ "deployedModel": { "model": "projects/PROJECT/locations/us-central1/models/MODEL_ID", "displayName": "DEPLOYED_MODEL_NAME", "sharedResources":"projects/PROJECT/locations/us-central1/deploymentResourcePools/DEPLOYMENT_RESOURCE_POOL_ID" }, "trafficSplit": { "0": TRAFFIC_SPLIT_THIS_MODEL, "DEPLOYED_MODEL_ID_1": TRAFFIC_SPLIT_MODEL_1, "DEPLOYED_MODEL_ID_2": TRAFFIC_SPLIT_MODEL_2 }, }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan melihat respons JSON seperti berikut:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/endpoints/ENDPOINT_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1beta1.DeployModelOperationMetadata", "genericMetadata": { "createTime": "2022-06-19T17:53:16.502088Z", "updateTime": "2022-06-19T17:53:16.502088Z" } } }
Ulangi permintaan di atas dengan berbagai model yang memiliki resource bersama yang sama untuk men-deploy beberapa model ke Kumpulan Resource Deployment yang sama.
Mendapatkan prediksi
Anda dapat mengirim permintaan prediksi ke model di DeploymentResourcePool
seperti yang Anda lakukan ke model lain yang di-deploy di Vertex AI.