Menggunakan reservasi dengan inferensi batch

Dokumen ini menjelaskan cara menggunakan reservasi Compute Engine untuk mendapatkan tingkat jaminan yang tinggi bahwa tugas inferensi batch Anda memiliki resource virtual machine (VM) yang diperlukan untuk dijalankan.

Pemesanan adalah fitur Compute Engine. Pemesanan ini membantu memastikan bahwa Anda memiliki resource yang tersedia untuk membuat VM dengan hardware yang sama (memori dan vCPU) dan resource opsional (CPU, GPU, TPU, dan disk SSD Lokal) kapan pun Anda membutuhkannya.

Saat Anda membuat pemesanan, Compute Engine akan memverifikasi bahwa kapasitas yang diminta tersedia di zona yang ditentukan. Jika ya, Compute Engine akan mencadangkan resource, membuat pemesanan, dan hal berikut akan terjadi:

  • Anda dapat langsung menggunakan resource yang dicadangkan, dan resource tersebut tetap tersedia hingga Anda menghapus pemesanan.
  • Anda akan ditagih untuk resource yang dicadangkan dengan tarif on-demand yang sama seperti VM yang berjalan, termasuk diskon apa pun yang berlaku, hingga reservasi dihapus. VM yang menggunakan pemesanan tidak dikenakan biaya terpisah. Anda hanya ditagih untuk resource di luar reservasi, seperti disk atau alamat IP. Untuk mempelajari lebih lanjut, lihat harga untuk reservasi.

Batasan dan persyaratan

Saat menggunakan reservasi Compute Engine dengan Vertex AI, pertimbangkan batasan dan persyaratan berikut:

  • Vertex AI hanya dapat menggunakan reservasi untuk CPU, GPU VM, atau TPU (Pratinjau).
  • Vertex AI tidak dapat menggunakan reservasi VM yang memiliki disk SSD Lokal yang terpasang secara manual.
  • Penggunaan reservasi Compute Engine dengan Vertex AI hanya didukung untuk pelatihan dan inferensi kustom serta untuk Vertex AI Workbench (Pratinjau).
  • Properti VM pemesanan harus sama persis dengan beban kerja Vertex AI Anda untuk menggunakan pemesanan. Misalnya, jika reservasi menentukan jenis mesin a2-ultragpu-8g, maka beban kerja Vertex AI hanya dapat menggunakan reservasi jika juga menggunakan jenis mesin a2-ultragpu-8g. Lihat Persyaratan.
  • Untuk menggunakan pemesanan bersama VM GPU atau TPU, Anda harus menggunakannya menggunakan project pemiliknya atau project konsumen yang memiliki akses ke pemesanan tersebut. Lihat Cara kerja pemesanan bersama.
  • Untuk menggunakan reservasi SPECIFIC_RESERVATION, berikan peran IAM Compute Viewer kepada akun layanan Vertex AI di project yang memiliki reservasi (service-${PROJECT_NUMBER}@gcp-sa-aiplatform., dengan PROJECT_NUMBER adalah nomor project dari project yang menggunakan reservasi).
  • Layanan dan kemampuan berikut tidak didukung saat menggunakan reservasi Compute Engine dengan inferensi batch Vertex AI:

    • Kepatuhan terhadap Federal Risk and Authorization Management Program (FedRAMP)

Penagihan

Saat menggunakan pemesanan Compute Engine, Anda akan ditagih untuk hal-hal berikut:

  • Harga Compute Engine untuk resource Compute Engine, termasuk diskon abonemen (CUD) yang berlaku. Lihat harga Compute Engine.
  • Biaya pengelolaan inferensi batch Vertex AI selain penggunaan infrastruktur Anda. Lihat Harga prediksi.

Sebelum memulai

Mengizinkan penggunaan reservasi

Sebelum menggunakan reservasi CPU, VM GPU, atau TPU, Anda harus menetapkan kebijakan berbagi untuk mengizinkan Vertex AI menggunakan reservasi tersebut. Untuk melakukannya, gunakan salah satu metode berikut:

Mengizinkan konsumsi saat membuat reservasi

Saat membuat pemesanan satu project atau pemesanan bersama VM GPU, Anda dapat mengizinkan Vertex AI menggunakan pemesanan sebagai berikut:

  • Jika Anda menggunakan konsol Google Cloud , di bagian Layanan Google Cloud, pilih Bagikan reservasi.
  • Jika Anda menggunakan Google Cloud CLI, sertakan flag --reservation-sharing-policy yang ditetapkan ke ALLOW_ALL.
  • Jika Anda menggunakan REST API, sertakan kolom serviceShareType yang ditetapkan ke ALLOW_ALL di isi permintaan.

Mengizinkan konsumsi dalam reservasi yang ada

Anda dapat mengubah pemesanan yang dibuat secara otomatis untuk VM GPU atau TPU untuk pemesanan untuk masa mendatang hanya setelah waktu mulai pemesanan.

Untuk mengizinkan Vertex AI menggunakan reservasi yang ada, gunakan salah satu metode berikut:

Memverifikasi bahwa reservasi telah digunakan

Untuk memverifikasi bahwa pemesanan sedang digunakan, lihat Memverifikasi pemakaian pemesanan dalam dokumentasi Compute Engine.

Mendapatkan inferensi batch menggunakan reservasi

Untuk membuat permintaan inferensi batch yang menggunakan reservasi Compute Engine untuk VM GPU, Anda dapat menggunakan REST API dan memilih Cloud Storage atau BigQuery untuk sumber dan tujuan.

Cloud Storage

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • LOCATION_ID: Region tempat model disimpan dan tugas prediksi batch dijalankan. Contoh, us-central1.

  • PROJECT_ID: Project tempat reservasi dibuat. Untuk menggunakan pemesanan bersama dari project lain, Anda harus membagikan pemesanan tersebut ke project itu. Untuk mengetahui informasi selengkapnya, lihat Mengubah project konsumen dalam pemesanan bersama.

  • BATCH_JOB_NAME: Nama tampilan untuk tugas prediksi batch.

  • MODEL_ID: ID untuk model yang akan digunakan untuk membuat prediksi.

  • INPUT_FORMAT: Format data input: jsonl, csv, tf-record, tf-record-gzip, atau file-list.

  • INPUT_URI: Cloud Storage URI data input Anda. Dapat berisi karakter pengganti.

  • OUTPUT_DIRECTORY: Cloud Storage URI dari direktori tempat Anda ingin Vertex AI menyimpan output.

  • MACHINE_TYPE: Resource mesin yang akan digunakan untuk tugas prediksi batch ini.

  • ACCELERATOR_TYPE: Jenis akselerator yang akan dipasang ke mesin. Untuk mengetahui informasi selengkapnya tentang jenis GPU yang didukung setiap jenis mesin, lihat GPU untuk beban kerja komputasi.

  • ACCELERATOR_COUNT: Jumlah akselerator yang akan dipasang ke mesin.

  • RESERVATION_AFFINITY_TYPE: Harus berupa ANY, SPECIFIC_RESERVATION, atau NONE.

    • ANY berarti VM customJob Anda dapat otomatis menggunakan reservasi apa pun dengan properti yang cocok.
    • SPECIFIC_RESERVATION berarti VM customJob hanya dapat menggunakan reservasi yang secara khusus ditargetkan oleh VM berdasarkan nama.
    • NONE berarti VM customJob Anda tidak dapat menggunakan reservasi apa pun. Menentukan NONE memiliki efek yang sama dengan menghilangkan spesifikasi afinitas reservasi.
  • BATCH_SIZE: Jumlah instance yang akan dikirim dalam setiap permintaan prediksi; default-nya adalah 64. Meningkatkan ukuran tumpukan dapat menyebabkan throughput yang lebih tinggi, tetapi juga dapat menyebabkan waktu tunggu permintaan habis.

  • STARTING_REPLICA_COUNT: Jumlah node untuk tugas prediksi batch ini.

Metode HTTP dan URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs

Isi JSON permintaan:

{
  "displayName": "BATCH_JOB_NAME",
  "model": "projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID",
  "inputConfig": {
    "instancesFormat": "INPUT_FORMAT",
    "gcsSource": {
      "uris": ["INPUT_URI"],
    },
  },
  "outputConfig": {
    "predictionsFormat": "jsonl",
    "gcsDestination": {
      "outputUriPrefix": "OUTPUT_DIRECTORY",
    },
  },
  "dedicatedResources" : {
    "machineSpec" : {
      "machineType": MACHINE_TYPE,
      "acceleratorType": "ACCELERATOR_TYPE",
      "acceleratorCount": ACCELERATOR_COUNT,
      "reservationAffinity": {
        "reservationAffinityType": "RESERVATION_AFFINITY_TYPE",
        "key": "compute.googleapis.com/reservation-name",
        "values": [
          "projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME"
        ]
      }
    },
    "startingReplicaCount": STARTING_REPLICA_COUNT
  },
  "manualBatchTuningParameters": {
    "batch_size": BATCH_SIZE,
  }
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs"

PowerShell

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs" | Select-Object -Expand Content

Anda akan melihat respons JSON seperti berikut:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/batchPredictionJobs/BATCH_JOB_ID",
  "displayName": "BATCH_JOB_NAME 202005291958",
  "model": "projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID",
  "inputConfig": {
    "instancesFormat": "jsonl",
    "gcsSource": {
      "uris": [
        "INPUT_URI"
      ]
    }
  },
  "outputConfig": {
    "predictionsFormat": "jsonl",
    "gcsDestination": {
      "outputUriPrefix": "OUTPUT_DIRECTORY"
    }
  },
  "state": "JOB_STATE_PENDING",
  "createTime": "2020-05-30T02:58:44.341643Z",
  "updateTime": "2020-05-30T02:58:44.341643Z",
}

BigQuery

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • LOCATION_ID: Region tempat model disimpan dan tugas prediksi batch dijalankan. Contoh, us-central1.

  • PROJECT_ID: Project tempat reservasi dibuat. Untuk menggunakan pemesanan bersama dari project lain, Anda harus membagikan pemesanan tersebut ke project itu. Untuk mengetahui informasi selengkapnya, lihat Mengubah project konsumen dalam pemesanan bersama.

  • BATCH_JOB_NAME: Nama tampilan untuk tugas prediksi batch.

  • MODEL_ID: ID untuk model yang akan digunakan untuk membuat prediksi.

  • INPUT_PROJECT_ID: ID Google Cloud project tempat Anda ingin mendapatkan data.

  • INPUT_DATASET_NAME: Nama set data BigQuery tempat Anda ingin mengambil data.

  • INPUT_TABLE_NAME: Nama tabel BigQuery tempat Anda ingin mendapatkan data.

  • OUTPUT_PROJECT_ID: ID Google Cloud project tempat Anda ingin menyimpan output.

  • OUTPUT_DATASET_NAME: Nama set data BigQuery tujuan tempat Anda ingin menyimpan output.

  • OUTPUT_TABLE_NAME: Nama tabel tujuan BigQuery tempat Anda ingin menyimpan output.

  • MACHINE_TYPE: Resource mesin yang akan digunakan untuk tugas prediksi batch ini.

  • ACCELERATOR_TYPE: Jenis akselerator yang akan dipasang ke mesin. Untuk mengetahui informasi selengkapnya tentang jenis GPU yang didukung setiap jenis mesin, lihat GPU untuk beban kerja komputasi.

  • ACCELERATOR_COUNT: Jumlah akselerator yang akan dipasang ke mesin.

  • RESERVATION_AFFINITY_TYPE: Harus berupa ANY, SPECIFIC_RESERVATION, atau NONE.

    • ANY berarti VM customJob Anda dapat otomatis menggunakan reservasi apa pun dengan properti yang cocok.
    • SPECIFIC_RESERVATION berarti VM customJob hanya dapat menggunakan reservasi yang secara khusus ditargetkan oleh VM berdasarkan nama.
    • NONE berarti VM customJob Anda tidak dapat menggunakan reservasi apa pun. Menentukan NONE memiliki efek yang sama dengan menghilangkan spesifikasi afinitas reservasi.
  • BATCH_SIZE: Jumlah instance yang akan dikirim dalam setiap permintaan prediksi; default-nya adalah 64. Meningkatkan ukuran tumpukan dapat menyebabkan throughput yang lebih tinggi, tetapi juga dapat menyebabkan waktu tunggu permintaan habis.

  • STARTING_REPLICA_COUNT: Jumlah node untuk tugas prediksi batch ini.

Metode HTTP dan URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs

Isi JSON permintaan:

{
  "displayName": "BATCH_JOB_NAME",
  "model": "projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID",
  "inputConfig": {
    "instancesFormat": "bigquery",
    "bigquerySource": {
      "inputUri": "bq://INPUT_PROJECT_ID.INPUT_DATASET_NAME.INPUT_TABLE_NAME"
    },
  },
  "outputConfig": {
    "predictionsFormat":"bigquery",
    "bigqueryDestination":{
      "outputUri": "bq://OUTPUT_PROJECT_ID.OUTPUT_DATASET_NAME.OUTPUT_TABLE_NAME"
    }
  },
  "dedicatedResources" : {
    "machineSpec" : {
      "machineType": MACHINE_TYPE,
      "acceleratorType": "ACCELERATOR_TYPE",
      "acceleratorCount": ACCELERATOR_COUNT,
      "reservationAffinity": {
        "reservationAffinityType": "RESERVATION_AFFINITY_TYPE",
        "key": "compute.googleapis.com/reservation-name",
        "values": [
          "projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME"
        ]
      }
    },
    "startingReplicaCount": STARTING_REPLICA_COUNT
  },
  "manualBatchTuningParameters": {
    "batch_size": BATCH_SIZE,
  }
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs"

PowerShell

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs" | Select-Object -Expand Content

Anda akan melihat respons JSON seperti berikut:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/batchPredictionJobs/BATCH_JOB_ID",
  "displayName": "BATCH_JOB_NAME 202005291958",
  "model": "projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID",
  "inputConfig": {
    "instancesFormat": "jsonl",
    "bigquerySource": {
      "uris": [
        "INPUT_URI"
      ]
    }
  },
  "outputConfig": {
    "predictionsFormat": "jsonl",
    "bigqueryDestination": {
      "outputUri": "OUTPUT_URI"
    }
  },
  "state": "JOB_STATE_PENDING",
  "createTime": "2020-05-30T02:58:44.341643Z",
  "updateTime": "2020-05-30T02:58:44.341643Z",
}

Mengambil hasil inferensi batch

Setelah tugas inferensi batch selesai, output inferensi akan disimpan di bucket Cloud Storage atau lokasi BigQuery yang Anda tentukan dalam permintaan Anda.

Langkah berikutnya