Mengelola peristiwa pemeliharaan dengan Pod Cloud TPU
Ringkasan
VM TPU adalah instance VM Compute Engine dengan hardware TPU 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 untuk menangani peristiwa pemeliharaan untuk tugas pelatihan yang berjalan lama di Cloud TPU.
Menggunakan titik pemeriksaan untuk pemulihan cepat dari peristiwa pemeliharaan
Titik pemeriksaan adalah kunci untuk pemulihan singkat dari peristiwa pemeliharaan dan harus sering disimpan: aturan praktis yang baik adalah menyimpan titik pemeriksaan sekitar setiap jam. Jika tidak sering melakukan pemeriksaan titik, Anda 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 titik pemeriksaan dapat berkisar dari urutan detik hingga urutan menit.
Meskipun sebagian besar peristiwa pemeliharaan dipulihkan secara otomatis dan tugas pelatihan berlanjut tanpa intervensi manual, mungkin ada kasus ekstrem saat tugas tidak dimulai ulang dan berlanjut secara otomatis. Jika hal ini terjadi, Anda perlu menghapus dan membuat ulang resource TPU, dan memulai ulang tugas pelatihan dari checkpoint yang disimpan. 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 titik pemeriksaan berbeda untuk setiap framework ML. Model Cloud TPU yang didukung umumnya memiliki checkpoint bawaan. Untuk informasi selengkapnya tentang pembuatan checkpoint, lihat : TensorFlow 2.x, PyTorch, atau JAX/flax.
Mendeteksi Peristiwa Pemeliharaan
Anda dapat mendeteksi apakah dan kapan peristiwa pemeliharaan terjadi di TPU menggunakan
perintah gcloud describe
berikut:
$ gcloud compute tpus tpu-vm describe tpu-name --zone=zone | grep 'health'
Output dari perintah ini menampilkan status TPU saat ini dan deskripsi peristiwa pemeliharaan terbaru. Outputnya akan terlihat mirip dengan berikut ini:
health: HEALTHY healthDescription: The TPU had a maintenance event at 2022-01-26T03:44:36.265703305Z
Log peristiwa pemeliharaan
Anda dapat melihat log historis peristiwa pemeliharaan di TPU dalam log audit peristiwa sistem.
Di menu navigasi konsol Google Cloud, klik Compute Engine > VM instances dan telusuri, misalnya:
"tpu.nodes.terminate" OR "tpu.nodes.restart"
Dalam jangka waktu penelusuran, gangguan dan perbaikan pekerja TPU akan ditampilkan. Log akan menampilkan tanggal dan waktu peristiwa, jenis peristiwa, dan untuk peristiwa "terminate", alasan penghentian di protoPayload.metadata.terminateReason
.
Menangani peristiwa pemeliharaan
Ada beberapa cara untuk mengurangi gangguan peristiwa pemeliharaan.
Menyimpan checkpoint secara berkala
Dalam skenario ideal, saat "peristiwa gangguan" terjadi, pelatihan akan dilanjutkan dari checkpoint terbaru.
Percobaan ulang skrip pelatihan
Skrip pelatihan mungkin berhenti karena "peristiwa gangguan". Anda dapat menggunakan skrip
bash
untuk terus mencoba ulang skrip pelatihan hingga pelatihan selesai. Setiap percobaan ulang harus dilanjutkan dari checkpoint terbaru, sehingga skrip percobaan ulang harus selalu digunakan bersama dengan checkpoint.Pipeline pelatihan yang siap produksi harus menggunakan sistem pengelolaan resource seperti Google Kubernetes Engine (GKE). Untuk informasi selengkapnya tentang cara menggunakan Google Kubernetes Engine dengan VM TPU, lihat Men-deploy beban kerja TPU. Anda dapat menerapkan skrip
bash
untuk terus mencoba ulang skrip pelatihan hingga selesai. Contoh:while ! gcloud compute tpus tpu-vm ssh ${TPU_NAME} --command "python3 [training command]"; do sleep 1; done
Mendeteksi dan memulihkan dari kegagalan TPU
Jika TPU tidak pulih dari peristiwa pemeliharaan, Anda dapat menggunakan skrip pemulihan untuk mendeteksi status TPU, lalu 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.