對 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。