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
ディレクトリ内でスタック トレースの収集が開始されます。一時ディレクトリから Cloud Logging にトレースをアップロードするすべての TPU VM 上で実行されるエージェントがあります。