728x90
AI 워크로드는 다음과 같은 특징이 있습니다:
- GPU를 쓰는 동안에는 매우 집중적으로 사용하지만
- 끝나면 한동안 아무것도 안 함 (idle)
- 처리량은 시점마다 급격히 변동
이런 환경에서 고정된 GPU 노드 수로 클러스터를 운영한다면?
- 자원 낭비
- 비용 증가
- GPU 부족 시 대기 발생
따라서 AI 인프라에서는
GPU-aware AutoScaler를 통해 GPU 사용량 기반으로
Pod이나 노드를 자동으로 축소/확대하는 구조가 필수입니다.
✅ AutoScaler란?
| 종류 | 설명 |
| Horizontal Pod Autoscaler (HPA) | Pod 개수를 CPU/GPU 사용률 기준으로 자동 조정 |
| Vertical Pod Autoscaler (VPA) | Pod에 할당된 리소스 (limit/request)를 자동 조정 |
| Cluster Autoscaler (CA) | 전체 노드 수를 자동 조정 (노드 풀 스케일 인/아웃) |
✅ GPU-aware란?
기본 K8s AutoScaler는 CPU/Memory만 감지
→ GPU 사용률(metric), 할당 여부, GPU idle 상태 등을 감지하려면
별도의 커스텀 로직 또는 외부 컨트롤러가 필요
✅ AutoScaling 전략 유형
| 전략 | 설명 |
| 사용률 기반 (Utilization-based) | GPU 사용률이 일정 % 이상이면 확장 |
| 큐 기반 (Queue-based) | 실행 대기 Job이 있을 때 확장 |
| 이벤트 기반 (Event-triggered) | 특정 Job 완료, 시간 등 조건에 따라 조정 |
| 예약 기반 (Reservation-aware) | 미리 예약된 Job 수량에 따라 확장 |
✅ GPU-aware AutoScaler 구성요소
| 구성 | 역할 |
| Metric Exporter | GPU 사용률 수집 (DCGM, nvidia-dcgm-exporter) |
| Prometheus + Custom Rule | GPU 사용률 기반 알림/트리거 생성 |
| K8s Autoscaler | Trigger에 따라 Pod/Node 자동 조정 |
| Custom Controller | GPU 상태 감지 + 조건 설정 + 실행 로직 |
| Job Scheduler 연동 | Slurm, Volcano 등과 연계 가능 |
✅ 실전 적용 예시
- 모델 추론 서비스에서 GPU 사용률이 80% 초과 시 Pod 2개 추가
- idle GPU가 10분 이상 지속되면 Node 자동 제거
- 신규 학습 Job 대기 중 → Node Group 확장
- Reserved Node + Spot Node를 구분하여 AutoScaler 우선순위 설정
✅ 도구 및 프레임워크
| 도구 | 설명 |
| K8s Cluster Autoscaler | 기본 노드 스케일 인/아웃 지원 |
| Karpenter (AWS) | 조건 기반 Pod placement + 확장 |
| Volcano Scheduler | AI Job 기반 GPU-aware 배치 + Autoscale 연계 |
| DCGM Exporter | GPU 사용률을 Prometheus로 수집 |
| nvidia-k8s-device-plugin | GPU 상태 인식 및 헬스 체크 |
✅ 마무리
AI 인프라는 “필요할 때만 GPU를 쓰는 구조”로 가야
비용 낭비 없이 안정적인 서비스가 가능합니다.
GPU-aware AutoScaler는 AI 인프라의 “반응성”과 “비용 최적화”를 모두 만족시키는 핵심 전략입니다.
728x90