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.

  1. Simpan checkpoint secara berkala

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

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

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