Ringkasan
Anda dapat mengurangi biaya menjalankan tugas pelatihan kustom dengan menggunakan Spot VM. Spot VM adalah instance virtual machine (VM) yang merupakan kapasitas Compute Engine berlebih. Spot VM memiliki diskon yang signifikan, tetapi Compute Engine dapat menghentikan atau menghapus (mem-preempt) Spot VM secara preemptif untuk memulihkan kapasitas kapan saja.
Untuk mempelajari lebih lanjut, lihat Spot VM.
Batasan dan persyaratan
Pertimbangkan batasan dan persyaratan berikut saat menggunakan Spot VM dengan Vertex AI:
- Semua batasan Spot VM berlaku saat menggunakan Spot VM dengan Vertex AI.
- Penggunaan Spot VM dengan Vertex AI hanya didukung untuk pelatihan dan inferensi kustom.
- Penggunaan Spot VM dengan Pod TPU tidak didukung.
- Pengiriman tugas melalui konsol Google Cloud tidak didukung.
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 berjalan lambat tetapi tidak akan berhenti sepenuhnya. Spot VM akan menyelesaikan tugas batch processing tanpa menempatkan beban tambahan di VM yang ada dan tanpa mengharuskan Anda membayar VM standar tambahan dengan harga penuh. Lihat Penanganan pengambilalihan.
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.
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 akan gagal dengan error STOCKOUT
dan Compute Engine akan 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 Anda tahan terhadap kesalahan:
- 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 dimulai lagi dari awal.
- Gunakan Elastic Horovod. Pelatihan elastis memungkinkan Horovod menskalakan resource komputasi Anda tanpa memerlukan mulai 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 penonaktifan.
Sebelum memulai
Siapkan aplikasi pelatihan kustom Anda:
- Untuk menggunakan container bawaan, lihat Membuat aplikasi pelatihan Python untuk container bawaan.
- Untuk menggunakan container kustom, lihat Membuat image container kustom untuk pelatihan.
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 worker pertama. - 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 container 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 berikutnya
- Pelajari Spot VM lebih lanjut.
- Untuk mempelajari lebih lanjut VM Compute Engine secara umum, baca dokumentasi Instance virtual machine.
- Untuk mempelajari cara membuat Spot VM, baca artikel Membuat dan menggunakan Spot VM.
- Menggunakan Spot VM dengan Vertex AI Inference.