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:
- 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 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
- Pelajari Spot VM lebih lanjut.
- Untuk mempelajari VM Compute Engine lebih lanjut secara umum, baca dokumentasi Instance virtual machine.
- Untuk mempelajari cara membuat Spot VM, baca Membuat dan menggunakan VM Spot.
- Menggunakan Spot VM dengan prediksi Vertex AI.