HPC & GPU Engineering/Platform Essentials

📘 고성능 AI 컴퓨팅 인프라 용어 사전 (34) – Utilization Optimization / QoS: GPU 자원 활용률 최적화 전략

ygtoken 2025. 8. 10. 08:14
728x90

 

AI 인프라를 운영하다 보면 자주 듣는 말이 있습니다.

 

“GPU가 부족해요.”
그런데 정작 nvidia-smi를 열어보면… 놀고 있는 GPU가 많습니다.

 

이는 GPU가 아예 할당되지 않았거나,

할당만 되었지 실제로는 거의 사용되지 않고 있는 상태 때문입니다.

이를 **GPU 유휴 자원(Idle Resource)**이라고 합니다.

 

이번 글에서는 GPU 활용률을 높이기 위한 전략,

그리고 QoS(Quality of Service) 설정을 통해 자원 낭비를 줄이는 방법을 정리합니다.

 


GPU Utilization이란?

항목 설명
정의 주어진 시간 동안 GPU가 실제 연산에 사용된 비율
측정 nvidia-smiutilization.gpu (0~100%)
예시 GPU가 할당되어 있지만 0%면 낭비 상태
원인 짧은 inference job, I/O 대기, batch size 너무 작음 등

 


낭비되는 패턴 예시

패턴 설명
대기 중인 Job에 GPU 선점 낮은 우선순위 job이 높은 GPU 선점
추론 Job이 5%만 사용 GPU를 독점하면서도 실 사용량은 매우 적음
긴 학습 Job 중간에 idle 시간 발생 데이터 로딩 병목, I/O 지연
사용자별 GPU quota 고정 일부 유저만 GPU 할당, 나머지는 기다림

 


최적화 전략

전략 설명
MIG + Shared GPU GPU를 논리적으로 나누어 여러 job에 분배
Job Preemption / Overcommit idle 시 다른 job을 임시로 사용
Fair Share Scheduler 사용자, 그룹별 공정 자원 분배
Inference Job Merge 유사한 추론 요청을 하나로 병합
Job Time Limit 설정 오래 가는 Job 제한 (Slurm, Volcano 등)

 


QoS(Quality of Service)란?

 

Kubernetes에서는 Pod마다 QoS 클래스를 지정해,

자원 선점/회수 정책을 정할 수 있습니다.

QoS Class  설명 예시
Guaranteed CPU/GPU fully reserved, 절대 회수 불가 mission-critical job
Burstable 사용량 기준 회수 가능 일반 workload
BestEffort 요청 없이 실행, 가장 먼저 제거 대상 테스트 Job
kubectl describe pod <name> 로 QoS 확인 가능

 


실무 팁

 

  • nvidia-smi + dcgm-exporter 기반으로 idle GPU 추적
  • Volcano 등 AI 스케줄러의 preemption 기능 활용
  • GPU 할당 정책을 **“실제 사용량 기반”**으로 튜닝
  • 사용자 교육: 1 GPU만 필요한 Job에 4개씩 할당하는 패턴 제거

 


마무리

 

GPU가 부족한 게 아닙니다.

GPU가 놀고 있는 겁니다.

 

Utilization을 높이고,

QoS 정책을 활용해 고가형 자원을 효율적으로 배치하면

비용은 줄이고, 성능은 높일 수 있습니다.

 

 

728x90