Cloud TPU 상태 모니터링

Cloud TPU 상태 모니터링은 TPU VM 및 슬라이스의 상태에 관한 실시간 정보를 제공합니다. Cloud Monitoring 콘솔 또는 Google Cloud CLI를 사용하여 하드웨어 장애가 발생할 때 이를 식별하고 리소스를 재할당하여 작업 실패를 방지하고 성능 저하를 최소화할 수 있습니다.

TPU 상태 모니터링은 사용 중인 각 TPU 인스턴스에 HEALTHY 또는 UNHEALTHY 상태를 할당합니다. 예상대로 작동하는 TPU에는 HEALTHY 상태가 할당되고 더 이상 작동하지 않거나 심각하게 감소된 수준으로 작동하는 TPU에는 UNHEALTHY 상태가 할당됩니다.

TPU 상태 모니터링은 상태와 함께 특정 작업의 로깅 측정항목을 제공합니다. 이러한 측정항목을 사용하여 하드웨어 문제로 인해 발생하지 않는 TPU 상태 및 성능 문제를 추가로 진단할 수 있습니다.

비정상 TPU 감지

TPU 상태 모니터링에서 TPU에 UNHEALTHY 상태를 할당하면 compute.googleapis.com/instance/tpu/infra_health 서비스 엔드포인트를 통해 실패한 TPU의 식별 정보를 제공합니다.

TPU 상태 원인

물리적 하드웨어에 문제가 있는 경우 머신이 UNHEALTHY로 분류됩니다. 머신이 UNHEALTHY로 분류되면 TPU 상태 모니터링에서 다음 원인 중 하나를 제공합니다.

  • BAD_TPU_CHIP: TPU 하드웨어 자체의 물리적 오류입니다. VM이 의도한 대로 실행되고 있지만 VM에 연결된 TPU에 결함이 있을 수 있습니다.
  • NETWORKING_ISSUE: 전송된 원격 프로시저 호출 (RPC)과 같이 분산 TPU 시스템의 여러 작업자 또는 구성요소 간 기본 네트워크 통신에 하드웨어 문제가 있습니다.
  • BAD_SC_CHIP: TPU 칩의 SparseCore 내의 물리적 오류입니다.

측정항목 라벨

TPU 상태 모니터링은 특정 비정상 TPU를 식별하기 위해 다음 측정항목 라벨을 제공합니다.

라벨 이름 유형 설명
health_status STRING TPU 인스턴스의 전반적인 상태입니다.
unhealthy_category STRING 상태 원인입니다. 이 라벨은 측정항목 값이 UNHEALTHY인 경우에만 채워집니다.
machine_type STRING 인스턴스의 Compute Engine 머신 유형입니다.
reservation_id STRING 물리적 머신 예약의 ID입니다.

TPU 상태 모니터링은 다음 리소스 라벨도 제공합니다.

라벨 이름 유형 설명
project STRING 프로젝트 번호입니다.
service STRING API 서비스 (compute.googleapis.com)
resource_type STRING VM 인스턴스입니다.
location STRING 인스턴스의 영역입니다.
resource_id STRING Compute Engine 인스턴스 ID입니다.

TPU 상태 모니터링은 TPU Cluster Director를 통해 모든 용량 모드 예약에 대해 다음과 같은 추가 측정항목 라벨을 제공합니다.

라벨 이름 유형 설명
machine_id STRING VM을 호스팅하는 실제 머신의 ID입니다.
block_id STRING VM을 호스팅하는 클러스터 내 블록의 ID입니다.
cluster_id STRING VM을 호스팅하는 클러스터의 ID입니다.
subblock_id STRING VM을 호스팅하는 하위 블록의 ID입니다.

로깅

물리적 문제가 없는 머신은 하드웨어와 관련이 없는 문제로 인해 손상되거나 작동하지 않을 수 있습니다. 이 경우 TPU 상태 모니터링은 머신을 HEALTHY로 분류하지만 연결된 프로젝트의 Cloud Logging에 문제의 잠재적 원인도 로깅합니다. 로그에는 간단한 설명, 의심되는 근본 원인, 잠재적 원인, 실행 가능한 다음 단계를 포함하여 문제에 관한 세부정보가 제공됩니다.

로그에 다음 원인 중 하나가 포함되어 있습니다.

  • FINGERPRINT_MISMATCH: 동일한 TPU 모듈을 실행할 것으로 예상되는 프로그램에 서로 다른 바이너리 지문이 포함되어 있습니다. 컴파일러 문제로 인한 불일치 때문일 수 있습니다.
  • DATA_INPUT_STALL: 직접 메모리 액세스 (DMA) 작업 또는 데이터 전송 중에 TPU가 멈춥니다. DMA 작업이 완료될 때까지 TPU가 계속될 수 없습니다.
  • UNRECOVERABLE_ERROR: 하나 이상의 작업자에서 복구할 수 없는 오류가 발생하여 정의되지 않은 상태입니다.
  • DIFFERENT_MODULE: 작업자가 동일한 모듈을 실행해야 하는데 다른 TPU 모듈을 실행하고 있습니다.
  • UNKNOWN_CAUSE: 오류의 원인을 확인할 수 없습니다.

로그 탐색기 또는 Logs API를 사용하여 로그를 볼 수 있습니다. Google Cloud 로깅에 대한 자세한 내용은 Google Cloud로깅을 참고하세요.

콘솔을 사용한 모니터링

Google Cloud 콘솔의 모니터링 대시보드는 머신 상태, 과거 추세, 총계에 관한 실시간 시각화를 제공합니다. 실패 이벤트 표는 작업 실패를 근본 원인에 연결합니다.

Cloud Monitoring에서 사전 빌드된 대시보드를 보려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 Cloud Monitoring 페이지로 이동합니다.
    Monitoring 콘솔로 이동
  2. 탐색창에서 대시보드를 클릭합니다.
  3. 필터 검색 필드에 'TPU 인스턴스 상태 대시보드'를 입력합니다.

대시보드에는 기본적으로 다음 측정항목이 표시됩니다.

  • 전반적인 TPU 인스턴스 상태: HEALTHY로 분류된 TPU 인스턴스의 비율입니다.
  • 인스턴스 수: 사용 중인 총 TPU 인스턴스 수입니다.
  • 정상 TPU 인스턴스 수: HEALTHY로 분류된 TPU 인스턴스의 총수입니다.
  • 비정상 TPU 인스턴스 수: UNHEALTHY로 분류된 TPU 인스턴스의 총수입니다.
  • VM 인프라 상태 분포: 시간 경과에 따른 HEALTHY 인스턴스 수입니다.

맞춤 쿼리를 추가하려면 쿼리 추가를 클릭하고 PromQL 쿼리를 작성합니다. 예를 들어 다음 쿼리는 비정상 TPU 인스턴스를 모두 가져옵니다.

count({__name__="compute.googleapis.com/instance/tpu/infra_health", monitored_resource="gce_instance", health_status="UNHEALTHY"})

Google Cloud 콘솔을 사용한 모니터링에 대한 자세한 내용은 Cloud Monitoring 문서를 참고하세요.

CLI를 사용한 모니터링

Google Cloud CLI는 실시간 TPU 상태 데이터를 제공합니다. 다음 예시 요청은 모든 UNHEALTHY TPU를 가져옵니다.

export TOKEN=$(gcloud auth application-default print-access-token)

export PROMQL_QUERY='count({__name__="compute.googleapis.com/instance/tpu/infra_health", monitored_resource="gce_instance", health_status="UNHEALTHY"})'

export LOCATION="global"

curl -G \
  --header "Authorization: Bearer ${TOKEN}" \
  --header "Content-Type: application/json" \
  --header "X-Goog-User-Project: ${PROJECT_ID}" \
  --data-urlencode "query=${PROMQL_QUERY}" \
  "https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/location/${LOCATION}/prometheus/api/v1/query"

다음과 비슷한 응답이 표시됩니다.

{"status":"success","data":{"resultType":"vector","result":[65]}}

gcloud CLI에 대한 자세한 내용은 gcloud CLI 개요를 참고하세요.