CUDA 13.4, 공유 GPU 메모리 제한 지원
최근 30일 조회수 — 좋아요 —핵심 요약
엔비디아가 쿠버네티스 공유 GPU에 작업별 메모리 한도를 강제하는 기능과 오픈소스 오퍼레이터를 공개했다.
엔비디아가 CUDA 13.4에 쿠버네티스(Kubernetes) 공유 GPU의 메모리를 작업별로 제한하는 기능을 추가했다. 여러 작업이 GPU 하나를 나눠 쓸 때 각 컨테이너가 약속된 한도를 넘지 못하게 막는다. 지금까지 시분할 방식은 여러 프로세스가 번갈아 GPU를 사용할 수 있었지만 메모리 한도를 강제하지 못했다.1
CUDA 13.4는 정확한 메모리 용량을 지정하거나, 최소 보장량과 여유가 있을 때 확장할 수 있는 최대치를 함께 설정한다. 한도를 넘는 메모리 할당은 더 작은 GPU에서 용량이 부족할 때처럼 실패한다. 각 작업에는 GPU 전체가 아니라 배정된 메모리만 보인다. 연산 방식은 기본값인 시분할 외에 여러 프로세스를 별도 주소 공간에서 동시에 실행하는 MPS(Multi-Process Service)의 SM 공유(sm-sharing)를 선택할 수 있다.
이는 기존 공유 방식 사이의 빈틈을 메운다. MIG(Multi-Instance GPU)는 GPU를 하드웨어 수준에서 격리된 인스턴스로 나누지만, 시분할은 메모리 격리를 제공하지 않았다. CUDA 13.4는 애플리케이션을 수정하지 않고 시분할 작업에 메모리 경계를 적용한다. 다만 CUDA만 설치한다고 쿠버네티스에서 바로 쓸 수 있는 것은 아니다. 노드마다 MPS 관련 데몬을 운영하고, 프로세스가 시작되기 전에 컨테이너별 한도와 연산 방식을 적용하며, GPU 전체가 아닌 작업별 사용량을 측정해야 한다.
엔비디아는 이를 맡을 오픈소스 쿠버네티스 오퍼레이터 gpu-fractioning을 KAI Scheduler 조직의 깃허브에 공개했다. 이 오퍼레이터는 드라이버와 컨테이너 런타임을 설치하는 NVIDIA GPU Operator와 함께 동작한다. 스케줄러가 파드(Pod) 주석에 최소·최대 메모리, 연산 방식, 배정 GPU를 기록하면 gpu-fractioning이 노드에서 이를 강제한다.
KAI Scheduler는 v0.18.0부터 이 구조를 이용하는 NvFractions 모드를 지원하는 첫 스케줄러다. 그러나 기능이 KAI Scheduler에만 묶인 것은 아니다. 필요한 주석을 쓸 수 있는 스케줄러라면 CUDA의 GPU 분할을 적용할 수 있다. 대신 스케줄러는 여유 메모리가 충분한 GPU를 골라야 하며, 하나의 GPU에 시분할과 SM 공유 작업을 섞어서는 안 된다.1
Footnotes
읽기 목록은 이 브라우저에 저장됩니다.
출처
- Memory-Enforced GPU Sharing in Kubernetes with NVIDIA CUDA 13.4 | NVIDIA Technical Blog — NVIDIA Technical Blog
이 글은 위 출처를 근거로 자동 생성된 뒤 발행됐습니다. 원문을 함께 확인해 주세요. 교차 보도 없이 단독 출처로 작성됐습니다.