Men-deploy model ke endpoint

Sebelum dapat mendapatkan prediksi online dari model terlatih, Anda harus men-deploy model ke endpoint. Hal ini dapat dilakukan dengan menggunakan konsol Google Cloud, Google Cloud CLI, atau Vertex AI API.

Dokumen ini menjelaskan proses deployment model ke endpoint.

Yang terjadi saat Anda men-deploy model

Men-deploy model akan mengaitkan resource fisik dengan model tersebut, sehingga dapat menyajikan prediksi online dengan latensi rendah.

Anda dapat men-deploy beberapa model ke satu endpoint, atau men-deploy model yang sama ke beberapa endpoint. Untuk mengetahui informasi selengkapnya, lihat Alasan men-deploy lebih dari satu model ke endpoint yang sama.

Bersiap untuk men-deploy model ke endpoint

Selama deployment model, Anda membuat keputusan penting berikut terkait cara menjalankan prediksi online:

Resource yang dibuat Setelan yang ditentukan saat pembuatan resource
Endpoint Lokasi tempat menjalankan prediksi
Model Container yang akan digunakan (ModelContainerSpec)
DeployedModel Resource komputasi yang akan digunakan untuk prediksi online

Setelah model di-deploy ke endpoint, setelan deployment ini tidak dapat diubah. Untuk mengubahnya, Anda harus men-deploy ulang model.

Langkah pertama dalam proses deployment adalah menentukan jenis endpoint yang akan digunakan. Untuk informasi selengkapnya, lihat Memilih jenis endpoint.

Selanjutnya, pastikan model terlihat di Vertex AI Model Registry. Hal ini diperlukan agar model dapat di-deploy. Untuk informasi tentang Model Registry, termasuk cara mengimpor artefak model atau membuatnya langsung di Model Registry, lihat Pengantar Vertex AI Model Registry.

Keputusan berikutnya yang harus dibuat adalah resource komputasi yang akan digunakan untuk menayangkan model. Jenis pelatihan model (AutoML atau kustom) dan jenis data (AutoML) menentukan jenis resource fisik yang tersedia untuk model. Setelah deployment model, Anda dapat mutate beberapa resource tersebut tanpa harus membuat deployment baru.

Resource endpoint menyediakan endpoint layanan (URL) yang Anda gunakan untuk meminta prediksi. Contoh:

   https://us-central1-aiplatform.googleapis.com/v1/projects/{project}/locations/{location}/endpoints/{endpoint}:predict

Men-deploy model ke endpoint

Anda dapat men-deploy model ke endpoint dengan menggunakan konsol Google Cloud atau dengan menggunakan gcloud CLI atau Vertex AI API.

Men-deploy model ke endpoint publik menggunakan konsol Google Cloud

Di Konsol Google Cloud, Anda dapat men-deploy model ke endpoint publik khusus atau bersama yang sudah ada, atau membuat endpoint baru selama proses deployment. Untuk mengetahui detailnya, lihat Men-deploy model menggunakan Konsol Google Cloud.

Men-deploy model ke endpoint publik menggunakan gcloud CLI atau Vertex AI API

Saat men-deploy model menggunakan gcloud CLI atau Vertex AI API, Anda harus membuat endpoint khusus atau bersama terlebih dahulu, lalu men-deploy model ke endpoint tersebut. Untuk mengetahui detailnya, baca artikel berikut:

  1. Membuat endpoint publik khusus atau bersama
  2. Men-deploy model menggunakan gcloud CLI atau Vertex AI API

Men-deploy model ke endpoint Private Service Connect

Untuk mengetahui detailnya, lihat Menggunakan endpoint Private Service Connect untuk prediksi online.

Menggunakan deployment bertahap untuk mengupdate model yang di-deploy

Anda dapat menggunakan deployment rolling untuk mengganti model yang di-deploy dengan versi baru dari model yang sama. Model baru menggunakan kembali resource komputasi dari model sebelumnya. Untuk mengetahui detailnya, lihat Menggunakan deployment rolling untuk mengganti model yang di-deploy.

Membatalkan deployment model dan menghapus endpoint

Anda dapat membatalkan deployment model dan menghapus endpoint. Untuk mengetahui detailnya, lihat Membatalkan deployment model dan menghapus endpoint.

Alasan untuk men-deploy lebih dari satu model ke endpoint yang sama

Dengan men-deploy dua model ke endpoint yang sama, Anda dapat mengganti satu model dengan model lainnya secara bertahap. Misalnya, Anda sedang menggunakan suatu model, dan menemukan cara untuk meningkatkan akurasi model tersebut dengan data pelatihan baru. Namun, Anda tidak ingin mengupdate aplikasi agar mengarah ke URL endpoint baru, dan tidak ingin membuat perubahan tiba-tiba dalam aplikasi. Anda dapat menambahkan model baru ke endpoint yang sama, menyalurkan sebagian kecil traffic, dan meningkatkan pemisahan traffic untuk model baru secara bertahap hingga model tersebut menyalurkan semua traffic.

Karena resource dikaitkan dengan model, bukan endpoint, Anda dapat men-deploy model dari berbagai jenis ke endpoint yang sama. Namun, praktik terbaiknya adalah men-deploy model dari jenis tertentu (misalnya, AutoML tabular atau dilatih khusus) ke endpoint. Konfigurasi ini lebih mudah dikelola.

Alasan untuk men-deploy model ke lebih dari satu endpoint

Anda mungkin ingin men-deploy model dengan resource yang berbeda untuk lingkungan aplikasi yang berbeda, seperti pengujian dan produksi. Anda mungkin juga ingin mendukung SLO yang berbeda untuk permintaan prediksi Anda. Mungkin salah satu aplikasi Anda memiliki kebutuhan performa yang jauh lebih tinggi daripada yang lain. Dalam hal ini, Anda dapat men-deploy model tersebut ke endpoint berperforma lebih tinggi dengan lebih banyak resource mesin. Untuk mengoptimalkan biaya, Anda juga dapat men-deploy model ke endpoint berperforma lebih rendah dengan resource mesin yang lebih sedikit.

Perilaku penskalaan

Saat men-deploy model untuk prediksi online sebagai DeployedModel, Anda dapat mengonfigurasi node prediksi agar diskalakan secara otomatis. Untuk melakukannya, tetapkan dedicatedResources.maxReplicaCount ke nilai yang lebih besar dari dedicatedResources.minReplicaCount.

Saat mengonfigurasi DeployedModel, Anda harus menetapkan dedicatedResources.minReplicaCount setidaknya ke nilai 1. Dengan kata lain, Anda tidak dapat mengonfigurasi DeployedModel untuk diskalakan ke 0 node prediksi jika tidak digunakan.

Secara default, operasi deployment hanya dianggap berhasil jika jumlah node prediksi mencapai dedicatedResources.minReplicaCount sebelum nilai waktu tunggu permintaan deployment. Jika tidak, deployment akan ditandai sebagai gagal, dan resource yang mendasarinya akan dirilis.

Deployment dan mutasi yang berhasil sebagian

Anda dapat mengubah perilaku deployment default dengan menetapkan dedicatedResources.requiredReplicaCount ke nilai yang kurang dari dedicatedResources.minReplicaCount. Dalam hal ini, saat jumlah node prediksi mencapai dedicatedResources.requiredReplicaCount, operasi deployment akan ditandai sebagai berhasil, meskipun belum selesai. Deployment berlanjut hingga dedicatedResources.minReplicaCount dicapai. Jika dedicatedResources.minReplicaCount tidak tercapai sebelum waktu permintaan deployment, operasi masih berhasil, tetapi pesan error untuk replika yang gagal akan ditampilkan di DeployedModel.status.message.

Kuota untuk Penayangan model kustom dihitung berdasarkan penggunaan resource komputasi real-time dari model yang di-deploy Anda. Jika jumlah maxReplicaCount untuk semua deployment di project Anda lebih besar dari kuota project, beberapa deployment mungkin gagal melakukan penskalaan otomatis karena kuota habis.

Endpoint diskalakan naik dan turun per mesin, tetapi kuota dihitung per CPU atau GPU. Misalnya, jika model Anda di-deploy ke jenis mesin a2-highgpu-2g, setiap replika aktif akan dihitung sebagai 24 CPU dan 2 GPU terhadap kuota project Anda. Untuk mengetahui informasi selengkapnya, lihat Kuota dan batas.

Node prediksi untuk prediksi batch tidak diskalakan secara otomatis. Vertex AI menggunakan BatchDedicatedResources.startingReplicaCount dan mengabaikan BatchDedicatedResources.maxReplicaCount.

Target pemanfaatan dan konfigurasi

Secara default, jika Anda men-deploy model tanpa resource GPU khusus, Vertex AI akan otomatis meningkatkan atau memperkecil skala jumlah replika sehingga penggunaan CPU cocok dengan nilai target default 60%.

Secara default, jika Anda men-deploy model dengan resource GPU khusus (jika machineSpec.accelerator_count lebih besar dari 0), Vertex AI akan otomatis meningkatkan atau memperkecil skala jumlah replika sehingga penggunaan CPU atau GPU, mana yang lebih tinggi, cocok dengan nilai target default 60%. Oleh karena itu, jika throughput prediksi Anda menyebabkan penggunaan GPU yang tinggi, tetapi tidak menggunakan CPU yang tinggi, Vertex AI akan meningkatkan skala dan penggunaan CPU akan menjadi sangat rendah sehingga terlihat dalam pemantauan. Sebaliknya, jika penampung kustom Anda kurang memanfaatkan GPU, tetapi memiliki proses tidak terkait yang meningkatkan penggunaan CPU lebih tinggi dari 60%, Vertex AI akan meningkatkan skala meskipun hal ini mungkin tidak diperlukan untuk mencapai QPS dan target latensi.

Anda dapat mengganti metrik dan target nilai minimum default dengan menentukan autoscalingMetricSpecs. Perlu diperhatikan bahwa jika deployment Anda dikonfigurasi untuk diskalakan hanya berdasarkan penggunaan CPU, deployment tidak akan ditingkatkan skalanya meskipun penggunaan GPU tinggi.

Mengelola penggunaan resource

Anda dapat memantau endpoint untuk melacak metrik seperti penggunaan CPU dan Akselerator, jumlah permintaan, latensi, serta jumlah replika saat ini dan target. Informasi ini dapat membantu Anda memahami penggunaan resource dan perilaku penskalaan endpoint.

Perlu diingat bahwa setiap replika hanya menjalankan satu container. Artinya, jika container prediksi tidak dapat sepenuhnya menggunakan resource komputasi yang dipilih, seperti kode thread tunggal untuk mesin multi-core, atau model kustom yang memanggil layanan lain sebagai bagian dari pembuatan prediksi, node Anda mungkin tidak akan meningkat skalanya.

Misalnya, jika Anda menggunakan FastAPI, atau server model apa pun yang memiliki jumlah worker atau thread yang dapat dikonfigurasi, ada banyak kasus ketika memiliki lebih dari satu worker dapat meningkatkan pemanfaatan resource sehingga dapat meningkatkan kemampuan layanan untuk menskalakan jumlah replika secara otomatis.

Kami biasanya merekomendasikan untuk memulai dengan satu worker atau thread per core. Jika Anda melihat bahwa pemakaian CPU rendah, terutama saat beban tinggi, atau skala model Anda tidak ditingkatkan karena penggunaan CPU rendah, tingkatkan jumlah pekerja. Di sisi lain, jika Anda melihat bahwa pemakaian terlalu tinggi dan latensi meningkat lebih dari yang diharapkan berdasarkan beban, coba gunakan lebih sedikit worker. Jika Anda hanya menggunakan satu worker, coba gunakan jenis mesin yang lebih kecil.

Perilaku penskalaan dan jeda

Vertex AI menyesuaikan jumlah replika setiap 15 detik menggunakan data dari periode 5 menit sebelumnya. Untuk setiap siklus 15 detik, sistem akan mengukur penggunaan server dan menghasilkan jumlah target replika berdasarkan formula berikut:

target # of replicas = Ceil(current # of replicas * (current utilization / target utilization))

Misalnya, jika Anda memiliki dua replika yang digunakan hingga 100%, targetnya adalah 4:

4 = Ceil(3.33) = Ceil(2 * (100% / 60%))

Contoh lain, jika Anda memiliki 10 replika dan pemakaian menurun menjadi 1%, targetnya adalah 1:

1 = Ceil(.167) = Ceil(10 * (1% / 60%))

Di akhir setiap siklus 15 detik, sistem akan menyesuaikan jumlah replika agar cocok dengan nilai target tertinggi dari periode 5 menit sebelumnya. Perhatikan bahwa karena nilai target tertinggi dipilih, endpoint Anda tidak akan diperkecil skalanya jika ada lonjakan penggunaan selama periode 5 menit tersebut meskipun pemanfaatan secara keseluruhan sangat rendah. Di sisi lain, jika sistem perlu ditingkatkan skalanya, sistem akan melakukannya dalam waktu 15 detik karena yang dipilih adalah nilai target tertinggi, bukan rata-rata.

Perlu diingat bahwa meskipun Vertex AI menyesuaikan jumlah replika, perlu waktu untuk memulai atau menonaktifkan replika. Dengan demikian, ada jeda tambahan sebelum endpoint dapat menyesuaikan dengan traffic. Faktor utama yang memengaruhi situasi ini mencakup:

  • Waktu untuk menyediakan dan memulai VM Compute Engine
  • Waktu untuk mendownload container dari registry
  • Waktu untuk memuat model dari penyimpanan

Cara terbaik untuk memahami perilaku penskalaan yang sebenarnya dari model Anda adalah dengan menjalankan uji beban dan mengoptimalkan karakteristik yang penting bagi model dan kasus penggunaan Anda. Jika autoscaler tidak meningkatkan skala aplikasi Anda dengan cukup cepat, sediakan min_replicas yang cukup untuk menangani traffic dasar pengukuran yang Anda harapkan.

Memperbarui konfigurasi penskalaan

Jika Anda menentukanDedicatedResources atau AutomaticResources saat men-deploy model, Anda dapat memperbarui konfigurasi penskalaan tanpa harus men-deploy ulang model dengan memanggil mutateDeployedModel.

Misalnya, permintaan berikut memperbarui max_replica, autoscaling_metric_specs, dan menonaktifkan logging container.

{
  "deployedModel": {
    "id": "2464520679043629056",
    "dedicatedResources": {
      "maxReplicaCount": 9,
      "autoscalingMetricSpecs": [
        {
          "metricName": "aiplatform.googleapis.com/prediction/online/cpu/utilization",
          "target": 50
        }
      ]
    },
    "disableContainerLogging": true
  },
  "update_mask": {
    "paths": [
      "dedicated_resources.max_replica_count",
      "dedicated_resources.autoscaling_metric_specs",
      "disable_container_logging"
    ]
  }
}

Catatan penggunaan:

  • Anda tidak dapat mengubah jenis mesin atau beralih dari DedicatedResources ke AutomaticResources atau sebaliknya. Satu-satunya kolom konfigurasi penskalaan yang dapat Anda ubah adalah: min_replica, max_replica, required_replica, dan AutoscalingMetricSpec (khusus DedicatedResources).
  • Anda harus mencantumkan setiap kolom yang perlu diperbarui di updateMask. Kolom yang tidak tercantum akan diabaikan.
  • DeployedModel harus dalam status DEPLOYED. Hanya boleh ada maksimal satu operasi mutasi aktif per model yang di-deploy.
  • mutateDeployedModel juga memungkinkan Anda mengaktifkan atau menonaktifkan logging penampung. Untuk mengetahui informasi selengkapnya, lihat Logging prediksi online.

Langkah berikutnya