Menggunakan Spot VM dengan pelatihan

Ringkasan

Anda dapat mengurangi biaya untuk menjalankan tugas pelatihan kustom 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.
  • Pelatihan Vertex AI hanya dapat menggunakan Spot VM dengan seri mesin berikut:

    • A2
    • A3
  • 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 pelatihan kustom Anda harus fault-tolerant untuk mendapatkan manfaat maksimal dari Spot VM. Saat Spot VM di-preempt, tugas pelatihan kustom 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 pelatihan kustom tahan error:

  • Buat titik pemeriksaan untuk menyimpan progres. Dengan menyimpan progres model secara berkala, Anda dapat memastikan bahwa tugas pelatihan kustom yang dihentikan dapat dilanjutkan dari checkpoint terakhir yang disimpan, bukan memulai dari awal.
  • Menggunakan Elastic Horovod. Pelatihan elastis memungkinkan Horovod menskalakan resource komputasi Anda tanpa perlu memulai ulang atau melanjutkan dari checkpoint. Untuk mempelajari lebih lanjut, lihat Elastic Horovod.
  • 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.

Sebelum memulai

Siapkan aplikasi pelatihan kustom Anda:

Mengonfigurasi tugas pelatihan untuk menggunakan Spot VM

Anda dapat mengonfigurasi tugas pelatihan kustom untuk menggunakan Spot VM dengan menentukan strategi SPOT dalam konfigurasi penjadwalan.

REST

Sebelum menggunakan data permintaan mana pun, lakukan penggantian berikut:

  • LOCATION: Region tempat container atau paket Python akan dijalankan.
  • PROJECT_ID: Project ID Anda.
  • JOB_NAME: Harus ada. Nama tampilan untuk CustomJob.
  • Tentukan tugas pelatihan kustom:
    • MACHINE_TYPE: Jenis mesin. Lihat jenis mesin yang tersedia untuk pelatihan.
    • REPLICA_COUNT: Jumlah replika worker yang akan digunakan. Pada umumnya, tetapkan ini ke 1 untuk kumpulan pekerja pertama Anda.
    • Jika aplikasi pelatihan Anda berjalan dalam container kustom, tentukan hal berikut:
      • CUSTOM_CONTAINER_IMAGE_URI: URI image container Docker dengan kode pelatihan Anda. Pelajari cara membuat image penampung kustom.
      • 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.

Metode HTTP dan URL:

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

Isi JSON permintaan:

{
  "displayName": "JOB_NAME",
  "jobSpec": {
    "workerPoolSpecs": [
      {
        "machineSpec": {
          "machineType": "MACHINE_TYPE"
          }
        },
        "replicaCount": REPLICA_COUNT,

        // 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": {
      "strategy": "SPOT"
    }
  }
}

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 JOB_ID.

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.

customJob = aiplatform.CustomJob(
    display_name=TEST_CASE_NAME,
    worker_pool_specs=worker_pool_spec,
    staging_bucket=OUTPUT_DIRECTORY
)
customJob.run(
    scheduling_strategy=aiplatform.compat.types.custom_job.Scheduling.Strategy.SPOT
)

Langkah selanjutnya