TPU 모니터링
이 가이드에서는 Cloud Monitoring을 사용하여 TPU VM을 모니터링하는 방법을 설명합니다. Cloud Monitoring은 TPU와 호스트 VM에서 측정항목과 로그를 자동으로 수집합니다. 이러한 데이터는 TPU 및 Compute Engine의 상태를 모니터링하는 데 사용될 수 있습니다.
측정항목을 사용하면 CPU 사용률, 네트워크 사용량 또는 TensorCore 유휴 상태 기간과 같은 시간 경과에 따른 수치 양을 추적할 수 있습니다. 로그는 특정 시점의 이벤트를 캡처합니다. 로그 항목은 자체 코드,Google Cloud 서비스, 서드 파티 애플리케이션,Google Cloud 인프라에 의해 작성됩니다. 로그 기반 측정항목을 만들어 로그 항목에 있는 데이터에서 측정항목을 생성할 수도 있습니다. 또한 측정항목 값 또는 로그 항목을 기준으로 알림 정책을 설정할 수 있습니다.
TPU를 모니터링하려면 용량 플래너(프리뷰)도 사용하면 됩니다. 용량 플래너를 사용하면 프로젝트, 폴더 또는 조직의 TPU 사용량과 예측 데이터를 볼 수 있습니다. 이 데이터는 24시간마다 업데이트되며 사용 추세를 분석하고 향후 용량 니즈를 계획하는 데 사용될 수 있습니다. 자세한 내용은 용량 플래너 개요를 참고하세요.
TPU 측정항목 액세스
Compute Engine은 TPU 런타임 측정항목과 TPU VM 인프라 측정항목이라는 두 가지 유형의 TPU 측정항목을 생성합니다. 다음 두 가지 방법으로 측정항목을 가져올 수 있습니다.
TPU 모니터링 라이브러리: TPU 모니터링 라이브러리를 사용하여 LibTPU SDK에서 TPU 런타임 측정항목을 가져옵니다. 이를 통해 애플리케이션이 게스트 환경 내부에서 실시간 원격 분석을 가져올 수 있습니다. 자세한 내용은 TPU 모니터링 라이브러리를 참고하세요.
AI 원격 분석 수집기: AI 원격 분석 수집기를 통해 런타임 측정항목과 VM 인프라 측정항목을 가져옵니다. AI 원격 분석 수집기는 TPU VM 내에서 실행되며 Cloud Monitoring 또는 자체 Prometheus 기반 모니터링 파이프라인을 통해 측정항목에 액세스할 수 있습니다. 자세한 내용은 AI 원격 분석 수집기를 참고하세요.
TPU 측정항목
Google Cloud Cloud TPU의 측정항목은 Compute Engine VM 및 Cloud TPU 런타임에 의해 자동으로 생성됩니다. 다음 표의 측정항목은 Compute Engine VM에 의해 생성됩니다.
이 표의 '측정항목 유형' 문자열 앞에 compute.googleapis.com/가 포함된 프리픽스를 추가해야 합니다. 테이블의 항목에서는 이 프리픽스가 생략되었습니다. 라벨을 쿼리할 때 metric.labels 프리픽스를 사용합니다(예: metric.labels.LABEL="VALUE").
| 측정항목 유형 실행 단계(리소스 계층 구조 수준) 표시 이름 |
|
|---|---|
| 종류, 유형, 단위 모니터링 리소스 |
설명 라벨 |
instance/tpu/accelerator/duty_cycle
베타
(프로젝트)
가속기 가동 주기 |
|
GAUGE, DOUBLE, %
gce_instance |
샘플 기간 동 가속기가 활성 처리 중이었던 시간의 비율입니다. 값은 0~100 범위 이내입니다.
accelerator_id:
가속기의 기기 ID입니다.
|
instance/tpu/accelerator/memory_bandwidth_utilization
베타
(프로젝트)
가속기 메모리 대역폭 사용률 |
|
GAUGE, DOUBLE, %
gce_instance |
사용 중인 가속기 메모리 대역폭의 현재 백분율입니다. 샘플 기간 동안 사용된 메모리 대역폭을 동일한 샘플 기간 동안 지원된 최대 대역폭으로 나누어 계산합니다.
accelerator_id:
가속기의 기기 ID입니다.
|
instance/tpu/accelerator/memory_total
베타
(프로젝트)
가속기 메모리 총계 |
|
GAUGE, INT64, By
gce_instance |
현재 할당된 총 가속기 메모리(바이트)입니다.
accelerator_id:
가속기의 기기 ID입니다.
|
instance/tpu/accelerator/memory_used
베타
(프로젝트)
사용된 가속기 메모리 |
|
GAUGE, INT64, By
gce_instance |
현재 사용 중인 총 가속기 메모리(바이트)입니다.
accelerator_id:
가속기의 기기 ID입니다.
|
instance/tpu/accelerator/tensorcore_utilization
베타
(프로젝트)
가속기 TensorCore 사용률 |
|
GAUGE, DOUBLE, %
gce_instance |
사용되는 Tensorcore의 현재 백분율입니다. 샘플 기간 동안 수행된 Tensorcore 작업 수를 동일한 샘플 기간 동안 지원되는 Tensorcore 작업 수로 나누어 계산합니다.
accelerator_id:
가속기의 기기 ID입니다.
|
instance/tpu/active_chips
베타
(프로젝트)
활성 TPU 칩 수 |
|
GAUGE, INT64, 1
gce_instance |
활발하게 사용 중인 칩의 현재 개수입니다 (유휴 상태가 아님).
accelerator_type:
가속기 유형 및 세대입니다.
reservation_id:
물리적 머신 예약의 ID입니다.
provisioning_model:
연결된 프로비저닝 모델입니다.
protection_tier:
연결된 보호 모델입니다.
block_id:
VM을 호스팅하는 클러스터 내 블록의 ID입니다.
subblock_id:
VM을 호스팅하는 하위 블록의 ID입니다.
is_exr:
(BOOL)
칩이 연장된 예약의 일부인지 나타냅니다.
|
instance/tpu/chip_state
베타
(프로젝트)
TPU 칩 상태 수 |
|
GAUGE, INT64, 1
gce_instance |
정상, 비정상, 알 수 없음과 같은 다양한 상태의 TPU 칩 수입니다.
state:
칩의 상태입니다.
accelerator_type:
가속기 유형 및 세대입니다.
block_id:
VM을 호스팅하는 클러스터 내 블록의 ID입니다.
subblock_id:
VM을 호스팅하는 하위 블록의 ID입니다.
reservation_id:
물리적 머신 예약의 ID입니다.
is_exr:
(BOOL)
칩이 연장된 예약의 일부인지 나타냅니다.
|
instance/tpu/infra_health
베타
(프로젝트)
TPU 인스턴스 상태 |
|
GAUGE, INT64, 1
gce_instance |
TPU 인스턴스의 전체 상태를 나타냅니다. 측정항목 라벨은 주로 TPU 하드웨어 및 시스템 상태에 중점을 두어 저하되거나 비정상적인 TPU 인스턴스의 특정 상태 및 문제 이유를 파악하는 데 도움이 됩니다. 상태 변경사항이 이 측정항목에 반영되는 데 몇 분 정도 걸릴 수 있습니다. 60초마다 샘플링됩니다. 샘플링되면 데이터는 최대 420초 동안 표시되지 않습니다.
health_status:
TPU 인스턴스의 전체 상태입니다. 가능한 값: HEALTHY (예상대로 작동), UNHEALTHY (심각한 문제가 감지됨), DEGRADED (성능에 영향을 미치는 문제), UNKNOWN (상태를 확인할 수 없음)
unhealthy_category:
비정상 VM 상태에 대한 설명입니다. 이 라벨은 측정항목 값이 Unhealthy인 경우에만 채워집니다.
machine_type:
인스턴스의 머신 유형입니다 (예: ct6e-standard-4t-tpu).
machine_id:
VM을 호스팅하는 물리적 머신의 ID입니다.
block_id:
VM을 호스팅하는 클러스터 내 블록의 ID입니다.
cluster_id:
VM을 호스팅하는 클러스터의 ID입니다.
reservation_id:
물리적 머신 예약의 ID입니다.
subblock_id:
VM을 호스팅하는 하위 블록의 ID입니다.
|
instance/tpu/runtime/uptime
베타
(프로젝트)
런타임 업타임 |
|
GAUGE, INT64, s
gce_instance |
ML 작업에서 런타임 라이브러리 (libtpu.so)를 초기화한 이후 ML 런타임의 업타임입니다. 이 기간 동안 런타임 라이브러리는 ML 작업에서 사용할 수 있도록 TPU 기기를 차단합니다.
ml_framework_name:
ML 프레임워크의 이름입니다.
ml_framework_version:
ML 프레임워크 버전입니다.
|
instance/tpu/scheduled_chips
베타
(프로젝트)
예약된 TPU 칩 수 |
|
GAUGE, INT64, 1
gce_instance |
정상이고 유지보수를 위해 사용 중지되지 않은 VM에 할당된 현재 칩 수입니다.
accelerator_type:
가속기 유형 및 세대입니다.
reservation_id:
물리적 머신 예약의 ID입니다.
provisioning_model:
연결된 프로비저닝 모델입니다.
protection_tier:
연결된 보호 모델입니다.
block_id:
VM을 호스팅하는 클러스터 내 블록의 ID입니다.
subblock_id:
VM을 호스팅하는 하위 블록의 ID입니다.
is_exr:
(BOOL)
칩이 연장된 예약의 일부인지 나타냅니다.
|
instance/tpu/utilized_chips
베타
(프로젝트)
사용된 TPU 칩 |
|
GAUGE, DOUBLE, 1
gce_instance |
현재 집계 사용 용량으로, 활성 칩의 유효 수로 표현됩니다. 활성 칩의 분수 사용률 (0.0~1.0)의 합계와 같습니다.
accelerator_type:
가속기 유형 및 세대입니다.
reservation_id:
물리적 머신 예약의 ID입니다.
provisioning_model:
연결된 프로비저닝 모델입니다.
protection_tier:
연결된 보호 모델입니다.
block_id:
VM을 호스팅하는 클러스터 내 블록의 ID입니다.
subblock_id:
VM을 호스팅하는 하위 블록의 ID입니다.
is_exr:
(BOOL)
칩이 연장된 예약의 일부인지 나타냅니다.
|
quota/tpus_per_tpu_family/exceeded
알파
(프로젝트)
TPU 제품군별 TPU 수 할당량 초과 오류 |
|
DELTA, INT64, 1
compute.googleapis.com/Location |
할당량 측정항목 compute.googleapis.com/tpus_per_tpu_family의 한도를 초과하려는 시도 횟수입니다. 샘플링되면 데이터는 최대 150초 동안 표시되지 않습니다.
limit_name:
한도 이름입니다.
tpu_family:
TPU 제품군 맞춤 측정기준입니다.
|
quota/tpus_per_tpu_family/limit
알파
(프로젝트)
TPU 제품군별 TPU 수 할당량 한도 |
|
GAUGE, INT64, 1
compute.googleapis.com/Location |
할당량 측정항목 compute.googleapis.com/tpus_per_tpu_family의 현재 한도입니다. 60초마다 샘플링됩니다. 샘플링되면 데이터는 최대 150초 동안 표시되지 않습니다.
limit_name:
한도 이름입니다.
tpu_family:
TPU 제품군 맞춤 측정기준입니다.
|
quota/tpus_per_tpu_family/usage
알파
(프로젝트)
TPU 제품군별 TPU 수 할당량 사용량 |
|
GAUGE, INT64, 1
compute.googleapis.com/Location |
할당량 측정항목 compute.googleapis.com/tpus_per_tpu_family의 현재 사용량입니다. 샘플링되면 데이터는 최대 150초 동안 표시되지 않습니다.
limit_name:
한도 이름입니다.
tpu_family:
TPU 제품군 맞춤 측정기준입니다.
|
tpu/multislice/accelerator/device_to_host_transfer_latencies
베타
(프로젝트)
기기에서 호스트로의 전송 지연 시간 |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
각 데이터 청크의 기기-호스트 전송 지연 시간의 누적 분포입니다. 지연 시간은 호스트로 데이터를 전송하라는 요청이 발행될 때 시작되고 데이터 전송이 완료되었다는 확인이 수신될 때 종료됩니다.
buffer_size:
버퍼 크기입니다.
|
tpu/multislice/accelerator/host_to_device_transfer_latencies
베타
(프로젝트)
호스트-기기 전송 지연 시간 |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
멀티슬라이스 트래픽의 각 데이터 청크에 대한 호스트-기기 전송 지연 시간의 누적 분포입니다. 지연 시간은 기기로 데이터를 전송하라는 요청이 발행될 때 시작되고 데이터 전송이 완료되었다는 확인이 수신될 때 종료됩니다.
buffer_size:
버퍼 크기입니다.
|
tpu/multislice/network/collective_end_to_end_latencies
베타
(프로젝트)
집합적 엔드 투 엔드 지연 시간 |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
멀티슬라이스 트래픽의 엔드 투 엔드 집합 지연 시간의 누적 분포입니다. 지연 시간은 수집 요청이 발행될 때 시작되고 데이터 전송이 완료되었다는 확인이 수신될 때 종료됩니다.
input_size:
집합적 작업의 입력 크기입니다.
collective_type:
집합적 작업의 유형입니다.
|
tpu/multislice/network/dcn_transfer_latencies
베타
(프로젝트)
DCN 전송 지연 시간 |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
멀티슬라이스 트래픽의 네트워크 전송 지연 시간 누적 분포입니다. 지연 시간은 DCN을 통해 데이터를 전송하라는 요청이 발행될 때 시작되고 데이터 전송이 완료되었다는 확인이 수신될 때 종료됩니다.
buffer_size:
버퍼 크기입니다.
type:
유형입니다.
|
tpu/multislice/network/grpc_client_call_latencies
베타
(프로젝트)
gRPC 클라이언트 호출 지연 시간 |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
호출자 관점에서 RPC를 완료하는 데 gRPC 라이브러리에 걸리는 네트워크 전송 지연 시간의 누적 분포입니다.
buffer_size:
버퍼 크기입니다.
|
tpu/multislice/network/grpc_server_call_latencies
베타
(프로젝트)
gRPC 서버 호출 지연 시간 |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
전송 관점에서 gRPC 서버가 RPC를 완료하는 데 걸리는 네트워크 전송 지연 시간의 누적 분포입니다.
buffer_size:
버퍼 크기입니다.
|
tpu/multislice/network/grpc_tcp_delivery_rates
베타
(프로젝트)
gRPC TCP 전송률 |
|
CUMULATIVE, DISTRIBUTION, Mb/s
gce_instance |
TCP 연결 데이터 전송률의 누적 분포입니다. 각 샘플은 마지막 TCP ACK 간격 동안 특정 TCP 연결의 최신 평균 데이터 전송률입니다. 데이터 전송률 샘플은 20초마다 Linux TCP 커널에서 가져오므로 모든 TCP 연결이 60초 간격으로 약 3개의 샘플을 생성할 것으로 예상할 수 있습니다. |
tpu/multislice/network/grpc_tcp_min_round_trip_times
베타
(프로젝트)
gRPC TCP 최소 왕복 시간 |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
TCP 연결당 최소 네트워크 전송 지연 시간의 누적 분포입니다. |
tpu/multislice/network/grpc_tcp_packets_retransmitted_count
베타
(프로젝트)
gRPC TCP 패킷 재전송 수 |
|
CUMULATIVE, INT64, 1
gce_instance |
재전송된 패킷의 총 개수입니다. |
tpu/multislice/network/grpc_tcp_packets_sent_count
베타
(프로젝트)
전송된 gRPC TCP 패킷 수 |
|
CUMULATIVE, INT64, 1
gce_instance |
TCP가 전송하는 패킷의 총 개수입니다. |
tpu/slice/capacity/available_chips
베타
(프로젝트)
사용 가능한 TPU 칩 수 |
|
GAUGE, INT64, 1
compute.googleapis.com/AcceleratorSlice |
현재 사용 가능하고 사용할 준비가 된 연장 예약의 TPU 칩 수입니다. 60초마다 샘플링됩니다. 샘플링되면 데이터는 최대 360초 동안 표시되지 않습니다.
accelerator_type:
가속기 유형 및 세대입니다.
reservation_id:
물리적 머신 예약의 ID입니다.
block_id:
슬라이스와 연결된 블록 ID입니다.
subblock_id:
슬라이스와 연결된 하위 블록 ID입니다.
provisioning_model:
연결된 프로비저닝 모델입니다.
protection_tier:
연결된 보호 모델입니다.
|
tpu/slice/capacity/committed_chips
베타
(프로젝트)
구매한 TPU 칩 수 |
|
GAUGE, INT64, 1
compute.googleapis.com/AcceleratorSlice |
연장 예약에서 구매한 현재 TPU 칩 수입니다. 60초마다 샘플링됩니다. 샘플링되면 데이터는 최대 360초 동안 표시되지 않습니다.
accelerator_type:
가속기 유형 및 세대입니다.
reservation_id:
물리적 머신 예약의 ID입니다.
block_id:
슬라이스와 연결된 블록 ID입니다.
subblock_id:
슬라이스와 연결된 하위 블록 ID입니다.
provisioning_model:
연결된 프로비저닝 모델입니다.
protection_tier:
연결된 보호 모델입니다.
|
Compute Engine에서 생성된 전체 측정항목 목록은 Compute Engine 측정항목을 참고하세요.
AI 원격 분석 수집기
AI 원격 분석 수집기는 Compute Engine API를 사용하여 생성된 TPU의 compute.googleapis.com 네임스페이스에서 TPU 측정항목을 수집하고 게시합니다.
이러한 측정항목은 상태와 성능에 대한 가시성을 제공하는 기본 제공 시스템 측정항목입니다.
AI 원격 분석 수집기 아키텍처는 경량의 특수 OpenTelemetry (OTEL) 수집기로 설계되었습니다. 데이터를 캡처하는 데 두 개의 기본 수신기를 사용합니다.
- TPU 런타임 수신기: 머신러닝 워크로드가 활성 상태일 때 TPU 런타임에서 런타임 및 워크로드 측정항목 (예: 사용 주기 및 메모리 사용량)을 직접 스크랩합니다.
- TPU 호스트 수신기: 워크로드 실행 여부와 관계없이 기기에서 직접 TensorCore 사용률, 메모리 대역폭 사용률과 같은 하드웨어 사용률 측정항목을 캡처합니다.
그러면 AI 원격 분석 수집기가 프로세서를 사용하여 필요한 리소스 태그 (예: project_id, instance_id, zone)를 자동으로 적용하고 원격 분석을 Cloud Monitoring으로 직접 안전하게 내보냅니다.
AI 원격 분석 수집기는 Google의 TPU 최적화 Ubuntu LTS 이미지에 사전 설치되어 있으며 VM이 부팅될 때 자동으로 실행됩니다. 이 설정을 사용하려면 TPU VM 인스턴스 또는 인스턴스 템플릿을 만들 때 공식 Google 가속기 이미지 프로젝트와 계열을 지정하세요. VM이 시작되면 AI 원격 분석 수집기가 Cloud Monitoring 대시보드에 측정항목을 자동으로 전송합니다.
맞춤 운영체제 이미지를 빌드하는 경우 ai-telemetry-collector Docker 이미지를 설치하고 실행한 후 AI 원격 분석 수집기를 사용할 수 있습니다. 자세한 내용은 맞춤 OS 이미지 사용을 참고하세요.
구성
AI 원격 분석 수집기는 측정항목을 Cloud Monitoring 대시보드로 자동으로 전송하며 추가 구성 단계가 필요하지 않습니다. 하지만 Snap 패키지 또는 Docker 이미지를 구성하여 외부 내보내기 대상을 추가하고, 측정항목 수집 간격을 변경하고, 디버깅 옵션을 포함할 수 있습니다.
기본 구성을 새 구성 파일로 바꾸거나 기존 기본 구성에 추가 구성 파일을 추가할 수 있습니다. 구성을 추가할 때 아직 없는 키는 추가되고 이미 있는 키는 덮어쓰여집니다. 하지만 배열과 목록은 추가되지 않으므로 새 목록에는 기존 값과 새 값이 모두 포함되어야 합니다.
다음 YAML 파일은 오픈소스 시스템 모니터링 및 알림 툴킷인 Prometheus에 측정항목을 전송하도록 AI 원격 분석 수집기를 구성합니다. 또한 콘솔 내에서 측정항목을 출력하는 디버깅 옵션도 사용 설정합니다.
exporters:
prometheus:
endpoint: 0.0.0.0:8889
service:
pipelines:
metrics:
exporters:
- prometheus # For more: https://prometheus.io/docs/introduction/overview/
- googlecloud # If you do not include this, you'll lose Google Cloud Monitoring
- debug # print metrics within the console
기본 OS
Google의 TPU 최적화 Ubuntu LTS 이미지를 사용하는 경우 다음 스냅 명령어를 실행하여 기존 구성에 새 구성 파일을 추가합니다.
sudo snap set \
ai-telemetry-collector \
extra-flags="--config /home/username/additional-config.yaml"
기존 구성을 덮어쓰고 대체하려면 extra-flags 대신 config-path 플래그를 사용합니다.
sudo snap set \
ai-telemetry-collector \
config-path="/home/username/new-config.yaml"
snap set 명령어는 AI 원격 분석 수집기의 자동 다시 시작을 트리거해야 합니다. 수집기가 다시 시작되었고 구성이 성공적으로 적용되었는지 확인하려면 다음 명령어를 사용하여 로그를 확인하세요.
sudo snap logs -f ai-telemetry-collector
맞춤 OS
맞춤 OS를 사용하는 경우 다음 Docker 명령어를 실행하여 기존 구성에 새 구성 파일을 추가합니다.
# First apply the default configs via `--config=/etc/ai-telemetry-collector/config.yaml`
# Then apply your additional config by volume mount.
docker run --privileged --net=host \
-v <path>/additional-config.yaml:/etc/ai-telemetry-collector/additional-config.yaml \
ai-telemetry-collector:latest \
--config=/etc/ai-telemetry-collector/config.yaml \
--config=/etc/ai-telemetry-collector/additional-config.yaml
기존 구성을 덮어쓰고 대체하려면 다음 Docker 명령어를 사용하세요.
# Mount a volume (your config file) to `/etc/ai-telemetry-collector/config.yaml`
# The binary automatically picks up this file.
docker run --privileged --net=host \
-v <path>/my-config.yaml:/etc/ai-telemetry-collector/config.yaml \
ai-telemetry-collector:latest
감사 로그
Google Cloud 서비스는 Google Cloud 리소스 내의 관리 및 액세스 활동을 기록하는 감사 로그를 생성합니다. 자세한 내용은 Compute Engine 감사 로깅을 참고하세요.