Cloud TPU VM のデバッグ
このドキュメントでは、cloud-tpu-diagnostics PyPI パッケージを使用して、TPU VM で実行されているプロセスのスタック トレースを生成する方法について説明します。このパッケージは、セグメンテーション違反、浮動小数点の例外、不正なオペレーションの例外などの障害が発生したときに Python トレースをダンプします。また、プログラムが応答しない状況のデバッグに役立つように、スタック トレースを定期的に収集します。
cloud-tpu-diagnostics PyPI パッケージを使用するには、すべての TPU VM で pip install cloud-tpu-diagnostics
を実行してインストールする必要があります。これは 1 つの 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 分ごとに収集されます。2 つのスタックトレース収集イベント間の時間を 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 にトレースをアップロードするエージェントが存在します。