Dalam deployment berkelanjutan, model yang di-deploy diganti dengan versi baru dari model yang sama. Model baru menggunakan kembali resource komputasi dari model sebelumnya.
Dalam permintaan deployment berkelanjutan, pemisahan traffic dan nilai dedicatedResources sama seperti untuk deployment sebelumnya. Setelah deployment berkelanjutan selesai, pemisahan traffic akan diperbarui untuk menunjukkan bahwa semua traffic dari DeployedModel sebelumnya telah dimigrasikan ke deployment baru.
Kolom lain yang dapat dikonfigurasi di DeployedModel (seperti serviceAccount, disableContainerLogging, dan enableAccessLogging) ditetapkan ke nilai yang sama seperti untuk DeployedModel sebelumnya secara default. Namun, Anda dapat secara opsional menentukan nilai baru untuk kolom ini.
Saat model di-deploy menggunakan deployment berkelanjutan, DeployedModel baru akan dibuat. DeployedModel baru menerima ID baru yang berbeda dari ID sebelumnya. Model ini juga menerima nilai revisionNumber baru di kolom rolloutOptions.
Jika ada beberapa deployment berkelanjutan yang menargetkan resource pendukung yang sama, DeployedModel dengan revisionNumber tertinggi akan diperlakukan sebagai status akhir yang diinginkan.
Saat deployment berkelanjutan berlangsung, semua replika yang ada untuk DeployedModel sebelumnya akan diganti dengan replika DeployedModel baru. Hal ini terjadi dengan cepat, dan replika akan diperbarui setiap kali deployment memiliki replika yang cukup atau kapasitas lonjakan yang cukup untuk memunculkan replika tambahan.
Selain itu, saat deployment berkelanjutan berlangsung, traffic untuk DeployedModel lama akan dimigrasikan secara bertahap ke DeployedModel baru. Traffic akan di-load balance secara proporsional dengan jumlah replika siap pakai dari setiap DeployedModel.
Jika replika baru deployment berkelanjutan tidak pernah siap karena rute kesehatannya secara konsisten menampilkan kode respons non-200, traffic tidak akan dikirim ke replika yang belum siap tersebut. Dalam hal ini, deployment berkelanjutan pada akhirnya akan gagal, dan replika akan dikembalikan ke DeployedModel sebelumnya.
Memulai deployment berkelanjutan
Untuk memulai deployment berkelanjutan, sertakan kolom rolloutOptions dalam permintaan deployment model seperti yang ditunjukkan dalam contoh berikut.
REST
Sebelum menggunakan data permintaan mana pun, lakukan penggantian berikut:
- LOCATION_ID: Region tempat Anda menggunakan Vertex AI.
- PROJECT_ID: Project ID Anda.
- ENDPOINT_ID: ID untuk endpoint tersebut.
- MODEL_ID: ID untuk model yang akan di-deploy.
-
PREVIOUS_DEPLOYED_MODEL: ID
DeployedModeldari model di endpoint yang sama. Hal ini menentukanDeployedModelyang resource pendukungnya akan digunakan kembali. Anda dapat memanggilGetEndpointuntuk mendapatkan daftar model yang di-deploy di endpoint beserta ID numeriknya. - MAX_UNAVAILABLE_REPLICAS: Jumlah replika model yang dapat dihentikan selama deployment berkelanjutan.
- MAX_SURGE_REPLICAS: Jumlah replika model tambahan yang dapat dimunculkan selama deployment berkelanjutan. Jika nilai ini ditetapkan ke nol, hanya kapasitas yang ada yang akan digunakan.
Metode HTTP dan URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:deployModel
Meminta isi JSON:
{
"deployedModel": {
"model": "projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID",
"rolloutOptions": {
"previousDeployedModel": "PREVIOUS_DEPLOYED_MODEL",
"maxUnavailableReplicas": "MAX_UNAVAILABLE_REPLICAS",
"maxSurgeReplicas": "MAX_SURGE_REPLICAS"
}
}
}
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan menerima kode status berhasil (2xx) dan respons kosong.
Jika diinginkan, Anda dapat mengganti maxSurgeReplicas dan maxUnavailableReplicas, atau keduanya, dengan nilai persentase, seperti yang ditunjukkan dalam contoh berikut.
REST
Sebelum menggunakan data permintaan mana pun, lakukan penggantian berikut:
- MAX_UNAVAILABLE_PERCENTAGE: Persentase replika model yang dapat dihentikan selama deployment berkelanjutan.
- MAX_SURGE_PERCENTAGE: Persentase replika model tambahan yang dapat dimunculkan selama deployment berkelanjutan. Jika nilai ini ditetapkan ke nol, hanya kapasitas yang ada yang akan digunakan.
Metode HTTP dan URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:deployModel
Meminta isi JSON:
{
"deployedModel": {
"model": "projects/PROJECT/locations/LOCATION_ID/models/MODEL_ID",
"rolloutOptions": {
"previousDeployedModel": "PREVIOUS_DEPLOYED_MODEL",
"maxUnavailablePercentage": "MAX_UNAVAILABLE_PERCENTAGE",
"maxSurgePercentage": "MAX_SURGE_PERCENTAGE"
}
}
}
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan menerima kode status berhasil (2xx) dan respons kosong.
Me-roll back deployment berkelanjutan
Untuk me-roll back deployment berkelanjutan, mulai deployment berkelanjutan baru dari model sebelumnya, menggunakan ID DeployedModel deployment berkelanjutan yang sedang berlangsung sebagai
previousDeployedModel.
Untuk mendapatkan ID DeployedModel untuk deployment yang sedang berlangsung, tetapkan parameter allDeploymentStates=true dalam panggilan ke GetEndpoint, seperti yang ditunjukkan dalam contoh berikut.
REST
Sebelum menggunakan data permintaan mana pun, lakukan penggantian berikut:
- LOCATION_ID: Region tempat Anda menggunakan Vertex AI.
- PROJECT_ID: Project ID Anda.
- ENDPOINT_ID: ID untuk endpoint tersebut.
Metode HTTP dan URL:
GET https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID?allDeploymentStates=true
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan melihat respons JSON seperti berikut:
{
"name": "projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID",
"displayName": "rolling-deployments-endpoint",
"deployedModels": [
{
"id": "2718281828459045",
"model": "projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID@1",
"displayName": "rd-test-model",
"createTime": "2024-09-11T21:37:48.522692Z",
"dedicatedResources": {
"machineSpec": {
"machineType": "e2-standard-2"
},
"minReplicaCount": 5,
"maxReplicaCount": 5
},
"modelVersionId": "1",
"state": "BEING_DEPLOYED"
}
],
"etag": "AMEw9yMs3TdZMn8CUg-3DY3wS74bkIaTDQhqJ7-Ld_Zp7wgT8gsEfJlrCOyg67lr9dwn",
"createTime": "2024-09-11T21:22:36.588538Z",
"updateTime": "2024-09-11T21:27:28.563579Z",
"dedicatedEndpointEnabled": true,
"dedicatedEndpointDns": "ENDPOINT_ID.LOCATION_ID-PROJECT_ID.prediction.vertexai.goog"
}
Kendala dan batasan
DeployedModelsebelumnya harus berada di endpoint yang sama denganDeployedModelbaru.- Anda tidak dapat membuat beberapa deployment berkelanjutan dengan
previousDeployedModelyang sama. - Anda tidak dapat membuat deployment berkelanjutan di atas
DeployedModelyang belum sepenuhnya di-deploy. Pengecualian: JikapreviousDeployedModelitu sendiri adalah deployment berkelanjutan yang sedang berlangsung, deployment berkelanjutan baru dapat dibuat di atasnya. Hal ini memungkinkan me-roll back deployment yang mulai gagal. - Model sebelumnya tidak otomatis di-undeploy setelah deployment berkelanjutan berhasil diselesaikan. Anda dapat meng-undeploy model secara manual.
- Untuk deployment berkelanjutan di endpoint publik bersama,
predictRoutedanhealthRouteuntuk model baru harus sama dengan model sebelumnya. - Deployment berkelanjutan tidak kompatibel dengan cohosting model.
- Deployment berkelanjutan tidak dapat digunakan untuk model yang memerlukan penjelasan online.