AI·ML 워크로드용 쿠버네티스 리소스 할당 및 GPU 스케줄링
1. 서론
인공지능(AI)과 머신러닝(ML) 워크로드는 일반적인 애플리케이션에 비해 훨씬 높은 컴퓨팅 자원을 요구합니다. 특히 대규모 데이터셋을 기반으로 한 모델 학습이나 추론 과정에서는 CPU만으로는 성능 한계에 도달하기 쉽습니다. 이에 따라 GPU(Graphic Processing Unit)는 필수적입니다. 그러나 GPU는 희소하고 고가의 자원이기 때문에, 이를 쿠버네티스(Kubernetes) 환경에서 적절히 할당하고 스케줄링하는 것은 매우 중요합니다. 본 글에서는 쿠버네티스 기반에서 AI·ML 워크로드를 위한 리소스 할당 및 GPU 스케줄링 전략을 심층적으로 다루겠습니다.
2. 쿠버네티스 리소스 모델과 AI·ML 특성
2.1 리소스 요청(Request)과 제한(Limit)
쿠버네티스에서는 각 파드(Pod)가 사용할 수 있는 CPU, 메모리, 스토리지, GPU 등의 리소스를 명시적으로 설정할 수 있습니다. 이때 사용되는 기본 단위가 요청(Request)과 제한(Limit)입니다.
- Request: 파드가 실행될 때 최소 보장받는 리소스 양입니다.
- Limit: 파드가 최대 사용할 수 있는 리소스 양입니다.
AI·ML 워크로드는 훈련(training) 과정에서는 엄청난 리소스를 요구하고, 추론(inference) 단계에서는 상대적으로 적은 리소스를 소비합니다. 이 특성을 고려해 동적으로 리소스 전략을 수립해야 합니다.
2.2 AI·ML 워크로드의 특징
- 높은 GPU 및 CPU 사용량
- 메모리 집약적 작업
- 장시간 실행되는 작업
- 실패 복구가 어려운 장기성 작업
따라서 리소스 부족이나 노드 장애 시 빠르게 복구하거나 이중화하는 구조보다는, 처음부터 신중한 배치와 스케줄링이 더 중요합니다.
3. 쿠버네티스에서 GPU 활용 준비
3.1 NVIDIA Device Plugin 설치
기본 쿠버네티스는 GPU를 인식하지 못합니다. NVIDIA에서는 이를 위해 별도의 Device Plugin을 제공합니다.
설치 방법은 다음과 같습니다.
kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/master/nvidia-device-plugin.yml
설치 후 GPU가 탑재된 노드들은 nvidia.com/gpu 리소스 타입을 가지게 되며, 이를 통해 스케줄러가 해당 노드를 선택할 수 있습니다.
3.2 파드에서 GPU 요청하기
GPU를 사용하는 파드를 정의할 때 다음처럼 요청(request)과 제한(limit)을 설정합니다.
apiVersion: v1
kind: Pod
metadata:
name: gpu-ai-job
spec:
containers:
- name: training-container
image: my-ai-image:latest
resources:
requests:
nvidia.com/gpu: 1
limits:
nvidia.com/gpu: 1
이 설정은 파드가 반드시 1개의 GPU를 요구하며, 클러스터 스케줄러는 이를 고려하여 배치합니다.
4. GPU 스케줄링 전략
4.1 기본 스케줄링
쿠버네티스 기본 스케줄러는 노드 상태 및 리소스 가용성에 따라 GPU 파드를 자동 배치합니다. 하지만 기본 스케줄링만으로는 아래 문제가 발생할 수 있습니다.
- 특정 GPU 노드 과부하
- 비효율적 GPU 자원 사용
- 우선순위 높은 작업 차단
이를 해결하기 위해 다양한 스케줄링 최적화 방법을 적용할 수 있습니다.
4.2 GPU 친화 스케줄링 최적화
- Affinity/Anti-Affinity: GPU 자원을 가진 노드 선호 설정
- Taints and Tolerations: GPU 노드를 특정 워크로드에만 사용하도록 제한
- PriorityClass: 중요한 AI 워크로드에 높은 스케줄링 우선순위 부여
예시로, GPU 노드에 taint를 추가하면 다음과 같습니다.
kubectl taint nodes <gpu-node> nvidia.com/gpu=true:NoSchedule
이후 toleration이 설정된 파드만 해당 노드에 배치될 수 있습니다.
5. GPU 공유와 Multi-Instance GPU(MIG)
5.1 GPU 공유 필요성
GPU 하나를 하나의 워크로드에 독점적으로 사용하는 것은 비효율적일 수 있습니다. 특히 경량 추론 서비스는 GPU를 일부만 사용합니다. 이 경우 GPU를 여러 파드가 공유할 수 있다면 자원 활용률이 대폭 향상됩니다.
5.2 NVIDIA MIG 기능
NVIDIA A100 이상의 GPU는 **MIG(Multi-Instance GPU)**를 지원합니다. 하나의 GPU를 여러 개의 작은 독립 인스턴스로 분할하여 다수의 파드가 동시에 사용할 수 있게 합니다.
MIG 설정은 nvidia-device-plugin에서 자동으로 감지되며, 쿠버네티스에서는 마치 별개의 GPU처럼 인식합니다.
6. AI·ML 워크로드용 스케일링 전략
6.1 수평적 확장(Horizontal Pod Autoscaler)
추론 워크로드처럼 짧고 가벼운 작업은 **수평적 확장(HPA)**이 유효합니다. CPU 사용량이나 GPU Memory 사용량 기반으로 파드 수를 조절할 수 있습니다.
단, GPU 리소스가 희소할 경우 GPU 사용량 기반 오토스케일러가 별도로 필요할 수 있습니다.
6.2 수직적 확장(Vertical Pod Autoscaler)
훈련 작업처럼 장기 실행형 워크로드는 필요 리소스를 동적으로 조정하는 VPA가 적합합니다. 그러나 GPU 워크로드에서는 대부분 수직 확장(VPA)보다 처음부터 정확한 Request/Limit 설정이 선호됩니다.
7. GPU 자원 모니터링 및 최적화
7.1 Metrics Server와 GPU 모니터링
쿠버네티스 기본 metrics-server는 GPU 사용량을 수집하지 않습니다. NVIDIA에서는 별도로 DCGM Exporter를 제공하여 GPU 사용량을 Prometheus와 연동할 수 있습니다.
helm install dcgm-exporter nvidia/dcgm-exporter
이를 통해 GPU Utilization, Memory Usage, Temperature 등 다양한 메트릭을 수집할 수 있습니다.
7.2 Prometheus + Grafana 대시보드 구축
GPU 모니터링 데이터는 Prometheus에 수집한 후 Grafana 대시보드를 통해 실시간 모니터링할 수 있습니다. 이 방식은 GPU 과부하 및 병목 지점을 빠르게 감지하여 조치할 수 있게 해줍니다.
8. 실전 적용 사례
8.1 대규모 모델 학습 클러스터
- NVIDIA A100 8장 탑재 노드
- Node Affinity와 Taint/Tolerations 사용
- GPU Memory Utilization 모니터링 후 오토스케일링
8.2 경량 추론 서비스
- MIG 활성화
- 1개의 GPU를 7개의 인스턴스로 분할
- 높은 요청 처리량 달성, GPU 자원 낭비 최소화
9. 결론
AI·ML 워크로드는 그 특성상 고성능 리소스를 필요로 하며, GPU는 이러한 워크로드의 성능을 극대화하는 데 핵심적입니다. 쿠버네티스 환경에서는 GPU를 효율적으로 할당하고 스케줄링하기 위해 다음과 같은 전략을 필수적으로 적용해야 합니다.
- NVIDIA Device Plugin 설치 및 관리
- 정확한 리소스 요청(Request) 및 제한(Limit) 설정
- GPU 친화 스케줄링 최적화
- MIG 기반 GPU 공유 활성화
- Prometheus+Grafana를 통한 GPU 모니터링
이러한 요소들을 통합적으로 고려할 때, AI·ML 워크로드의 성능과 안정성, 그리고 비용 효율성을 극대화할 수 있습니다. 빠르게 성장하는 AI 시장에서 쿠버네티스를 통한 효율적 GPU 관리와 운영은 앞으로 더욱 중요한 역량이 될 것입니다.
'IT개발' 카테고리의 다른 글
실시간 데이터 스트리밍 아키텍처: Apache Flink vs Kafka Streams (0) | 2025.05.01 |
---|---|
데이터 레이크하우스(Lakehouse) 구현: Delta Lake vs Apache Iceberg (0) | 2025.05.01 |
데이터 메쉬(Data Mesh) 도입 가이드와 조직별 권한 분산 설계 (0) | 2025.05.01 |
하이브리드·멀티클라우드 데이터 동기화 패턴(Cloud Data Plane) (0) | 2025.05.01 |
VM 기반 워크로드 마이그레이션: Virtual to Container 전환 전략 (0) | 2025.05.01 |