Proses debug VM Cloud TPU

Dokumen ini menjelaskan cara menggunakan paket PyPI cloud-tpu-diagnostics untuk membuat stack trace untuk proses yang berjalan di VM TPU. Paket ini membuang rekaman aktivitas Python saat terjadi kesalahan, misalnya kesalahan segmentasi, pengecualian floating point, atau pengecualian operasi ilegal. Selain itu, alat ini juga mengumpulkan pelacakan tumpukan secara berkala untuk membantu Anda men-debug situasi saat program tidak responsif.

Untuk menggunakan paket PyPI cloud-tpu-diagnostics, Anda harus menginstalnya dengan menjalankan pip install cloud-tpu-diagnostics di semua VM TPU. Anda dapat melakukannya dengan satu perintah gcloud compute tpus tpu-vm ssh. Contoh:

  gcloud compute tpus tpu-vm ssh you-tpu-name \
  --zone=your-zone \
  --project=your-project-name \
  --worker=all \
  --command="pip install cloud-tpu-diagnostics"

Anda juga harus menambahkan kode berikut ke skrip yang berjalan di semua VM TPU.

from cloud_tpu_diagnostics import diagnostic
from cloud_tpu_diagnostics.configuration import debug_configuration
from cloud_tpu_diagnostics.configuration import diagnostic_configuration
from cloud_tpu_diagnostics.configuration import stack_trace_configuration

stack_trace_config = stack_trace_configuration.StackTraceConfig(
                      collect_stack_trace = True,
                      stack_trace_to_cloud = True)
debug_config = debug_configuration.DebugConfig(
                stack_trace_config = stack_trace_config)
diagnostic_config = diagnostic_configuration.DiagnosticConfig(
                      debug_config = debug_config)

Secara default, pelacakan tumpukan dikumpulkan setiap 10 menit. Anda dapat mengubah durasi antara dua peristiwa pengumpulan pelacakan tumpukan menjadi 5 menit, misalnya:

stack_trace_config = stack_trace_configuration.StackTraceConfig(
                      collect_stack_trace = True,
                      stack_trace_to_cloud = True,
                      stack_trace_interval_seconds = 300)

Gabungkan metode utama Anda dengan diagnose() untuk mengumpulkan pelacakan tumpukan secara berkala:

with diagnostic.diagnose(diagnostic_config):
    run_main()

Konfigurasi ini mulai mengumpulkan stack trace di dalam direktori /tmp/debugging pada setiap VM TPU. Ada agen yang berjalan di semua VM TPU yang mengupload rekaman aktivitas dari direktori sementara ke Cloud Logging.