콘텐츠로 이동

RBLN NPU DRA 드라이버

RBLN NPU DRA 드라이버는 Kubernetes의 Dynamic Resource Allocation(DRA) 프레임워크로 RBLN NPU를 할당합니다.

Kubernetes Device Plugin은 노드별로 고정된 수의 NPU 리소스를 제공합니다. DRA를 사용하면 워크로드가 제품 타입, NUMA 위치, PCIe 토폴로지 등의 조건에 맞는 NPU를 요청할 수 있습니다. 디바이스 목록과 선택 조건은 Kubernetes Resource API(resource.k8s.io) 오브젝트로 정의합니다.

설치는 NPU Operator 설치와 DRA 구성을 따릅니다. 기본 요청과 할당 결과 확인은 DRA로 NPU 요청하기에서, 수량·제품명·PCIe 토폴로지·UUID 조건을 지정하는 예제는 DRA로 NPU 할당 조건 지정하기에서 확인할 수 있습니다.

사전 준비

  • Kubernetes v1.34.0 이상
  • RBLN NPU Operator 설치 및 DRA 모드 활성화
  • RBLN Container Toolkit 활성화(CDI 기반 장치 주입)

Warning

NPU DRA 드라이버는 Device Plugin이나 Sandbox Device Plugin과 함께 활성화할 수 없습니다. 같은 NPU가 중복으로 노출되기 때문입니다. 기존에 Device Plugin을 사용 중이라면, 비활성화하기 전에 rebellions.ai/npu limits로 NPU를 요청하던 워크로드를 ResourceClaim 방식으로 옮겨야 합니다.

핵심 리소스 모델

DRA 기반 워크로드는 보통 아래 흐름으로 구성됩니다.

  1. DeviceClass: 어떤 디바이스를 사용할 것인지를 정의(컨테이너는 npu.rebellions.ai, VM 패스스루는 vfio-npu.rebellions.ai. 자세한 내용은 NPU DRA 드라이버를 통한 VM 패스스루 참고)
  2. ResourceSlice: 노드가 가진 디바이스 목록과 속성(attributes)을 노출합니다.
  3. ResourceClaim: 파드가 요청하는 디바이스를 선언합니다. ResourceClaimTemplate을 쓰면 파드마다 Claim이 자동 생성되고 파드와 함께 삭제됩니다. 여러 파드가 같은 디바이스를 공유하거나 파드보다 오래 유지해야 하면 ResourceClaim을 직접 만듭니다.
  4. Pod: resources.claims로 ResourceClaim을 소비합니다.

노드마다 ResourceSlice가 하나씩 생성되고, POOL은 노드 이름과 같습니다. ResourceSlice는 클러스터 범위 오브젝트이므로 조회할 때 네임스페이스 플래그가 필요 없습니다.

컨테이너 안에는 할당된 NPU의 디바이스 파일(/dev/rbln0)과 함께 RSD 그룹 디바이스(/dev/rsd0)가 생성됩니다. 자세한 내용은 Device Plugin의 RSD 그룹 설명에서 확인할 수 있습니다.

NPU 속성(ResourceSlice attributes)

RBLN NPU의 ResourceSlice는 각 노드별로 배포되며, 하나의 디바이스는 다음과 같은 속성(attributes)를 제공합니다. 디바이스는 rbln0, rbln1처럼 노드의 디바이스 파일 이름으로 게시됩니다.

이러한 속성은 selector 표현식(selectors.cel.expression)에서 사용되어, 워크로드에 할당될 디바이스를 선택하고 결정하는 데 활용됩니다. 드라이버 속성은 device.attributes["npu.rebellions.ai"].<이름>으로, 표준 속성은 해당 도메인으로 참조합니다(예: device.attributes["resource.kubernetes.io"].pcieRoot). 디바이스에 NUMA 정보가 없으면 numaNode 속성은 게시되지 않습니다.

이름 타입 예시 값 설명
driverVersion string 3.5.1 설치된 NPU 드라이버 버전
firmwareVersion string 3.5.1 디바이스 펌웨어 버전
pciDeviceID string 0x2130 PCI Device ID. VFIO 디바이스는 0x 접두사 없이 게시
pciLinkSpeed string 32.0GT/s PCIe 링크 속도
pciLinkWidth string 16 PCIe 링크 레인 수
productName string RBLN-CR13 NPU 제품명
sid string 0000000052631015 카드/보드 식별자
type string npu 디바이스 유형. 컨테이너는 npu, VM 패스스루는 vfio
uuid string 34428712-d887-840b-a7b9-1c9e05807fc3 디바이스 고유 식별자. rbln-smi -L이 출력하는 UUID에서 NPU- 접두사를 뺀 값
resource.kubernetes.io/numaNode int 0 디바이스가 연결된 NUMA 노드
resource.kubernetes.io/pciBusID string 0000:fd:00.0 PCI Bus 주소
resource.kubernetes.io/pcieRoot string pci0000:fc PCIe 루트 컴플렉스(pci<domain>:<bus>)
dra.net/numaNode int 0 resource.kubernetes.io/numaNode와 같은 값

속성과 별도로 디바이스 메모리 용량이 capacity.memory로 게시됩니다(예: 140Gi). CEL에서는 device.capacity["npu.rebellions.ai"].memory로 참조합니다.