Menggunakan reservasi dengan pelatihan

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

Pemesanan adalah fitur Compute Engine. Pemesanan 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 memesan resource, membuat pemesanan, dan hal berikut akan terjadi:

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

Batasan dan persyaratan

Saat menggunakan pemesanan Compute Engine dengan Agent Platform, pertimbangkan batasan dan persyaratan berikut:

  • Agent Platform hanya dapat menggunakan pemesanan untuk CPU, VM GPU, atau TPU (Pratinjau).
  • Agent Platform tidak dapat menggunakan pemesanan VM yang memiliki disk SSD Lokal yang dipasang secara manual.
  • Penggunaan pemesanan Compute Engine dengan Agent Platform hanya didukung untuk pelatihan serverless, inferensi, dan Gemini Enterprise Agent Platform Workbench (Pratinjau).
  • Properti VM pemesanan harus sama persis dengan workload Agent Platform Anda untuk menggunakan pemesanan. Misalnya, jika pemesanan menentukan jenis mesin a2-ultragpu-8g, workload Agent Platform hanya dapat menggunakan pemesanan tersebut jika workload tersebut 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 menggunakan pemesanan bersama tersebut. Lihat Cara kerja pemesanan bersama.
  • Untuk mendukung update rutin deployment Agent Platform, sebaiknya tingkatkan jumlah VM Anda setidaknya 1 VM tambahan untuk setiap deployment serentak.
  • Flex Start untuk Dynamic Workload Scheduler dan menjalankan tugas pelatihan pada resource persisten didukung, kecuali saat menggunakan pemesanan Compute Engine dengan pelatihan Agent Platform.

Penagihan

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

Sebelum memulai

Mengizinkan reservasi digunakan

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

Mengizinkan pemakaian saat membuat pemesanan

Saat membuat project tunggal atau pemesanan bersama VM GPU, Anda dapat mengizinkan Agent Platform menggunakan pemesanan sebagai berikut:

  • Jika Anda menggunakan konsol Google Cloud , di bagian Google Cloud services, pilih Share reservation.
  • 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 dalam isi permintaan.

Mengizinkan pemakaian reservasi yang ada

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

Agar Agent Platform dapat menggunakan reservasi yang ada, gunakan salah satu metode berikut:

Memverifikasi bahwa reservasi digunakan

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

Membuat tugas pelatihan serverless dengan pemesanan

Gunakan REST API untuk membuat tugas pelatihan serverless yang menggunakan pemesanan VM GPU Compute Engine.

Cara kerja afinitas dan validasi pemesanan

Saat Anda mengirimkan tugas pelatihan kustom yang menentukan konfigurasi reservationAffinity, Agent Platform akan memvalidasi konfigurasi pemesanan Anda sebelum mengantrekan tugas:

  • Untuk ANY_RESERVATION:
    • Setidaknya satu pemesanan yang digunakan secara otomatis harus ada di region tugas Anda dan dibagikan kepada Agent Platform (dan dibagikan kepada project Anda, jika pemesanan berada di project host yang berbeda).
    • Kolom key dan values di reservationAffinity harus dihilangkan atau kosong.
  • Untuk SPECIFIC_RESERVATION:
    • Kolom key harus ditetapkan ke compute.googleapis.com/reservation-name, dan kolom values harus menentukan satu pemesanan yang ada di zona dalam region tugas.
    • Pemesanan yang ditentukan harus dikonfigurasi untuk penargetan tertentu (bukan penggunaan otomatis) dan harus dibagikan kepada Agent Platform (dan kepada project Anda, jika pemesanan berada di project host yang berbeda).

Jika salah satu pemeriksaan validasi ini gagal, API akan langsung menolak permintaan dengan error INVALID_ARGUMENT. Validasi di awal tidak memverifikasi kompatibilitas jenis mesin atau kapasitas pemesanan yang tersedia pada saat pengiriman tugas.

Tabel berikut merangkum cara Agent Platform menangani tugas pelatihan berdasarkan status pemesanan dan reservationAffinityType:

Skenario Perilaku dengan ANY_RESERVATION Perilaku dengan SPECIFIC_RESERVATION
Pemesanan ada, cocok dengan properti mesin, dan memiliki kapasitas yang tersedia Tugas diterima, dirutekan ke zona pemesanan, dan menggunakan pemesanan. Tugas diterima dan menggunakan pemesanan yang ditentukan.
Pemesanan ada dan cocok dengan properti mesin, tetapi sudah penuh Tugas diterima dan dirutekan ke zona tempat pemesanan yang cocok berada. Karena kapasitas yang dipesan habis, Platform Agen akan mencoba menyediakan kapasitas on-demand. Tugas diterima, tetapi jika kapasitas tidak tersedia dalam pemesanan yang ditargetkan, Agent Platform. Kapasitas ini tidak akan beralih ke kapasitas on-demand.
Pemesanan ada, tetapi tidak dibagikan kepada Agent Platform atau project konsumen Tugas akan langsung gagal saat pengiriman dengan error INVALID_ARGUMENT (kecuali jika ada pemesanan lain yang dapat diakses dan digunakan secara otomatis di region tersebut). Tugas akan langsung gagal saat pengiriman dengan error INVALID_ARGUMENT.
Tidak ada pemesanan yang dapat diakses di region tugas Tugas akan langsung gagal saat pengiriman dengan error INVALID_ARGUMENT. Kapasitas ini tidak akan kembali ke kapasitas on-demand. Tugas akan langsung gagal saat pengiriman dengan error INVALID_ARGUMENT.

REST

Sebelum menggunakan data permintaan mana pun, lakukan penggantian berikut:

  • LOCATION: Region tempat container atau paket Python akan dijalankan.
  • PROJECT_ID: project tempat pemesanan dibuat. Untuk menggunakan pemesanan bersama dari project lain, Anda harus membagikan pemesanan tersebut ke project tersebut. Untuk mengetahui informasi selengkapnya, lihat Mengubah project konsumen dalam pemesanan bersama.
  • JOB_NAME: Wajib diisi. Nama tampilan untuk CustomJob.
  • MACHINE_TYPE: jenis mesin yang akan digunakan untuk tugas. Setelan defaultnya adalah n1-standard-2. Untuk mengetahui informasi selengkapnya tentang jenis mesin yang didukung, lihat Mengonfigurasi resource komputasi untuk pelatihan kustom.
  • ACCELERATOR_TYPE: jenis akselerator yang akan dipasang ke mesin. Untuk mengetahui informasi selengkapnya tentang jenis GPU yang didukung setiap jenis mesin, lihat GPU untuk workload komputasi.
  • ACCELERATOR_COUNT: jumlah akselerator yang akan dipasang ke mesin.
  • Tentukan tugas pelatihan kustom:
    • RESERVATION_AFFINITY_TYPE: Harus berupa ANY_RESERVATION, SPECIFIC_RESERVATION, atau NO_RESERVATION.

      • ANY_RESERVATION berarti VM customJob Anda dapat otomatis menggunakan pemesanan apa pun dengan properti yang cocok.
      • SPECIFIC_RESERVATION berarti VM customJob Anda hanya dapat menggunakan pemesanan yang secara khusus ditargetkan oleh VM berdasarkan nama.
      • NO_RESERVATION berarti VM customJob Anda tidak dapat menggunakan pemesanan apa pun. Menentukan NO_RESERVATION memiliki efek yang sama dengan menghilangkan spesifikasi afinitas reservasi.
    • ZONE: zona tempat pemesanan dibuat.
    • RESERVATION_NAME: nama pemesanan Anda.
    • DISK_TYPE: Opsional. Jenis boot disk yang akan digunakan untuk tugas, pd-standard (default) atau pd-ssd. Pelajari jenis disk lebih lanjut
    • DISK_SIZE: Opsional. Ukuran boot disk yang digunakan untuk tugas dalam satuan GB. Nilai defaultnya adalah 100.
    • REPLICA_COUNT: jumlah replika worker yang akan digunakan. Pada umumnya, tetapkan ini ke 1 untuk kumpulan worker pertama Anda.
    • Jika aplikasi pelatihan Anda berjalan dalam container kustom, tentukan hal berikut:
      • CUSTOM_CONTAINER_IMAGE_URI: URI image container di Artifact Registry atau Docker Hub yang akan dijalankan di setiap replika worker.
      • CUSTOM_CONTAINER_COMMAND: Opsional. Perintah yang akan dipanggil saat container dimulai. Perintah ini mengganti titik entri default container.
      • CUSTOM_CONTAINER_ARGS: Opsional. Argumen yang akan diteruskan saat memulai container.
    • Jika aplikasi pelatihan Anda adalah paket Python yang berjalan dalam container bawaan, tentukan hal berikut:
      • EXECUTOR_IMAGE_URI: URI image container yang menjalankan kode yang disediakan. Lihat container bawaan yang tersedia untuk pelatihan.
      • PYTHON_PACKAGE_URIS: Daftar URI Cloud Storage yang dipisahkan koma yang menentukan file paket Python yang merupakan program pelatihan dan paket dependensinya. Jumlah maksimum URI paket adalah 100.
      • PYTHON_MODULE: Nama modul Python yang akan dijalankan setelah menginstal paket.
      • PYTHON_PACKAGE_ARGS: Opsional. Argumen command line yang akan diteruskan ke modul Python.
    • TIMEOUT: Opsional. Waktu berjalan maksimum untuk tugas.
  • Tentukan LABEL_NAME dan LABEL_VALUE untuk setiap label yang ingin Anda terapkan ke tugas kustom ini.

Metode HTTP dan URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs

Meminta isi JSON:

{
  "displayName": "JOB_NAME",
  "jobSpec": {
    "workerPoolSpecs": [
      {
        "machineSpec": {
          "machineType": "MACHINE_TYPE",
          "acceleratorType": "ACCELERATOR_TYPE",
          "acceleratorCount": ACCELERATOR_COUNT,
          "reservationAffinity": {
            "reservationAffinityType": "RESERVATION_AFFINITY_TYPE",
            // Use the following key and values only if
            // the reservationAffinityType is SPECIFIC_RESERVATION.
            "key": "compute.googleapis.com/reservation-name",
            "values": [
              "projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME"
            ]
          },
        },
        "replicaCount": REPLICA_COUNT,
        "diskSpec": {
          "bootDiskType": DISK_TYPE,
          "bootDiskSizeGb": DISK_SIZE
        },

        // Union field task can be only one of the following:
        "containerSpec": {
          "imageUri": CUSTOM_CONTAINER_IMAGE_URI,
          "command": [
            CUSTOM_CONTAINER_COMMAND
          ],
          "args": [
            CUSTOM_CONTAINER_ARGS
          ]
        },
        "pythonPackageSpec": {
          "executorImageUri": EXECUTOR_IMAGE_URI,
          "packageUris": [
            PYTHON_PACKAGE_URIS
          ],
          "pythonModule": PYTHON_MODULE,
          "args": [
            PYTHON_PACKAGE_ARGS
          ]
        }
        // End of list of possible types for union field task.
      }
      // Specify one workerPoolSpec for single replica training, or multiple workerPoolSpecs
      // for distributed training.
    ],
    "scheduling": {
      "timeout": TIMEOUT
    }
  },
  "labels": {
    LABEL_NAME_1": LABEL_VALUE_1,
    LABEL_NAME_2": LABEL_VALUE_2
  }
}

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-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs"

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-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs" | Select-Object -Expand Content

Respons ini berisi informasi tentang spesifikasi serta TRAININGPIPELINE_ID.

Langkah berikutnya