Data Center / Cloud

NVIDIA 데이터센터 모니터링 도구로 GPU 클러스터 효율 극대화

Reading Time: 5 minutes

고성능 컴퓨팅(HPC) 고객들의 워크로드는 빠르게 확장되고 있으며, 생성형 AI, 거대 언어 모델(LLM), 컴퓨터 비전 등 다양한 활용 사례가 GPU 자원 수요의 폭발적인 증가를 이끌고 있습니다. 이에 따라 GPU 효율성은 인프라 최적화의 핵심 과제로 떠오르고 있습니다. 대규모 GPU 클러스터 환경에서는 작은 비효율도 전체 시스템의 병목으로 이어질 수 있습니다.

GPU 사용 최적화를 통해 얻을 수 있는 이점은 다음과 같습니다:

  • 운영 비용 절감
  • 더 많은 워크로드 GPU 자원 제공
  • 개발자 경험 및 처리량 향상

이번 블로그에서는 대규모 클러스터에서 유휴 GPU 낭비를 줄이기 위한 NVIDIA의 접근 방식을 소개합니다. 이 방식은 수백만 달러에 달하는 인프라 비용을 절감할 수 있을 뿐 아니라, 전반적인 개발 생산성과 자원 활용도 개선에도 기여합니다. 업계에서는 GPU가 제대로 관리되지 않거나 최적화되지 않아 제 기능을 하지 못하는 상황을 ‘낭비’로 정의합니다.

GPU 낭비 이해하기

GPU 낭비(GPU waste)는 여러 유형으로 분류될 수 있으며, 각 유형마다 이에 맞는 개별적인 해결책이 필요합니다. 가장 흔한 문제 중 하나는 GPU 자원을 점유하고 있으면서도 실질적인 작업을 수행하지 않고 완전히 유휴 상태에 머무는 작업들입니다. 아래 표는 이러한 낭비 유형들을 요약한 것입니다.

GPU 낭비 유형대응 방법발생 빈도
하드웨어 장애로 인해 GPU를 사용할 수 없음하드웨어 상태를 모니터링하고, 문제를 추적 및 수정하는 Fleet Health 프로그램낮음
GPU는 정상이나 할당되지 않음스케줄러 효율을 개선하는 GPU 점유 최적화 프로그램낮음
GPU를 할당받았지만 계산 자원을 비효율적으로 사용애플리케이션 최적화높음
GPU를 할당받았지만 실제로 사용하지 않음유휴 GPU 감지 및 정리를 위한 낭비 감소 프로그램 보통

표 1. 대규모 인프라 환경에서 GPU 클러스터 효율성 문제, 대응 전략, 발생 빈도 요약

다양한 워크로드를 실행하는 연구 클러스터를 운영하면서, GPU가 유휴 상태에 빠지는 예상된 원인뿐만 아니라 예기치 못한 원인들도 여러 차례 마주하게 됐습니다. 이런 요인들을 정확히 구분하는 일은 쉽지 않지만, 연구자의 생산성에 영향을 주지 않으려면 꼭 필요한 과정입니다. NVIDIA는 GPU 유휴 상태를 반복적으로 유발하는 몇 가지 대표적인 패턴을 확인했습니다. 주요 사례는 다음과 같습니다:

  • CPU 기반 데이터 처리 작업: GPU를 사용하지 않으면서 GPU 노드에서 실행되는 작업
  • 잘못 구성된 작업: 노드 독점 설정으로 인해 GPU를 과도하게 할당한 경우
  • 멈춘 작업: 겉보기에는 실행 중이지만 실제로는 멈춰 있는 작업
  • 인프라 지연: 컨테이너 다운로드나 데이터 로딩 등의 지연
  • 방치된 대화형 세션: 사용하지 않지만 자원을 계속 점유하는 작업

GPU 자원 낭비 줄이기

GPU 유휴 자원 낭비를 대폭 줄이기 위해, NVIDIA는 이론적인 사용률 목표에 의존하기보다는 실제 클러스터의 동작을 관찰하는 데 주력했습니다. 이러한 분석을 통해 근본적인 패턴을 파악할 수 있었고, 광범위한 아키텍처 변경 없이도 운영 기법에 집중함으로써 효율성을 크게 개선할 수 있다는 사실을 확인했습니다.

이 분석을 바탕으로 다음 네 가지 기법에 우선순위를 두었습니다:

  • 데이터 수집 및 분석: GPU 낭비의 주요 원인을 파악하기 위해 사용률 및 작업 기록 데이터를 수집
  • 지표 개발: 기준선 추적과 개선 효과 측정을 위한 GPU 유휴 낭비 전용 지표 개발
  • 고객 협업: 높은 유휴 비율을 유발한 사용자 및 팀과 직접 협력하여 비효율 문제 해결
  • 솔루션 확장: 전체 GPU 클러스터에 적용 가능한 셀프 서비스 도구 및 자동화 파이프라인 구축

GPU 사용률 메트릭 파이프라인 구축

GPU 사용률 메트릭 파이프라인을 구축하기 위해, NVIDIA는 NVIDIA Data Center GPU Manager(DCGM)의 실시간 텔레메트리 데이터를 Slurm 작업 메타데이터와 연동하여 워크로드가 실제로 GPU 자원을 어떻게 소비하는지를 통합적으로 파악할 수 있는 구조를 만들었습니다. Slurm은 5분 단위의 데이터만 제공하지만, 더 높은 해상도의 DCGM 필드와 결합하기에는 충분했습니다.

이 과정에서 핵심 역할을 한 것은 NVIDIA DCGM Exporter의 HPC 작업 매핑 기능이었습니다. 이를 통해 GPU 활동에 정확한 작업 컨텍스트를 태깅할 수 있었고, 이로써 유휴 구간 측정, 낭비 요인 식별, 비효율을 특정 워크플로우에 귀속시키는 기반이 마련되었습니다.

그림 1. DCGM 텔레메트리와 Slurm 작업 데이터를 통합해 작업 단위 GPU 유휴 낭비를 계산하는 파이프라인

파이프라인이 구축된 후, 다음 단계는 분석에 활용할 DCGM 시그널을 검토하고 GPU 유휴 상태를 어떻게 식별할지 정의하는 것이었습니다. 다음 섹션에서는 사용된 메트릭과 작업이 GPU 유휴 시간을 유발한다고 판단하는 기준을 설명합니다.

DCGM 활용하기

DCGM은 NVIDIA의 데이터 센터용 GPU 관리 및 모니터링 프레임워크로, 대규모 GPU 자원을 관찰, 제어, 최적화할 수 있는 강력한 도구와 API를 제공합니다.

DCGM의 핵심은 다양한 메트릭과 텔레메트리 데이터를 ‘필드’라는 구조로 구성해 제공하는 것입니다. 각 필드는 고유한 식별자와 번호를 가지며, GPU 온도, 클럭 속도, 사용률, 전력 소모 등 GPU 상태 전반을 나타냅니다. 사용 가능한 전체 필드 목록은 공식 문서에서 확인할 수 있습니다.

일반적으로 다음과 같은 항목들을 포함합니다:

  • GPU 사용률 메트릭: GPU가 얼마나 활발히 사용되고 있는지를 측정합니다. 연산 코어 부하, 메모리 사용량, I/O 처리량, 전력 소비 등의 지표를 통해 GPU가 실제 작업을 수행 중인지 유휴 상태인지 파악할 수 있습니다.
  • GPU 성능 메트릭: GPU가 얼마나 효율적으로 동작하고 있는지를 나타냅니다. 클럭 속도, 온도 상태, 쓰로틀링 이벤트 등의 지표를 통해 성능과 병목 여부를 평가할 수 있습니다.

GPU 낭비 측정을 위해, NVIDIA는 GPU의 고수준 활동 여부를 판단할 수 있는 기본 지표로 DCGM_FI_DEV_GPU_UTIL 필드를 활용했습니다. 향후 분석에서는 GPU 엔진 사용률을 보다 정밀하게 파악하기 위해 DCGM_FI_PROF_GR_ENGINE_ACTIVE 필드로 전환할 계획입니다.

작업이 유휴 상태로 분류되는 기준은 무엇일까요?

AI 및 머신러닝(ML) 워크로드는 인프라 비효율이나 워크로드 특성상 GPU가 활발히 사용되지 않는 구간을 포함하는 경우가 많습니다. NVIDIA는 다음과 같은 일반적인 시나리오들을 확인했습니다:

  • 컨테이너 다운로드: 작업 시작 시, 여러 호스트에서 컨테이너를 가져오느라 지연되는 경우. 특히 시스템 부하가 크거나 레지스트리 응답이 느릴 때 자주 발생
  • 데이터 로딩 및 초기화: 학습 워크플로우가 시작되기 전에 스토리지로부터 데이터를 받아오는 과정에서 대기 상태 발생
  • 체크포인트 입출력: 체크포인트 저장 및 로딩 중 GPU 사용률이 일시적으로 떨어지는 현상
  • 모델 특이 동작: 일부 모델은 설계상 GPU를 완전히 활용하지 않는 구조

이러한 상황들을 고려해, 일정 시간 이상 GPU가 비활성 상태인 경우를 유휴로 간주하기 위한 기준이 설정되었습니다. NVIDIA는 보수적인 정의를 적용하여, GPU 비활성 상태가 연속으로 1시간 이상 지속될 경우 해당 작업을 유휴 상태로 분류했습니다.

GPU 클러스터 효율 분석을 위한 서비스 및 도구

GPU 낭비 메트릭이 정의된 이후에는, 이 데이터를 실제로 활용 가능한 형태로 만드는 데 중점을 두었습니다. 단순히 유휴 상태를 식별하는 것을 넘어서, 연구자와 플랫폼 팀이 비효율의 원인을 신속하게 파악할 수 있도록 시각화 및 운영 도구를 구축했습니다. 이를 통해 원시 텔레메트리를 명확한 시그널과 자동화된 조치로 전환할 수 있었습니다.

GPU 낭비 메트릭은 다음 두 가지 주요 인터페이스를 통해 제공되었습니다:

  • User portal: NVIDIA 내부 포털로, ML 연구자들이 클러스터, 사용자, 작업 단위의 GPU 사용 현황을 확인할 수 있어 유휴 패턴을 훨씬 쉽게 파악할 수 있음
  • OneLogger: 작업 단계와 GPU 텔레메트리를 연계하는 통합 모니터링 계층으로, 비효율이 발생하는 지점을 더욱 명확하게 보여줌

이 도구들을 통해 GPU 낭비는 더 투명하고 실질적인 개선이 가능한 문제로 바뀌었습니다.

도구: Idle GPU Job Reaper

NVIDIA는 GPU를 더 이상 사용하지 않는 작업을 식별하고 정리하는 서비스를 개발하여, 클러스터 전체에 자동 정리(self-cleaning) 기능을 제공했습니다. 클러스터에는 공통된 추상화 계층 없이 매우 다양한 워크로드가 실행되기 때문에, 사용자가 자신의 작업 특성에 맞게 Reaper의 임계값을 조정할 수 있도록 했습니다. 이를 통해 예측 가능한 유휴 구간과 실제 낭비를 구분할 수 있었습니다.

이 서비스는 다음과 같은 방식으로 작동합니다:

  • DCGM 메트릭을 기반으로 GPU 사용률을 모니터링
  • 장시간 유휴 상태가 지속되는 작업을 식별
  • 해당 작업을 종료하고 유휴 GPU 자원을 회수
  • 회수된 자원 및 사용자 설정 정보를 로그로 기록하고 보고하여 추가 개선으로 연결

이 접근 방식은 예측 가능한 유휴 패턴뿐 아니라 예상치 못한 낭비 상황도 클러스터 전반에 걸쳐 일관되게 처리할 수 있도록 했습니다.

도구: Job Linter

NVIDIA는 잘못 구성된 워크로드를 탐지하기 위한 Job Linter 도구를 개발했습니다. 예를 들어, 노드의 모든 GPU에 대한 독점 접근 권한을 요청했지만 실제로는 일부 GPU만 사용하는 작업처럼, 나머지 GPU를 유휴 상태로 방치하는 경우를 감지할 수 있습니다. 향후 린터의 버전에서는 더 다양한 잘못된 구성 패턴까지 감지할 수 있도록 기능이 확대될 예정입니다.

도구: Defunct Jobs

클러스터에서 시간 제한이 있는 작업이 자주 실행되다 보니, 사용자들이 후속 작업을 긴 체인 형태로 제출하는 일이 많았습니다. 문제는 이러한 후속 작업들이 더 이상 필요하지 않음에도 자원을 예약한 채 대기열에 남아 있다는 점입니다. 또 다른 문제는, 사용자의 작업에 회귀 문제가 생길 경우 동일한 작업이 반복적으로 다량 재실행되어 낭비가 커진다는 것입니다. 이를 해결하기 위해 NVIDIA는 이러한 불필요한 작업을 자동으로 탐지하고 취소하는 도구를 구축하여 낭비를 줄이고 전체 스케줄링 효율을 향상시켰습니다.

교훈과 향후 계획

대규모 환경에서는 사소한 비효율도 빠르게 누적됩니다. 적절한 메트릭을 확보하자, 그 자체만으로도 팀 전반에 책임감과 더 나은 실행을 유도하는 긍정적인 변화가 자연스럽게 일어났습니다. 하지만 메트릭만으로는 충분하지 않으며, 연구자들이 자신의 워크로드 효율성을 개선할 수 있도록 실질적인 가이드를 제공하는 것도 중요했습니다. 이러한 개선 관행이 널리 채택되어야 전체 클러스터 수준에서 의미 있는 성과를 얻을 수 있었습니다. 모니터링 도구는 일상적인 워크플로우에 직접 통합되어야 효과를 발휘하며, 작업 제출 시점과 실험 추적 인터페이스 내에서 사용률 정보를 제공하는 것이 핵심이었습니다.

이러한 노력의 결과, GPU 낭비율은 약 5.5%에서 1% 수준으로 줄었으며, 이는 GPU 가용성을 높이고 고우선순위 워크로드에 더 많은 자원을 제공하는 실질적인 비용 절감으로 이어졌습니다. 이 성과는 운영상의 비효율도 정확히 드러내고 해결하면 클러스터 전체 용량을 크게 회복할 수 있다는 것을 보여줍니다.

또한 측정 과정에서 GPU 유휴 상태를 유발하는 인프라 측면의 여러 문제들도 확인되었습니다. NVIDIA는 앞으로 다음과 같은 개선을 통해 GPU 낭비를 더욱 줄일 계획입니다: 컨테이너 로딩 속도 향상, 데이터 캐싱, 장시간 실행 작업 지원, 디버깅 도구 강화 등.

지금 바로 DCGM 메트릭 수집과 모니터링을 시작하세요. 이러한 시그널은 GPU 사이클이 어디서 낭비되고 있는지를 명확히 보여주며, 연구자들이 자신의 작업을 최적화하고 GPU 자원을 지속적으로 활용할 수 있도록 돕는 간단하고 실용적인 도구를 구축하는 기반이 됩니다.

이 블로그의 연구에는 Mohamed Fawzy, Mohammed Elshall, Bugra Gedik, Michael Hale, Kaiwen Shi, Vishal Patil, Ashita Kulkarni가 참여했습니다.

Discuss (0)

Tags