Cloud TPU VM 모니터링

이 가이드에서는 Google Cloud Monitoring을 사용하여 Cloud TPU VM을 모니터링하는 방법을 설명합니다. Google Cloud Monitoring은 Cloud TPU 및 호스트 Compute Engine에서 측정항목로그를 자동으로 수집합니다. 이러한 데이터는 Cloud TPU 및 Compute Engine의 상태를 모니터링하는 데 사용될 수 있습니다.

측정항목을 사용하면 CPU 사용률, 네트워크 사용량 또는 TensorCore 유휴 시간과 같은 시간 경과에 따른 숫자 수량을 추적할 수 있습니다. 로그는 특정 시점의 이벤트를 캡처합니다. 로그 항목은 자체 코드, Google Cloud 서비스, 서드 파티 애플리케이션, Google Cloud 인프라에서 작성됩니다. 로그 기반 측정항목을 만들어서 로그 항목에 있는 데이터로부터 측정항목을 생성할 수도 있습니다. 또한 측정항목 값 또는 로그 항목을 기준으로 알림 정책을 설정할 수 있습니다.

이 가이드에서는 Google Cloud Monitoring에 대해 설명하고 다음 방법을 보여줍니다.

기본 요건

이 문서에서는 Google Cloud Monitoring에 대한 기본적인 지식이 있다고 가정합니다. Google Cloud Monitoring에서 생성 및 사용을 시작하려면 반드시 Compute Engine VM 및 Cloud TPU 리소스를 만들어야 합니다. 자세한 내용은 Cloud TPU 빠른 시작을 참조하세요.

측정항목

Google Cloud 측정항목은 Compute Engine VM 및 Cloud TPU 런타임에 의해 자동으로 생성됩니다. 다음 측정항목은 Cloud TPU VM에서 생성됩니다.

  • memory/usage
  • network/received_bytes_count
  • network/sent_bytes_count
  • cpu/utilization
  • tpu/tensorcore/idle_duration
  • accelerator/tensorcore_utilization
  • accelerator/memory_bandwidth_utilization
  • accelerator/duty_cycle
  • accelerator/memory_total
  • accelerator/memory_used

측정항목 값이 생성되고 측정항목 탐색기에 표시되는 데 최대 180초가 걸릴 수 있습니다.

Cloud TPU에서 생성된 전체 측정항목 목록은 Google Cloud Cloud TPU 측정항목을 참조하세요.

메모리 사용량

memory/usage 측정항목은 TPU Worker 리소스에 대해 생성되며 TPU VM에서 사용하는 메모리를 바이트 단위로 추적합니다. 이 측정항목은 60초마다 샘플링됩니다.

네트워크 수신 바이트 수

network/received_bytes_count 측정항목은 TPU Worker 리소스에 대해 생성되며 특정 시점에 TPU VM이 네트워크를 통해 수신한 데이터의 누적 바이트 수를 추적합니다.

네트워크 전송 바이트 수

network/sent_bytes_count 측정항목은 TPU Worker 리소스에 대해 생성되며 특정 시점에 TPU VM이 네트워크를 통해 전송한 누적 바이트 수를 추적합니다.

CPU 사용률

cpu/utilization 측정항목은 TPU Worker 리소스에 대해 생성되며 TPU 워커의 현재 CPU 사용률을 추적하여 백분율로 표시하고 1분에 한 번 샘플링합니다. 값은 일반적으로 0.0~100.0 사이이지만 100.0을 초과할 수 있습니다.

TensorCore 유휴 기간

tpu/tensorcore/idle_duration 측정항목은 TPU Worker 리소스에 대해 생성되며 각 TPU 칩의 TensorCore가 유휴 상태로 있는 시간(초)을 추적합니다. 이 측정항목은 사용 중인 모든 TPU의 각 칩마다 제공됩니다. TensorCore가 사용 중이면 유휴 기간 값이 0으로 재설정됩니다. TensorCore가 더 이상 사용 중이 아니면 유휴 기간 값이 증가합니다.

다음 그래프는 워커가 1개인 v2-8 TPU VM의 tpu/tensorcore/idle_duration 측정항목을 보여줍니다. 각 작업자에는 4개의 칩이 있습니다. 이 예시에서 4개의 칩은 tpu/tensorcore/idle_duration 값이 동일하기 때문에 그래프가 겹쳐서 표시됩니다.

이미지

TensorCore 사용률

accelerator/tensorcore_utilization 측정항목은 GCE TPU Worker 리소스에 대해 생성되며 사용되는 TensorCore의 현재 백분율을 추적합니다. 샘플 기간 동안 수행된 TensorCore 작업 수를 같은 샘플 기간 동안에 수행할 수 있는 최대 작업 수로 나눠 계산합니다. 값이 클수록 사용률이 높습니다. TensorCore 사용률 측정항목은 v4 및 이후 TPU 세대에서 지원됩니다.

메모리 대역폭 사용률

accelerator/memory_bandwidth_utilization 측정항목은 GCE TPU Worker 리소스에 대해 생성되며 사용 중인 가속기 메모리 대역폭의 현재 백분율을 추적합니다. 이 측정항목은 샘플 기간 동안 사용된 메모리 대역폭을 동일한 샘플 기간 동안 지원된 최대 대역폭으로 나누어 계산합니다. 값이 클수록 사용률이 높습니다. 메모리 대역폭 사용률 측정항목은 v4 및 이후 TPU 세대에서 지원됩니다.

가속기 가동 주기

accelerator/duty_cycle 측정항목은 GCE TPU Worker 리소스에 대해 생성되고 가속기 TensorCore가 실제로 처리된 샘플 기간 동안의 시간 백분율을 추적합니다. 값은 0~100 범위 이내입니다. 값이 클수록 TensorCore 사용률이 높습니다. 이 측정항목은 머신러닝 워크로드가 TPU VM에서 실행될 때 보고됩니다. Accelerator 가동 주기 측정항목은 JAX 0.4.14 이상, PyTorch 2.1 이상, TensorFlow 2.14.0 이상에서 지원됩니다.

총 가속기 메모리

accelerator/memory_total 측정항목은 GCE TPU Worker 리소스에 대해 생성되고 할당된 총 가속기 메모리(바이트 단위)를 추적합니다. 이 측정항목은 머신러닝 워크로드가 TPU VM에서 실행될 때 보고됩니다. 총 가속기 메모리 측정항목은 JAX 0.4.14 이상, PyTorch 2.1 이상, TensorFlow 2.14.0 이상에서 지원됩니다.

사용된 가속기 메모리

accelerator/memory_used 측정항목은 GCE TPU Worker 리소스에 대해 생성되고 사용된 총 가속기 메모리(바이트 단위)를 추적합니다. 이 측정항목은 머신러닝 워크로드가 TPU VM에서 실행될 때 보고됩니다. 사용된 가속기 메모리 측정항목은 JAX 0.4.14 이상, PyTorch 2.1 이상, TensorFlow 2.14.0 이상에서 지원됩니다.

측정항목 보기

Google Cloud 콘솔의 측정항목 탐색기를 사용하여 측정항목을 볼 수 있습니다.

측정항목 탐색기에서 측정항목 선택을 클릭하고 관심 있는 측정항목에 따라 TPU Worker 또는 GCE TPU Worker를 검색합니다. 리소스를 선택하여 해당 리소스에 사용할 수 있는 모든 측정항목을 표시합니다. 활성이 사용 설정되면 지난 25시간 동안의 시계열 데이터가 있는 측정항목만 나열됩니다. 모든 측정항목을 표시하려면 활성을 중지하세요.

curl HTTP 호출을 사용하여 측정항목에 액세스할 수도 있습니다.

projects.timeSeries.query 문서에서 사용해 보기 버튼을 사용하여 지정된 기간 내에 측정항목 값을 검색합니다.

  1. 이름을 projects/{project-name} 형식으로 입력합니다.
  2. 요청 본문 섹션에 쿼리를 추가합니다. 다음은 지난 5분 동안 지정된 영역의 유휴 기간 측정항목을 검색하기 위한 샘플 쿼리입니다.

    fetch tpu_worker | filter zone = 'us-central2-b' | metric tpu.googleapis.com/tpu/tensorcore/idle_duration | within 5m
    
  3. 실행을 클릭하여 호출하고 HTTP POST 메시지 결과를 확인합니다.

이 쿼리를 맞춤설정하는 방법에 대한 자세한 내용은 모니터링 쿼리 언어 참조 문서를 확인하세요.

알림 만들기

조건이 충족되면 Cloud Monitoring에서 알림을 보내도록 알림 정책을 만들 수 있습니다.

이 섹션의 단계에서는 TensorCore 유휴 기간 측정항목에 대한 알림 정책을 추가하는 방법의 예시를 보여줍니다. 이 측정항목이 24시간을 초과할 때마다 Cloud Monitoring이 등록된 이메일 주소로 이메일을 전송합니다.

  1. Monitoring 콘솔로 이동합니다.
  2. 탐색 창에서 알림을 클릭합니다.
  3. 알림 채널 수정을 클릭합니다.
  4. 이메일 아래에서 새로 추가를 클릭합니다. 이메일 주소와 표시 이름을 입력하고 저장을 클릭합니다.
  5. 알림 페이지에서 정책 만들기를 클릭합니다.
  6. 측정항목 선택을 클릭한 후 Tensorcore 유휴 기간을 선택하고 적용을 클릭합니다.
  7. 다음을 클릭한 후 기준을 클릭합니다.
  8. 알림 트리거에서 모든 시계열 위반을 선택합니다.
  9. 기준 위치에서 기준 초과를 선택합니다.
  10. 기준 값86400000을 입력합니다.
  11. 다음을 클릭합니다.
  12. 알림 채널에서 이메일 알림 채널을 선택하고 확인을 클릭합니다.
  13. 알림 정책 이름을 입력합니다.
  14. 다음을 클릭한 후 정책 만들기를 클릭합니다.

TensorCore 유휴 기간이 24시간을 초과하면 지정된 이메일 주소로 이메일이 전송됩니다.

로깅

로그 항목은 Google Cloud 서비스, 서드 파티 서비스, ML 프레임워크 또는 코드에서 작성됩니다. 로그 탐색기 또는 Logs API를 사용해서 로그를 볼 수 있습니다. Google Cloud Logging에 대한 자세한 내용은 Google Cloud Logging을 참조하세요.

TPU 워커 로그에는 특정 영역의 특정 Cloud TPU 워커에 대한 정보(예: Cloud TPU 워커에서 사용 가능한 메모리 양(system_available_memory_GiB))가 포함됩니다.

감사를 받은 리소스 로그에는 특정 Cloud TPU API가 호출된 시기와 호출한 사용자에 대한 정보가 포함됩니다. 예를 들어 CreateNode, UpdateNode, DeleteNode API 호출에 대한 정보를 확인할 수 있습니다.

ML 프레임워크는 표준 출력 및 표준 오류에 대한 로그를 생성할 수 있습니다. 이러한 로그는 환경 변수에 의해 제어되며 학습 스크립트에서 이러한 로그를 읽습니다.

코드는 Google Cloud Logging에 로그를 작성할 수 있습니다. 자세한 내용은 표준 로그 작성구조화된 로그 작성을 참조하세요.

Google Cloud 로그 쿼리

Google Cloud 콘솔에서 로그를 볼 때 이 페이지에서 기본 쿼리를 수행합니다. Show query 전환 스위치를 선택하여 쿼리를 확인할 수 있습니다. 기본 쿼리를 수정하거나 새 쿼리를 만들 수 있습니다. 자세한 내용은 로그 탐색기에서 쿼리 빌드를 참조하세요.

감사를 받은 리소스 로그

감사를 받은 리소스 로그를 보려면 다음 안내를 따르세요.

  1. Google Cloud 로그 탐색기로 이동합니다.
  2. 모든 리소스 드롭다운을 클릭합니다.
  3. 감사를 받은 리소스를 클릭한 후 Cloud TPU를 클릭합니다.
  4. 관심 있는 Cloud TPU API를 선택합니다.
  5. 적용을 클릭합니다. 쿼리 결과에 로그가 표시됩니다.

로그 항목을 클릭하여 펼칩니다. 각 로그 항목에는 다음을 포함한 필드 여러 개가 있습니다.

  • logName: 로그의 이름
  • protoPayload -> @type: 로그의 유형
  • protoPayload -> resourceName: Cloud TPU 이름
  • protoPayload -> methodName: 호출된 메서드의 이름(감사 로그만 해당)
  • protoPayload -> request -> @type: 요청 유형
  • protoPayload -> request -> node: Cloud TPU 노드에 대한 세부정보
  • protoPayload -> request -> node_id: TPU 이름
  • severity: 로그의 심각도

TPU 워커 로그

TPU 워커 로그를 보려면 다음 안내를 따르세요.

  1. Google Cloud 로그 탐색기로 이동합니다.
  2. 모든 리소스 드롭다운을 클릭합니다.
  3. TPU 워커를 클릭합니다.
  4. 영역을 선택합니다.
  5. 관심 있는 Cloud TPU를 선택합니다.
  6. 적용을 클릭합니다. 쿼리 결과에 로그가 표시됩니다.

로그 항목을 클릭하여 펼칩니다. 로그 항목마다 jsonPayload 필드가 있습니다. jsonPayload를 펼쳐 다음을 포함한 필드 여러 개를 봅니다.

  • accelerator_type: 가속기 유형
  • consumer_project: Cloud TPU가 위치한 프로젝트
  • evententry_timestamp: 로그가 생성된 시간
  • system_available_memory_GiB: Cloud TPU 워커에서 사용 가능한 메모리(0~350GiB)

로그 기반 측정항목 만들기

이 섹션에서는 모니터링 대시보드 및 알림을 설정하는 데 사용되는 로그 기반 측정항목을 만드는 방법을 설명합니다. 프로그래매틱 방식으로 로그 기반 측정항목 만들기에 대한 자세한 내용은 Cloud Logging REST API를 사용하여 프로그래매틱 방식으로 로그 기반 측정항목 만들기를 참조하세요.

다음 예시에서는 system_available_memory_GiB 하위 필드를 사용하여 Cloud TPU 워커 가용 메모리를 모니터링하기 위한 로그 기반 측정항목을 만드는 방법을 보여줍니다.

  1. Google Cloud 로그 탐색기로 이동합니다.
  2. 쿼리 상자에 다음 쿼리를 입력하여 기본 Cloud TPU 워커에 system_available_memory_GiB가 정의된 모든 로그 항목을 추출합니다.

    resource.type=tpu_worker
    resource.labels.project_id=your-project
    resource.labels.zone=your-tpu-zone
    resource.labels.node_id=your-tpu-name
    resource.labels.worker_id=0
    logName=projects/your-project/logs/tpu.googleapis.com%2Fruntime_monitor
    jsonPayload.system_available_memory_GiB:*
    
  3. 측정항목 만들기를 클릭하여 측정항목 편집기를 표시합니다.

  4. 측정항목 유형에서 분포를 선택합니다.

  5. 측정항목의 이름, 설명(선택사항), 측정 단위를 입력합니다. 이 예시에서는 이름 필드와 설명 필드에 'matrix_unit_utilization_percent' 및 'MXU utilization'을 각각 입력합니다. 필터는 로그 탐색기에 입력한 스크립트로 자동 채워집니다.

  6. 측정항목 만들기를 클릭합니다.

  7. 새 측정항목을 보려면 측정항목 탐색기에서 보기를 클릭합니다. 측정항목이 표시되려면 몇 분 정도 걸릴 수 있습니다.

Cloud Logging REST API를 사용하여 로그 기반 측정항목 만들기

또한 Cloud Logging API를 통해 로그 기반 측정항목을 만들 수 있습니다. 자세한 내용은 분포 측정항목 만들기를 참조하세요.

로그 기반 측정항목을 사용하여 대시보드 및 알림 만들기

대시보드는 측정항목을 시각화하는 데 유용하고(최대 2분 지연), 알림은 오류가 발생할 때 알림을 보내는 데 유용합니다. 자세한 내용은 다음을 참고하세요.

대시보드 만들기

Cloud Monitoring에서 Tensorcore 유휴 기간 측정항목의 대시보드를 만들려면 다음 안내를 따르세요.

  1. Monitoring 콘솔로 이동합니다.
  2. 탐색창에서 대시보드를 클릭합니다.
  3. 대시보드 만들기를 클릭한 후 위젯 추가를 클릭합니다.
  4. 추가할 차트 유형을 선택합니다. 이 예시에서는 을 선택합니다.
  5. 위젯 제목을 입력합니다.
  6. 측정항목 선택 드롭다운 메뉴를 클릭하고 필터 필드에 'Tensorcore idle duration'을 입력합니다.
  7. 측정항목 목록에서 TPU 워커 -> Tpu -> Tensorcore 유휴 기간을 선택합니다.
  8. 대시보드 콘텐츠를 필터링하려면 필터 드롭다운 메뉴를 클릭합니다.
  9. 리소스 라벨에서 project_id를 선택합니다.
  10. 비교 연산자를 선택하고 필드에 값을 입력합니다.
  11. 적용을 클릭합니다.