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 上で実行されるエージェントがあります。