GPU 스케줄링을 위한 추천 설정/도구 문의합니다

Cloud-native AI 워크로드를 고려할 때, GPU 스케줄링을 위해 추천하는 설정이나 도구는 무엇이 있나요?

[CloudBro AI Bot Response]
Cloud-native AI 워크로드에서 GPU 스케줄링을 효율적으로 관리하기 위해 다음과 같은 설정과 도구들을 추천합니다:

  1. Kubernetes와 GPU 지원
    • Kubernetes는 GPU 자원 스케줄링을 기본적으로 지원합니다.
    • NVIDIA Device Plugin을 클러스터에 설치하여 GPU 자원을 노드에 노출시키고, Pod 스펙에 resources.limits.nvidia.com/gpu를 지정해 GPU 할당을 관리할 수 있습니다.
    • GPU 자원 요청 및 제한을 명확히 설정하여 워크로드 간 자원 충돌을 방지합니다.
  2. KubeVirt 또는 Virtual GPU (vGPU) 활용
    • 가상화 환경에서 GPU 자원을 분할하여 여러 컨테이너나 VM에 할당할 수 있습니다.
    • NVIDIA vGPU 솔루션을 통해 GPU 자원의 효율적인 공유가 가능합니다.
  3. 스케줄러 확장 및 커스텀 스케줄러
    • 기본 Kubernetes 스케줄러 외에 GPU 워크로드에 특화된 커스텀 스케줄러(예: Volcano, NVIDIA GPU Operator 포함)를 도입해 우선순위, 공정성, 예약 등을 세밀하게 조정할 수 있습니다.
    • Volcano는 AI/ML 배치 작업에 적합한 스케줄링 기능을 제공합니다.
  4. 워크로드 최적화 도구
    • Kubeflow, MLflow 등 AI/ML 워크로드 관리 플랫폼과 통합하여 GPU 자원 할당과 파이프라인 실행을 자동화 및 최적화할 수 있습니다.
  5. 모니터링 및 자동 확장
    • Prometheus, Grafana, NVIDIA DCGM Exporter 등을 활용해 GPU 사용률을 모니터링하고, 필요 시 Horizontal Pod Autoscaler(HPA) 또는 Vertical Pod Autoscaler(VPA)로 자동 확장을 적용합니다.
      요약하면, Kubernetes 환경에서 NVIDIA Device Plugin과 같은 GPU 지원 도구를 활용하고, 필요에 따라 Volcano 같은 AI 특화 스케줄러를 도입하는 것이 효과적입니다. 또한 모니터링과 자동 확장 기능을 병행하면 GPU 리소스 활용도를 극대화할 수 있습니다.
1 Like

기본 K8S도 기본적인 스케줄링을 지원하나 제한적이고요.
K8S 기반에 추가 할 수 있는 위에서 언급된 Volcano, Kueue, 최근 엔비디아에 흡수되고 오픈소스로 풀린 KAI (이전 이름은 run:ai)가 있습니다.

5 Likes

종록님 제가 엄청 예전에 올린 질문인데 ㅎㅎㅎ 이렇게 답변 주셔서 감사합니다😄

Cloud-native 환경에서 AI 워크로드를 운영할 때 GPU 스케줄링 방식을 어떻게 가져가는 것이 좋을지에 대해 문의 주신 내용은, 실제로 운영 경험이 많지는 않지만 공부하면서 접한 사례들을 기준으로 보면 몇 가지 선택지가 비교적 공통적으로 언급되는 것 같습니다. 그 범위 안에서 정리해보면 아래와 같은 방향이 실무에서도 많이 고려되는 것으로 보입니다.

첫째로는 NVIDIA에서 제공하는 GPU Operator와 Device Plugin을 함께 사용하는 기본 구성이 가장 널리 쓰이는 선택지라고 합니다. Kubernetes에서 GPU 리소스를 자동으로 발견하고, MIG 분할이나 드라이버 관리를 통합해주는 역할을 하기 때문에 개별 노드에 수동 작업을 할 필요가 거의 없다는 점이 장점으로 언급됩니다. 특히 AI 훈련·추론 워크로드가 혼재된 환경이라면 MIG를 활용해 GPU를 세분화하는 전략이 안정적으로 거론되는 편입니다.

두 번째로는 워크로드 특성에 맞춰 Volcano나 Kueue 같은 스케줄러 확장 도구를 도입하는 방식입니다. 기본 스케줄러만으로도 단일 GPU 작업은 문제없이 돌아가지만, 여러 팀이나 여러 AI 잡이 동시에 돌아가는 환경에서는 GPU 점유 정책, 대기열 관리, 우선순위 설정 등에 대한 요구가 커진다고 합니다. 이런 상황에서는 Volcano의 gang-scheduling 기능이나 Kueue의 큐 기반 자원 할당 모델이 유용하다는 의견을 자주 보았습니다.

또 하나 흥미로운 흐름은 분산 학습이나 대규모 파이프라인을 돌릴 때 Kubeflow Training Operator(PytorchJob·MPIJob 등) 같은 고수준 툴을 함께 사용하는 방식입니다. 이 경우 스케줄링은 Kubernetes가 담당하지만, 분산 학습을 위한 프로세스 그룹 관리나 launch 설정을 Training Operator가 대신 해주기 때문에 결과적으로 GPU 활용률이 더 안정적으로 유지되는 구조가 만들어진다는 점이 자주 언급됩니다.

정리하면, 운영 규모나 워크로드 성격에 따라 차이가 있기는 하지만,
(1) NVIDIA Operator 기반의 표준 환경 구성,
(2) AI 전용 스케줄러 확장(Volcano/Kueue),
(3) 분산 학습 프레임워크와의 통합(Kubeflow)

이 세 가지 흐름이 Cloud-native AI 환경에서 GPU 스케줄링을 구축할 때 가장 공통적으로 거론되는 전략으로 보였습니다. 실제 운영 경험은 없지만 학습한 내용 기준으로는 이 정도가 현실적으로 참고할 만한 방향이라고 생각합니다.

1 Like