Cloud TPU-VMs debuggen
In diesem Dokument wird beschrieben, wie Sie mit dem PyPI-Paket cloud-tpu-diagnostics Stack-Traces für Prozesse generieren, die in TPU-VMs ausgeführt werden. Dieses Paket erstellt einen Dump der Python-Traces, wenn ein Fehler auftritt, z. B. Segmentierungsfehler, Gleitkommaausnahmen oder Ausnahmen für unzulässige Vorgänge. Außerdem werden regelmäßig Stack-Traces erfasst, um Ihnen bei der Fehlerbehebung zu helfen, wenn das Programm nicht reagiert.
Wenn Sie das PyPI-Paket cloud-tpu-diagnostics verwenden möchten, müssen Sie es installieren, indem Sie pip install cloud-tpu-diagnostics
auf allen TPU-VMs ausführen. Dazu können Sie einen einzigen 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 den folgenden Code in Ihre Scripts einfü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 Stack-Traces alle 10 Minuten erfasst. Sie können die Dauer zwischen zwei Ereignissen zur Erfassung von Stack-Traces beispielsweise auf 5 Minuten festlegen:
stack_trace_config = stack_trace_configuration.StackTraceConfig(
collect_stack_trace = True,
stack_trace_to_cloud = True,
stack_trace_interval_seconds = 300)
Um die Stack-Traces regelmäßig zu erfassen, müssen Sie Ihre Hauptmethode in diagnose()
einschließen:
with diagnostic.diagnose(diagnostic_config):
run_main()
Mit dieser Konfiguration werden auf jeder TPU-VM Stack-Traces 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.