Mengelola peristiwa pemeliharaan dengan Pod Cloud TPU
Ringkasan
TPU Node dan VM TPU adalah instance VM Compute Engine dengan hardware TPU yang terpasang. VM Compute Engine tunduk pada peristiwa pemeliharaan VM Compute Engine. Setiap TPU terhubung ke VM Compute Engine, sehingga penggunaan lebih banyak TPU (misalnya dalam Pod TPU) akan meningkatkan kemungkinan salah satu VM Anda mengalami peristiwa pemeliharaan.
Dokumen ini membahas berbagai pendekatan dalam menangani peristiwa pemeliharaan untuk tugas pelatihan yang berjalan lama di Cloud TPU.
Menggunakan checkpoint untuk pemulihan cepat dari peristiwa pemeliharaan
Checkpoint adalah kunci pemulihan singkat dari peristiwa pemeliharaan dan harus sering disimpan: aturan praktis yang baik adalah menyimpan checkpoint kira-kira setiap jam. Tidak sering melakukan checkpoint berisiko kehilangan banyak progres pelatihan karena peristiwa pemeliharaan atau gangguan pelatihan lainnya.
Checkpoint umumnya mengacu pada semua parameter tersimpan yang digunakan dalam pelatihan (seperti bobot model). Waktu yang diperlukan untuk menyimpan checkpoint dapat berkisar dari urutan detik hingga urutan menit.
Meskipun sebagian besar peristiwa pemeliharaan otomatis dipulihkan dan tugas pelatihan berlanjut tanpa intervensi manual, mungkin ada kasus ekstrem ketika tugas tidak dimulai ulang dan otomatis dilanjutkan. Jika ini terjadi, Anda harus menghapus dan membuat ulang resource TPU, lalu memulai ulang tugas pelatihan dari checkpoint yang tersimpan. Untuk mengetahui informasi tentang cara mendeteksi dan memulihkan dari kegagalan pemulihan otomatis, lihat Mendeteksi dan memulihkan dari kegagalan TPU.
Mekanisme yang digunakan untuk menyimpan dan memuat checkpoint berbeda untuk setiap framework ML. Model Cloud TPU yang didukung umumnya memiliki checkpoint bawaan. Untuk informasi selengkapnya tentang checkpointing, lihat : TensorFlow 2.x, PyTorch, atau JAX/flax.
Mendeteksi Peristiwa Pemeliharaan
Anda dapat mendeteksi apakah dan saat peristiwa pemeliharaan terjadi di TPU menggunakan perintah gcloud describe
berikut:
VM TPU
$ gcloud compute tpus tpu-vm describe tpu-name --zone=zone | grep 'health'
Node TPU
$ gcloud compute tpus describe tpu-name --zone=zone | grep 'health'
Output dari perintah ini menampilkan status TPU saat ini dan deskripsi peristiwa pemeliharaan terbaru. Output akan terlihat seperti berikut:
health: HEALTHY healthDescription: The TPU had a maintenance event at 2022-01-26T03:44:36.265703305Z
Log aktivitas pemeliharaan
Anda dapat melihat log historis peristiwa pemeliharaan di TPU Anda di log audit peristiwa sistem.
Di menu navigasi konsol Google Cloud, klik Compute Engine > VM instances, lalu telusuri, misalnya:
"tpu.nodes.terminate" OR "tpu.nodes.restart"
Dalam jangka waktu penelusuran Anda, setiap gangguan dan perbaikan pekerja TPU akan ditampilkan. Log akan menunjukkan tanggal dan waktu peristiwa, jenis peristiwa, serta alasan penghentian dalam protoPayload.metadata.terminateReason
untuk peristiwa "berhenti".
Menangani peristiwa pemeliharaan
Ada beberapa cara untuk mengurangi gangguan peristiwa pemeliharaan.
Simpan checkpoint secara berkala
Dalam skenario ideal, ketika "peristiwa gangguan" terjadi, pelatihan akan dilanjutkan dari checkpoint terbaru.
Percobaan ulang skrip pelatihan
Skrip pelatihan dapat berhenti karena "peristiwa gangguan". Anda dapat menggunakan skrip
bash
untuk mencoba ulang skrip pelatihan secara terus-menerus hingga pelatihan selesai. Setiap percobaan ulang harus dilanjutkan dari checkpoint terbaru, sehingga skrip coba lagi harus selalu digunakan bersama dengan checkpoint.Pipeline pelatihan siap produksi harus menggunakan sistem pengelolaan resource seperti Google Kubernetes Engine (GKE). Untuk mengetahui informasi lebih lanjut mengenai penggunaan Google Kubernetes Engine dengan arsitektur VM TPU, lihat Men-deploy beban kerja TPU. Untuk mengetahui informasi lebih lanjut mengenai cara menggunakan Google Kubernetes Engine dengan arsitektur Node TPU, baca Menjalankan aplikasi TPU di Google Kubernetes Engine. Jika tidak, Anda dapat mengimplementasikan skrip
bash
untuk terus mencoba ulang skrip pelatihan hingga selesai. Contoh:Dengan Node TPU:
(Dari VM Anda)
bash while ! python3 [training command]; do sleep 1; done
Dengan VM TPU:
while ! gcloud compute tpus tpu-vm ssh ${TPU_NAME} --command "python3 [training command]"; do sleep 1; done
(Perhatikan bahwa Anda harus menjalankan perintah VM TPU dari Cloud Shell atau dari terminal, bukan dari VM TPU).
Mendeteksi dan memulihkan dari kegagalan TPU
Jika TPU tidak dipulihkan dari peristiwa pemeliharaan, Anda dapat menggunakan skrip pemulihan untuk mendeteksi status TPU serta menghapus dan membuat ulang TPU. Contoh skrip ini dapat ditemukan di sini. Lihat Mengelola TPU untuk mengetahui detail tentang cara menghapus dan membuat ulang TPU secara manual.
Saat membuat atau membuat ulang VM TPU, Anda dapat menentukan skrip startup dengan parameter
--metadata startup-script
. Skrip startup berjalan setiap kali VM TPU dibuat. Lihat Menjalankan skrip penginstalan standar untuk mengetahui informasi selengkapnya.