Dalam deployment bertahap, model yang di-deploy diganti dengan versi baru dari model yang sama. Model baru menggunakan kembali resource komputasi dari model sebelumnya.
Dalam permintaan deployment bertahap, nilai pemisahan traffic dan dedicatedResources
sama seperti deployment sebelumnya. Setelah deployment bertahap selesai, pemisahan traffic 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) disetel ke nilai yang sama
dengan DeployedModel sebelumnya secara default. Namun, Anda dapat secara opsional
menentukan nilai baru untuk kolom ini.
Saat model di-deploy menggunakan deployment bertahap, DeployedModel baru akan
dibuat. DeployedModel baru menerima ID baru yang berbeda dari ID sebelumnya. Objek ini juga menerima nilai revisionNumber baru di kolom
rolloutOptions.
Jika ada beberapa deployment bertahap yang menargetkan resource pendukung yang sama,
DeployedModel dengan revisionNumber tertinggi akan diperlakukan sebagai
status akhir yang diinginkan.
Seiring progres deployment bertahap, semua replika yang ada untuk DeployedModel sebelumnya diganti dengan replika DeployedModel baru. Hal ini terjadi dengan cepat, dan replika diperbarui setiap kali deployment memiliki replika yang tersedia dalam jumlah yang cukup atau kapasitas lonjakan yang cukup untuk memunculkan replika tambahan.
Selain itu, saat deployment bertahap berlangsung, traffic untuk DeployedModel lama akan dimigrasikan secara bertahap ke DeployedModel baru. Traffic di-load balance secara proporsional dengan jumlah replika DeployedModel yang siap ditayangkan.
Jika replika baru deployment bertahap tidak pernah siap karena rute health-nya secara konsisten menampilkan kode respons non-200, traffic tidak akan dikirim ke replika yang belum siap tersebut. Dalam hal ini, deployment bertahap akhirnya
gagal, dan replika dikembalikan ke DeployedModel sebelumnya.
Memulai deployment berkelanjutan
Untuk memulai deployment bertahap, 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
DeployedModelmodel di endpoint yang sama. Bagian 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 bertahap.
- MAX_SURGE_REPLICAS: Jumlah replika model tambahan yang dapat diaktifkan selama deployment bertahap. Jika disetel ke nol, hanya kapasitas yang ada yang 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 yang menandakan proses berhasil (2xx), dan sebuah respons kosong.
Jika diinginkan, Anda dapat mengganti maxSurgeReplicas dan maxUnavailableReplicas,
atau keduanya, dengan nilai persentase, seperti yang ditunjukkan pada contoh berikut.
REST
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- MAX_UNAVAILABLE_PERCENTAGE: Persentase replika model yang dapat dihentikan selama deployment bertahap.
- MAX_SURGE_PERCENTAGE: Persentase replika model tambahan yang dapat diaktifkan selama deployment bertahap. Jika disetel ke nol, hanya kapasitas yang ada yang 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 yang menandakan proses berhasil (2xx), dan sebuah respons kosong.
Me-roll back deployment bertahap
Untuk mengembalikan deployment berkelanjutan, mulai deployment berkelanjutan baru dari
model sebelumnya, menggunakan ID DeployedModel dari 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.
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, 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"
}
Batasan dan keterbatasan
DeployedModelsebelumnya harus berada di endpoint yang sama denganDeployedModelbaru.- Anda tidak dapat membuat beberapa deployment bertahap dengan
previousDeployedModelyang sama. - Anda tidak dapat membuat deployment bertahap di atas
DeployedModelyang belum di-deploy sepenuhnya. Pengecualian: JikapreviousDeployedModelitu sendiri adalah deployment berkelanjutan yang sedang berlangsung, maka deployment berkelanjutan baru dapat dibuat di atasnya. Hal ini memungkinkan rollback deployment yang mulai gagal. - Model sebelumnya tidak otomatis di-un-deploy setelah deployment bertahap berhasil diselesaikan. Anda dapat membatalkan deployment model secara manual.
- Untuk deployment bertahap di endpoint publik bersama,
predictRoutedanhealthRouteuntuk model baru harus sama dengan model sebelumnya. - Deployment bertahap tidak kompatibel dengan hosting bersama model.
- Deployment bertahap tidak dapat digunakan untuk model yang memerlukan penjelasan online.