對 Cloud TPU VM 進行偵錯

本文說明如何使用 cloud-tpu-diagnostics PyPI 套件,為在 TPU VM 中執行的程序產生堆疊追蹤記錄。這個套件會在發生錯誤時 (例如區隔錯誤、浮點例外狀況或非法作業例外狀況) 時轉儲 Python 追蹤記錄。此外,它也會定期收集堆疊追蹤記錄,協助您在程式沒有回應時進行偵錯。

如要使用 cloud-tpu-diagnostics PyPI 套件,您必須在所有 TPU VM 上執行 pip install cloud-tpu-diagnostics 才能安裝。您可以使用一個 gcloud compute tpus tpu-vm ssh 指令執行此操作。例如:

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

您也必須在所有 TPU VM 上執行的指令碼中加入下列程式碼。

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)

根據預設,系統會每 10 分鐘收集一次堆疊追蹤記錄。您可以將兩個堆疊追蹤收集事件之間的時間長度變更為 5 分鐘,例如:

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

使用 diagnose() 包裝主方法,以便定期收集堆疊追蹤記錄:

with diagnostic.diagnose(diagnostic_config):
    run_main()

這項設定會開始收集各個 TPU VM 上 /tmp/debugging 目錄中的堆疊追蹤記錄。所有 TPU VM 上都會執行代理程式,將臨時目錄中的追蹤記錄上傳至 Cloud Logging。