본문으로 건너뛰기

GPU 관리 시스템은 Kubernetes 클러스터에서 모든 GPU 리소스를 실시간으로 추적하고 관리하도록 설계되었습니다. 현재 상태를 표시할 뿐만 아니라 여러 클러스터의 통합 관리도 지원하며, 각 사용자 역할에 맞춤화된 정보를 제공하고, GPU 사용 추세를 모니터링하고 평가할 수 있는 분석 도구를 포함합니다.

주요 기능

  • 클러스터 레벨 GPU 모니터링
    • 여러 클러스터의 GPU 리소스를 한눈에 조회
    • 클러스터별 GPU 사용률을 한눈에 비교
    • 리소스 부족 클러스터 및 유휴 리소스 보유 클러스터를 식별
  • Multi-Instance GPU (MIG) 지원
    • 단일 GPU를 여러 인스턴스로 분할하 유연하게 활용
    • 각 MIG 인스턴스에 대한 독립 메트릭 수집
    • 물리적 GPU 내 인스턴스 간 리소스 경합 모니터링
  • 실시간 메트릭 시각화
    • 15초마다 GPU 상태 업데이트
    • 색상 코드(Normal/Warning/Critical)로 상태 구분
    • 시계열 차트를 통해 추세 분석
  • 역할 기반 뷰
    • 시스템 관리자: 전체 인프라 헬스
    • 프로젝트 관리자: 팀의 GPU 풀 사용 상태
    • 개발자: 본인 워크로드의 상세 메트릭

주요 메트릭

GPU 활용률

GPU 활용률은 가장 자주 모니터링되는 메트릭 중 하나이지만 가장 쉽게 오해할 수 있는 메트릭이기도 합니다. 이 메트릭은 GPU의 계산 코어가 계산을 수행하는 데 적극적으로 사용된 시간의 비율을 나타냅니다. 예를 들어, GPU 활용도가 80%라면, 이는 측정된 기간의 80% 동안 GPU가 계산을 수행하고 나머지 20% 동안은 유휴 상태였음을 의미합니다.

  • 정상 범위:
    • 할당된 GPU: 50% 이상 (권장: 75–85%)
    • 미할당 GPU: 5% 이하 (권장: 0%)
  • 문제 판단:
  • 낮은 활용률 (20% 이하): 데이터 로딩 병목 현상, 작은 배배치 사이즈 또는 CPU 병목 현상 가능성
    • 비정상적인 활동 (할당되지 않은 GPU > 20%): 미완료 프로세스 또는 보안 문제 가능성

메모리 활용률

메모리 활용률은 GPU 메모리가 읽기 및 쓰기 작업을 수행하는 시간의 비율을 나타냅니다. 이는 메모리 사용량과는 다른 개념입니다. 메모리 사용량은 얼마나 많은 메모리가 할당되었는지를 보여주는 반면, 메모리 활용률은 그 메모리가 얼마나 활발하게 사용되고 있는지를 반영합니다.

GPU 활용률메모리 활용률해석
높음낮음정상 (계산 집약적)
낮음높음메모리 대역폭 병목 현상
낮음낮음데이터 로딩/CPU 병목 현상
메모리 사용 주의:
  • 95% 초과: 메모리 부족 위험
  • 지속적인 증가: 메모리 누수 가능성

온도

온도는 GPU 건강의 가장 직접적인 지표입니다. GPU는 높은 성능을 위해 상당한 전력을 소비하며, 상당한 열을 발생시킵니다. 이 열이 적절히 제어되지 않으면 성능 저하를 초래할 뿐만 아니라 하드웨어에 손상을 줄 수 있습니다. 대부분의 데이터 센터 GPU의 정상 작동 온도 범위는 50°C에서 80°C 사이입니다.

온도 수준:
온도상태조치
< 70°C정상-
70–80°C양호-
80–85°C주의냉각 확인
85–90°C경고SW 스로틀링 시작
≥ 90°C치명적HW 스로틀링, 즉각적인 조치 필요
온도 상승 원인:
  • 냉각 팬 고장 또는 먼지 축적
  • 서버실 환경 온도 상승
  • 노드 내 GPU 간의 열 간섭 (동시 고부하)

전력 사용량

전력 사용량은 GPU가 현재 소비하고 있는 전력을 와트(W) 단위로 나타냅니다. 각 GPU 모델은 정격 전력 한계(Power Limit)를 가지고 있으며, 예를 들어 NVIDIA A100은 기본적으로 400W가 한계입니다. 이 한계는 관리자가 소프트웨어적으로 조정할 수 있습니다.

  • 전력 모니터링 목적:
    • 성능 제한 감지: Power Limit 대비 95% 이상이면 전력 제약
    • 비용 관리: 고전력 소비 GPU의 비효율 파악
    • 하드웨어 문제: 비정상 전력 패턴 감지
  • 분석 포인트:
    • GPU 활용률 낮음 + 전력 높음 = 비효율 (메모리 전송 오버헤드)
    • GPU 활용률 높음 + 전력 높음 = 정상 (열심히 작동 중)

클럭 스로틀링

GPU는 CPU와 마찬가지로 클럭 속도로 작동합니다. 클럭이 빠를수록 더 많은 연산을 수행할 수 있습니다. 하지만 GPU는 항상 최대 클럭으로 작동하지 않습니다. 전력 소비와 온도를 관리하기 위해 상황에 따라 클럭을 조절하는데, 이를 클럭 스로틀링(Clock Throttling)이라고 합니다.

스로틀링은 여러 이유로 발생할 수 있으며, 각각 다른 의미를 가집니다. 시스템이 기록하는 클럭 스로틀링의 이유를 이해하는 것이 중요합니다

Throttle 유형의미심각도조치
GPU Idle유휴 상태정상없음
SW Power Cap관리자가 설정한 전력 한도정상의도된 제한
SW Thermal온도 > 85°C주의냉각 개선 검토
HW Thermal온도 > 90°C심각즉각적인 냉각 점검
HW Power Brake순간적인 전력 과부하경고전원 공급 확인

스로틀링 이벤트의 빈도를 모니터링하는 것이 중요합니다. 가끔 발생하는 것은 괜찮지만, 지속적이거나 빈번하다면 근본 원인을 해결해야 합니다. 시스템은 클럭 스로틀 이벤트의 수량을 추적하므로, 이 숫자가 급증한다면 조사가 필요합니다.

SM 활성도

SM은 Streaming Multiprocessor의 약자로, GPU의 핵심 연산 유닛입니다. 하나의 GPU에는 수십에서 수백 개의 SM이 있으며, 각 SM은 수십 개의 코어를 포함합니다. SM 활성도는 이러한 SM들이 얼마나 활발하게 연산을 수행하는지를 나타냅니다.

SM 활성도는 GPU 활용률과 유사하지만 더 세밀한 정보를 제공합니다. GPU 활용률이 "GPU가 일하는 시간"을 나타낸다면, SM 활성도는 "GPU가 일할 때 얼마나 많은 코어가 실제로 사용되는지"를 보여줍니다. 예를 들어 GPU 활용률이 80%라고 해서 모든 SM이 80%씩 사용되는 것은 아닙니다. 일부 SM만 100% 사용되고 나머지는 유휴 상태일 수 있습니다.

권장 범위:
  • 할당된 GPU: 50% 이상 (이상적으로는 75% 이상).
  • 낮은 SM 활성도 → 병렬성 부족 → 배치 크기 증가 또는 모델 병렬화 필요

ECC 오류

ECC는 Error Correcting Code의 약자로, GPU 메모리에서 발생하는 비트 오류를 자동으로 감지하고 수정하는 기술입니다. 데이터센터급 GPU는 대부분 ECC 메모리를 탑재하여 데이터 무결성을 보장합니다. AI 학습이나 과학 계산처럼 정확성이 중요한 작업에서는 ECC가 필수적입니다.

ECC 오류에는 두 가지 유형이 있습니다. Single Bit Error(SBE)는 한 비트만 잘못된 경우로, ECC가 자동으로 수정할 수 있습니다. 가끔 발생하는 SBE는 정상이며, 우주선(cosmic rays)이나 전기적 노이즈 등으로 인해 자연스럽게 발생할 수 있습니다. Double Bit Error(DBE)는 두 비트 이상이 잘못된 경우로, ECC가 수정할 수 없습니다. DBE가 발생하면 데이터 손상이나 시스템 오류로이어질 수 있습니다.

ECC 오류를 모니터링하는 이유는 메모리 하드웨어의 건강 상태를 추적하기 위해서입니다. 집계 ECC 오류(Aggregate ECC Errors)가 1000개 이상 누적되면 해당 GPU의 메모리 교체를 검토해야 합니다. 특히 ECC 오류율이 갑자기 증가하는 패턴이 보인다면, 메모리가 손상되고 있다는 강력한 신호입니다.

단 하나의 DBE가 발생하더라도 이는 중대한 사건으로 분류됩니다. 영향을 받은 GPU는 즉시 작업에서 제거하고 점검해야 합니다. 이는 특히 중요한 훈련 작업 중에 중요하며, DBE는 결과를 신뢰할 수 없게 만들 수 있습니다.

오류 유형
  • Single Bit Error (SBE): 자동 수정 가능, 가끔 발생은 정상
  • Double Bit Error (DBE): 수정 불가, 데이터 손상 가능
Action Criteria
  • 집계된 ECC 오류 ≥ 1,000: GPU 메모리 교체 검토
  • 최소 하나의 DBE: 중대한 상태, 즉시 작업 중단 및 점검

GPU 상태 평가 체계

개별 메트릭의 의미를 이해했다면, 이제 이러한 메트릭들을 종합하여 GPU의 전반적인 건강 상태를 어떻게 평가하는지 알아보겠습니다. 본 시스템은 단순히 숫자를 나열하는 것을 넘어서, 여러 메트릭을 분석하여 각 GPU를 6단계로 분류하고, 관리자와 사용자가 한눈에 상태를 파악할 수 있도록 합니다.

상태 레벨

각 GPU는 평가되어 여섯 개 상태 수준 중 하나로 분류됩니다. 이러한 상태는 색상으로 구분되어 대시보드에 표시되며, 관리자는 수십 개의 GPU를 빠르게 스캔하고 즉시 문제를 발견할 수 있습니다.

상태색상의미예시
Excellent초록최적 성능사용률 90%, 온도 65°C
Good초록정상 작동사용률 60%, 온도 75°C
Bad노랑비최적 성능사용률 30%, 조정 필요
Poor주황심각한 비효율사용률 10%, 즉각 점검 필요
Warning주황색경고 상태온도 87°C, 스로틀링 감지됨
Critical빨간색즉각적인 조치 필요온도 92°C, XID 오류
  • Excellent: 모든 것이 이상적으로 작동하는 최고의 상태입니다. 할당된 GPU가 높은 효율로 작업을 수행하고 있으며, 온도는 시원하고, 모든 메트릭이 최적 범위 내에 있습니다. 이는 녹색으로 표시되며, 사용자는 안심하고 작업을 계속할 수 있습니다. 시스템 관리자 입장에서 전체 클러스터의 대부분이 Excellent 상태라면 인프라가 건강하게 운영되고 있다는 뜻입니다.
  • Good: 정상적으로 작동하는 양호한 상태입니다. 모든 메트릭이 허용 범위 내에 있지만 Excellent만큼 최적화되지는 않았습니다. 예를 들어 GPU 사용률이 60%로 권장 범위를 만족하지만 이상적인 75%에는 못 미치는 경우입니다. 이 역시 녹색으로 표시되며문제는 없지만, 개선의 여지가 있습니다.
  • Bad: 성능이 부족한 상태입니다. GPU가 할당되어 있지만 제대로 활용되지 못하고 있습니다. GPU 사용률이 30%밖에 안 되거나, 메모리가 거의 사용되지 않는 등의 비효율이 발생합니다. 이는 노란색으로 표시되며, 사용자가 워크로드를 최적화해야 한다는 신호입니다. 비용이 낭비되고 있지만 즉각적인 위험은 없습니다.
  • Poor: 매우 부족한 성능 상태입니다. Bad보다 더 심각한 비효율로, GPU 사용률이 10% 미만이거나 할당되었지만 거의 아무 작업도 하지 않는 경우입니다. 이는 주황색으로 표시되며, 즉시 조사가 필요합니다. 코드에 버그가 있거나, 작업이 실패했지만 GPU는 여전히 할당된 상태이거나, 개발자가 GPU 반납을 잊어버린 경우일 수 있습니다.