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.

  1. Menyimpan checkpoint secara berkala

    Dalam skenario ideal, saat "peristiwa gangguan" terjadi, pelatihan akan dilanjutkan dari checkpoint terbaru.

  2. 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
    
  3. 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.