Membagikan resource di seluruh deployment

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:

Meng-hosting bersama model dari beberapa 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 dan Model_B untuk berbagi satu VM, yang menjadikan keduanya sebagai bagian dari DeploymentResourcePool_X.
  • Mengelompokkan Model_C dan Model_D (yang tidak sedang berada di endpoint yang sama) untuk berbagi satu VM, yang menjadikan keduanya sebagai bagian dari DeploymentResourcePool_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:

Men-deploy model

Untuk men-deploy model ke DeploymentResourcePool, selesaikan langkah-langkah berikut:

  1. Membuat Kumpulan Resource Deployment jika perlu.
  2. Membuat Endpoint jika perlu.
  3. Mengambil ID Endpoint.
  4. 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

  1. Di konsol Google Cloud, buka halaman Kumpulan Resource Deployment Vertex AI.

    Buka Kumpulan Resource Deployment

  2. 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

  1. Di konsol Google Cloud, buka halaman Model Registry Vertex AI.

    Buka Model Registry

  2. Temukan model Anda, lalu klik Deploy ke endpoint.

  3. 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 tampilan Model untuk DeployedModel.
  • 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.