Cloud TPU VM 디버깅
이 문서에서는 cloud-tpu-diagnostics PyPI 패키지를 사용하여 TPU VM에서 실행되는 프로세스에 관한 스택 트레이스를 생성하는 방법을 설명합니다. 이 패키지는 세분화 결함, 부동 소수점 예외, 잘못된 작업 예외와 같은 오류가 발생할 때 Python trace를 덤프합니다. 또한 프로그램이 응답하지 않는 상황을 디버그하는 데 도움이 되도록 주기적으로 스택 트레이스를 수집합니다.
cloud-tpu-diagnostics PyPI 패키지를 사용하려면 모든 TPU VM에서 pip install cloud-tpu-diagnostics
를 실행하여 설치해야 합니다. 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분마다 수집됩니다. 예를 들어 다음과 같이 하여 두 스택 트레이스 수집 이벤트 사이의 기간을 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으로 trace를 업로드하는 에이전트가 모든 TPU VM에서 실행됩니다.