Menggunakan Spot VM dengan prediksi

Ringkasan

Anda dapat mengurangi biaya untuk menjalankan tugas prediksi menggunakan Spot VM. Spot VM adalah instance virtual machine (VM) yang merupakan kelebihan kapasitas Compute Engine. Spot VM memiliki diskon yang signifikan, tetapi Compute Engine dapat menghentikan atau menghapus (mem-preempt) Spot VM secara preemptive untuk mengambil kembali kapasitas kapan saja.

Untuk mempelajari lebih lanjut, lihat Spot VM.

Batasan dan persyaratan

Pertimbangkan batasan dan persyaratan berikut saat menggunakan VM Spot dengan Vertex AI:

  • Semua batasan VM Spot berlaku saat menggunakan VM Spot dengan Vertex AI.
  • Penggunaan Spot VM dengan Vertex AI hanya didukung untuk pelatihan dan prediksi kustom.
  • Penggunaan Spot VM dengan Pod TPU tidak didukung.
  • Mengirim tugas melalui konsol Google Cloud tidak didukung.

Penagihan

Jika workload Anda fault-tolerant dan dapat menahan kemungkinan preemption VM, VM Spot dapat mengurangi biaya komputasi Anda secara signifikan. Jika beberapa VM Anda berhenti selama pemrosesan, tugas akan berjalan lambat tetapi tidak sepenuhnya berhenti. Spot VM akan menyelesaikan tugas batch processing tanpa menempatkan beban tambahan di VM yang ada, tanpa mengharuskan Anda membayar harga penuh untuk VM standar tambahan. Lihat Penanganan prioritas.

Saat menggunakan Spot VM, Anda akan ditagih berdasarkan durasi tugas dan jenis mesin. Anda tidak membayar untuk waktu saat tugas berada dalam antrean atau didahului.

Penanganan preemption

Spot VM dapat diklaim kembali oleh Compute Engine kapan saja. Oleh karena itu, tugas prediksi Anda harus fault-tolerant untuk mendapatkan manfaat maksimal dari Spot VM. Saat Spot VM di-preempt, tugas prediksi gagal dengan error STOCKOUT dan Compute Engine mencoba memulai ulang tugas hingga enam kali. Untuk mempelajari cara memaksimalkan Spot VM, lihat Praktik terbaik Spot VM.

Berikut adalah beberapa metode yang dapat Anda gunakan untuk membuat tugas prediksi tahan error:

  • Buat titik pemeriksaan untuk menyimpan progres. Dengan menyimpan progres model secara berkala, Anda dapat memastikan bahwa tugas prediksi yang dihentikan dapat dilanjutkan dari checkpoint terakhir yang disimpan, bukan memulai dari awal.
  • Gunakan skrip shutdown. Saat Compute Engine melakukan preempt Spot VM, Anda dapat menggunakan skrip penonaktifan yang mencoba melakukan tindakan pembersihan sebelum VM di-preempt. Untuk mempelajari lebih lanjut, lihat Menangani preemption dengan skrip shutdown.

Mendapatkan prediksi menggunakan Spot VM

Untuk menggunakan VM Spot saat men-deploy model untuk mendapatkan prediksi, Anda dapat menggunakan REST API atau Vertex AI SDK untuk Python.

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.
  • DEPLOYED_MODEL_NAME: Nama untuk DeployedModel. Anda juga dapat menggunakan nama tampilan Model untuk DeployedModel.
  • 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: Opsional. Jenis akselerator yang akan dipasang ke mesin. Pelajari lebih lanjut.
  • ACCELERATOR_COUNT: Opsional. Jumlah akselerator untuk setiap replika yang akan digunakan.
  • 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 ditingkatkan atau diturunkan sesuai kebutuhan beban prediksi, hingga mencapai jumlah maksimum node dan tidak pernah kurang dari jumlah ini.
  • 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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:deployModel

Meminta isi JSON:

{


"acceleratorCount": 1}, "spot": true, "minReplicaCount": 1, "maxReplicaCount": 1}}, "trafficSplit": {"0": 100}}' \
  "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:deployModel"

  "deployedModel": {
    "model": "projects/PROJECT/locations/us-central1/models/MODEL_ID",
    "displayName": "DEPLOYED_MODEL_NAME",
    "enableContainerLogging": true,
    "dedicatedResources": {
      "machineSpec": {
        "machineType": "MACHINE_TYPE",
        "acceleratorType": "ACCELERATOR_TYPE",
        "acceleratorCount": ACCELERATOR_COUNT
      },
      "spot": true,
      "minReplicaCount": MIN_REPLICA_COUNT,
      "maxReplicaCount": MAX_REPLICA_COUNT
    },
  },
  "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_ID/locations/LOCATION/endpoints/ENDPOINT_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1beta1.DeployModelOperationMetadata",
    "genericMetadata": {
      "createTime": "2020-10-19T17:53:16.502088Z",
      "updateTime": "2020-10-19T17:53:16.502088Z"
    }
  }
}

Python

Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Vertex AI SDK untuk Python.

endpoint5.deploy(
    model = model,
    deployed_model_display_name=DEPLOYED_NAME,
    traffic_split=TRAFFIC_SPLIT,
    machine_type="MACHINE_TYPE",
    accelerator_type="ACCELERATOR_TYPE",
    accelerator_count=ACCELERATOR_COUNT,
    min_replica_count=MIN_REPLICA_COUNT,
    max_replica_count=MAX_REPLICA_COUNT,
    spot=True,
    sync=True
)

Langkah selanjutnya