Kubernetes 이야기

kubernetes에서 nvidia gpu 공유하기 본문

Kubernetes/MLOps

kubernetes에서 nvidia gpu 공유하기

kmaster 2026. 3. 2. 19:08
반응형

 

최근 AI 워크로드가 kubernetes위에 배포되어 운영되는 사례가 증가하고 있다. kubernetes에서 nvidia gpu를 여러 instance 로 사용하기 위해서는 대표적으로 mig, time slicing, multi-process server (mps) 방식이 있다. 이 외에  가상화를 이용한 vGPU ( vGPU 라이선스 필요 ) 기술도 있다.

 

이 중 gpu 공유기술의 대표적인 mig, time slicing, multi-process server (mps) 를 알아보자. 아래 그림은 time slicing, mps, mig 를 이해하기 쉽게 표현한 그림이다.

출처 : https://www.flaticon.com/kr/free-icon/gpu_1089003?related_id=1088744&origin=search

 

 

항목 MIG MPS  Time-Slicing
지원 GPU A30, A100, H100, B100 등
( MIG 를 지원하는 GPU 모델이 존재함 )
Volta 이상 권장 대부분의 GPU가 지원
격리 수준      
    메모리 하드웨어 레벨 완전 격리 격리 없음  격리 없음
    컴퓨팅 SM (Streaming Multiprocessor) 파티셔닝 부분 격리 ( SM 비율 지정 ) 격리 없음
    장애 장애 전파 없음 한 프로세스 장애 시 전체 영향 한 프로세스 장애 시 전체 영향
리소스 분할      
    분할 방식 GPU를 인스턴스로 분할
(pod 할당 시에는 nvidia.com/mig-1g.6gb: "1" 와 같이 프로파일 이름으로 할당해야 함)
SM 비율(%) 기반 분할 시간 기반 교대 사용
(라운드로빈 스케줄링)
    분한 단위 GPU Instance  프로세스 단위 SM 비율 컨테이너/프로세스 단위
    최대 공유 수 최대 7개 인스턴스 최대 48개 클라이언트 제한 없음
    메모리 할당 고정 할당 동적 할당 (전체 메모리 공유) 동적 할당 (전체 메모리 공유)
성능      
    오버헤드 거의 없음 낮음 높음 ( 컨텍스트 스위칭 )
    동시 실행 각 인스턴스 독립 동시 실행 커널 레벨 동시 실행 순차 실행
    지연 시간 낮음 낮음 높음
K8S 사용      
    필수 Plugin nvidia-device-plugin
(strategy: mig)
nvidia-device-plugin
(strategy: mps, K8s 1.28+)
nvidia-device-plugin
(strategy: time-slicing)
    리소스 요청 nvidia.com/mig-1g.6gb: 1
( kubectl describe node 정보의 Labels을 참고하면 된다.)
nvidia.com/gpu: 1
또는
nvidia.com/gpu.shared: 1
(설정에 따라 다름)
nvidia.com/gpu: 1
    설정 복잡도 높음 (프로파일 계획 필요, 재구성 시 GPU 리셋 필요) 중간 (MPS 데몬 관리 필요) 낮음 (ConfigMap 설정만으로 가능)
    모니터링
    (prometheus exporter 기준)
전체 지원 일부지원  N/A

 

운영에서는 가급적 MIG를 추천하지만, 개발환경에서는 MPS나 Time-Slicing 방식이 적합할 것 같다.

 

참고문서

https://github.com/NVIDIA/k8s-device-plugin
https://docs.nvidia.com/deploy/mps/when-to-use-mps.html
https://docs.nvidia.com/deploy/mps/architecture.html
https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/latest/gpu-sharing.html
https://www.researchgate.net/figure/Multi-Stream-MPS-and-MIG-Illustration-ture-Figure-2-a-As-a-software-based_fig1_359309310

https://developer.nvidia.com/blog/improving-gpu-utilization-in-kubernetes/#:~:text=You%20can%20take%20the%20oversubscription%20strategy%20described,to%20execute%20in%20parallel%20on%20the%20GPU.

 

 

 

반응형

'Kubernetes > MLOps' 카테고리의 다른 글

온라인 서빙과 배치 서빙  (0) 2024.05.06
Ollama and Chainlit으로 Langchain과 RAG 구현하기  (0) 2023.12.30
Kafka를 사용하여 실시간 데이터 파이프라인 구축  (1) 2023.12.11
MLflow Serving  (0) 2023.09.09
mlflow  (0) 2023.09.09
Comments