Depuración de las VM de Cloud TPU

En este documento, se describe cómo usar el comando cloud-tpu-diagnostics Paquete de PyPI para generar seguimientos de pila de los procesos que se ejecutan en VMs de TPU. Este paquete vuelca los seguimientos de Python cuando se produce una falla, por ejemplo, fallas de segmentación, excepciones de punto flotante o excepciones de operaciones ilegales. También recopila periódicamente seguimientos de pila para ayudarte a depurar situaciones en las que el programa no responde.

Para usar el comando cloud-tpu-diagnostics paquete de PyPI, debes instalarlo ejecutando pip install cloud-tpu-diagnostics en todas las VMs de TPU. Puedes hacerlo con un gcloud compute tpus tpu-vm ssh . Por ejemplo:

  gcloud compute tpus tpu-vm ssh you-tpu-name \
  --zone=your-zone \
  --project=your-project-name \
  --worker=all \
  --command="pip install cloud-tpu-diagnostics"

También debes agregar el siguiente código a las secuencias de comandos que se ejecutan en todas las VM de TPU.

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)

De forma predeterminada, los seguimientos de pila se recopilan cada 10 minutos. Puedes cambiar La duración entre dos eventos de recopilación de seguimiento de pila es de 5 minutos, por ejemplo:

stack_trace_config = stack_trace_configuration.StackTraceConfig(
                      collect_stack_trace = True,
                      stack_trace_to_cloud = True,
                      stack_trace_interval_seconds = 300)

Une tu método principal con diagnose() para recopilar periódicamente los seguimientos de pila:

with diagnostic.diagnose(diagnostic_config):
    run_main()

Esta configuración comienza a recopilar seguimientos de pila en /tmp/debugging. en cada VM de TPU. Hay un agente en ejecución en todas las VMs de TPU que sube los seguimientos de un directorio temporal a Cloud Logging.