调试 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。