Depura VMs de Cloud TPU
En este documento, se describe cómo usar el paquete de PyPI cloud-tpu-diagnostics para generar seguimientos de pila de los procesos que se ejecutan en las 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 operación ilegal. Además, recopila seguimientos de pila de forma periódica para ayudarte a depurar situaciones en las que el programa no responde.
Para usar el paquete de PyPI cloud-tpu-diagnostics,
debes instalarlo ejecutando pip install cloud-tpu-diagnostics
en todas las VMs de TPU. Puedes hacerlo con un solo comando
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 VMs 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. Por ejemplo, puedes cambiar la duración entre dos eventos de recopilación de seguimiento de pila a 5 minutos:
stack_trace_config = stack_trace_configuration.StackTraceConfig(
collect_stack_trace = True,
stack_trace_to_cloud = True,
stack_trace_interval_seconds = 300)
Encapsula 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 dentro del directorio /tmp/debugging
en cada VM de TPU. Hay un agente que se ejecuta en todas las VMs de TPU y que sube
los registros de seguimiento desde un directorio temporal a Cloud Logging.