Cloud TPU-VMs debuggen
In diesem Dokument wird beschrieben, wie Sie mit dem PyPI-Paket cloud-tpu-diagnostics Stacktraces für Prozesse generieren, die auf TPU-VMs ausgeführt werden. Dieses Paket löscht die Python-Traces, wenn ein Fehler auftritt, z. B. Segmentierungsfehler, Gleitkommawertausnahmen oder Ausnahmen im Zusammenhang mit unzulässigen Vorgängen. Außerdem werden regelmäßig Stacktraces erfasst, um Ihnen bei der Fehlerbehebung zu helfen, wenn das Programm nicht mehr reagiert.
Wenn Sie das PyPI-Paket cloud-tpu-diagnostics verwenden möchten, müssen Sie es mit dem Befehl pip install cloud-tpu-diagnostics
auf allen TPU-VMs installieren. Dazu können Sie den gcloud compute tpus tpu-vm ssh
-Befehl verwenden. Beispiel:
gcloud compute tpus tpu-vm ssh you-tpu-name \ --zone=your-zone \ --project=your-project-name \ --worker=all \ --command="pip install cloud-tpu-diagnostics"
Außerdem müssen Sie folgenden Code Ihren Scripts hinzufügen, die auf allen TPU-VMs ausgeführt werden.
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)
Standardmäßig werden Stacktraces alle 10 Minuten erfasst. Sie können die Dauer zwischen zwei Ereignissen zum Erfassen von Stacktraces beispielsweise auf 5 Minuten ändern:
stack_trace_config = stack_trace_configuration.StackTraceConfig(
collect_stack_trace = True,
stack_trace_to_cloud = True,
stack_trace_interval_seconds = 300)
Umschließen Sie Ihre Hauptmethode mit diagnose()
, um die Stacktraces regelmäßig zu erfassen:
with diagnostic.diagnose(diagnostic_config):
run_main()
Mit dieser Konfiguration werden Stacktraces auf jeder TPU-VM im Verzeichnis /tmp/debugging
erfasst. Auf allen TPU-VMs wird ein Agent ausgeführt, der die Traces aus einem temporären Verzeichnis in Cloud Logging hochlädt.