Menggunakan deployment bertahap untuk mengganti model yang di-deploy

Dalam deployment rolling, 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, pemisahan traffic dan nilai dedicatedResources sama dengan deployment sebelumnya. Setelah deployment bertahap 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 menentukan nilai baru untuk kolom ini secara opsional.

Saat model di-deploy menggunakan deployment rolling, DeployedModel baru akan dibuat. DeployedModel baru menerima ID baru yang berbeda dengan ID sebelumnya. Kode ini juga menerima nilai revisionNumber baru di kolom rolloutOptions.

Jika ada beberapa deployment rolling yang menargetkan resource pendukung yang sama, DeployedModel dengan revisionNumber tertinggi akan diperlakukan sebagai status akhir yang diinginkan.

Seiring berjalannya deployment bertahap, semua replika yang ada untuk DeployedModel sebelumnya akan diganti dengan replika DeployedModel baru. Hal ini terjadi dengan cepat, dan replika diperbarui setiap kali deployment memiliki replika yang tersedia secukupnya atau kapasitas lonjakan yang cukup untuk menampilkan replika tambahan.

Selain itu, seiring deployment bertahap berlangsung, traffic untuk DeployedModel lama secara bertahap dimigrasikan ke DeployedModel baru. Traffic di-load balancing secara proporsional dengan jumlah replika siap pakai dari setiap DeployedModel.

Jika replika baru deployment rolling tidak pernah siap karena rute statusnya secara konsisten menampilkan kode respons non-200, traffic tidak akan dikirim ke replika yang belum siap tersebut. Dalam hal ini, deployment rolling pada akhirnya gagal, dan replika dikembalikan ke DeployedModel sebelumnya.

Memulai deployment bertahap

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 DeployedModel model di endpoint yang sama. Hal ini menentukan DeployedModel yang resource pendukungnya akan digunakan kembali. Anda dapat memanggil GetEndpoint untuk mendapatkan daftar model yang di-deploy di endpoint beserta ID numerik-nya.
  • MAX_UNAVAILABLE_REPLICAS: Jumlah replika model yang dapat dinonaktifkan selama deployment bertahap.
  • MAX_SURGE_REPLICAS: Jumlah replika model tambahan yang dapat diaktifkan selama deployment bertahap. Jika 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 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 dinonaktifkan selama deployment bertahap.
  • MAX_SURGE_PERCENTAGE: Persentase replika model tambahan yang dapat diaktifkan selama deployment bertahap. Jika 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 yang menandakan proses berhasil (2xx), dan sebuah respons kosong.

Me-roll back deployment bertahap

Untuk melakukan rollback 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.

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 pembatasan

  • DeployedModel sebelumnya harus berada di endpoint yang sama dengan DeployedModel baru.
  • Anda tidak dapat membuat beberapa deployment rolling dengan previousDeployedModel yang sama.
  • Anda tidak dapat membuat deployment rolling di atas DeployedModel yang tidak sepenuhnya di-deploy. Pengecualian: Jika previousDeployedModel itu sendiri adalah deployment berkelanjutan yang sedang berlangsung, deployment berkelanjutan baru dapat dibuat di atasnya. Hal ini memungkinkan rollback deployment yang mulai gagal.
  • Model sebelumnya tidak otomatis di-undeploy setelah deployment bertahap berhasil diselesaikan. Anda dapat men-undeploy model secara manual.
  • Untuk deployment bertahap di endpoint publik bersama, predictRoute dan healthRoute untuk model baru harus sama dengan model sebelumnya.
  • Deployment bertahap tidak kompatibel dengan hosting bersama model.
  • Deployment rolling tidak dapat digunakan untuk model yang memerlukan penjelasan online.