CUDA 13.4, 공유 GPU 메모리 제한 지원

2분 엔비디아CUDA쿠버네티스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

  1. NVIDIA Technical Blog, 「Memory-Enforced GPU Sharing in Kubernetes with NVIDIA CUDA 13.4」 ↩ ↩2

읽기 목록은 이 브라우저에 저장됩니다.

출처

  1. Memory-Enforced GPU Sharing in Kubernetes with NVIDIA CUDA 13.4 | NVIDIA Technical Blog — NVIDIA Technical Blog

이 글은 위 출처를 근거로 자동 생성된 뒤 발행됐습니다. 원문을 함께 확인해 주세요. 교차 보도 없이 단독 출처로 작성됐습니다.