调试 Cloud TPU 虚拟机
本文档介绍如何使用 cloud-tpu-diagnostics PyPI 软件包为 TPU 虚拟机中运行的进程生成堆栈轨迹。当故障(例如分段错误、浮点异常或非法操作异常)发生时,此软件包会转储 Python 跟踪记录。此外,它还会定期收集堆栈轨迹,以便在程序无响应时帮助您调试问题。
如需使用 cloud-tpu-diagnostics PyPI 软件包,必须通过在所有 TPU 虚拟机上运行 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 虚拟机上运行的脚本。
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 虚拟机上的 /tmp/debugging
目录内收集堆栈轨迹。有一个代理在所有 TPU 虚拟机上运行,该代理可将跟踪记录从临时目录上传到 Cloud Logging。