Menggunakan Spot VM dengan inferensi

Ringkasan

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

Untuk mempelajari lebih lanjut, lihat Spot VM.

Batasan dan persyaratan

Pertimbangkan batasan dan persyaratan berikut saat menggunakan Spot VM dengan Agent Platform:

  • Semua Spot VM batasan berlaku saat menggunakan Spot VM dengan Agent Platform.
  • Penggunaan Spot VM dengan Agent Platform hanya didukung untuk pelatihan dan inferensi tanpa server.
  • Penggunaan Spot VM dengan Pod TPU tidak didukung.
  • Pengiriman tugas melalui konsol tidak didukung. Google Cloud

Penagihan

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

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

Penanganan preemption

Spot VM dapat diklaim kembali oleh Compute Engine kapan saja. Untuk mempelajari cara memaksimalkan Spot VM, lihat Praktik terbaik Spot VM.

Mendapatkan inferensi menggunakan Spot VM

Untuk menggunakan Spot VM saat men-deploy model untuk mendapatkan inferensi, Anda dapat menggunakan REST API atau Agent Platform SDK untuk Python.

REST

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • LOCATION_ID: Region tempat Anda menggunakan Agent Platform.
  • PROJECT_ID: [Project ID](/resource-manager/docs/creating-managing-projects#identifiers) Anda. .
  • ENDPOINT_ID: ID untuk endpoint.
  • 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 yang akan digunakan untuk setiap replika.
  • MIN_REPLICA_COUNT: Jumlah minimum node untuk deployment ini. Jumlah node dapat ditingkatkan atau diturunkan sesuai kebutuhan beban inferensi, hingga mencapai jumlah maksimum node dan 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 inferensi, hingga mencapai jumlah node ini dan tidak pernah kurang dari jumlah minimum node.
  • 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 Agent Platform SDK untuk Python, lihat Menginstal Agent Platform SDK untuk Python. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Agent Platform 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 berikutnya