Skip to content

RBLN NPU DRA Driver

The RBLN NPU DRA Driver allocates RBLN NPUs through the Kubernetes Dynamic Resource Allocation (DRA) framework.

The Kubernetes Device Plugin exposes a fixed NPU resource count per node. DRA lets workloads request NPUs by product type, NUMA locality, PCIe topology, and other conditions. Kubernetes Resource API (resource.k8s.io) objects define the device inventory and selection criteria.

Follow Installing the NPU Operator and DRA configuration to deploy the driver. For the basic request and verification workflow, see Request NPUs with DRA. For requests by count, product name, PCIe topology, or UUID, see Specify NPU allocation conditions with DRA.

Prerequisites

  • Kubernetes v1.34.0 or later
  • RBLN NPU Operator installed with DRA mode enabled
  • RBLN Container Toolkit enabled (CDI-based device injection)

Warning

The DRA Driver cannot be enabled together with the Device Plugin or the Sandbox Device Plugin. Enabling either plugin alongside the DRA Driver would cause two plugins to advertise the same NPUs. Before you disable the Device Plugin, migrate workloads that request NPUs through rebellions.ai/npu limits to ResourceClaim requests.

Core Resource Model

A DRA-based workload consists of four objects.

  1. DeviceClass: Defines the kind of device to use. Container workloads use npu.rebellions.ai. For the VM passthrough class vfio-npu.rebellions.ai, see VM Passthrough with the NPU DRA Driver.
  2. ResourceSlice: Exposes the devices on a node and their attributes.
  3. ResourceClaim: Declares the device count and conditions a Pod requests. With a ResourceClaimTemplate, a claim is generated per Pod and deleted with it. Create a ResourceClaim directly when several Pods share the same devices or the claim must outlive a Pod.
  4. Pod: Consumes the ResourceClaim through resources.claims.

One ResourceSlice is created per node, and POOL equals the node name. ResourceSlice objects are cluster-scoped, so no namespace flag is needed when querying them.

Inside the container, the allocated NPU's device file (/dev/rbln0) is accompanied by an RSD group device (/dev/rsd0). See RSD Groups for Multiple NPUs on the Device Plugin page.

NPU Properties (ResourceSlice Attributes)

A ResourceSlice is created per node, and devices are published under the node's device file names such as rbln0 and rbln1. Each device provides the following attributes. A CEL selector references a driver attribute as device.attributes["npu.rebellions.ai"].<name> and a standard attribute under its own domain, for example device.attributes["resource.kubernetes.io"].pcieRoot. The numaNode attributes are omitted when the device reports no NUMA affinity.

Name Type Example Value Description
driverVersion string 3.5.1 Installed NPU driver version
firmwareVersion string 3.5.1 Device firmware version
pciDeviceID string 0x2130 PCI device ID. VFIO devices publish it without the 0x prefix
pciLinkSpeed string 32.0GT/s PCIe link speed
pciLinkWidth string 16 PCIe link lane width
productName string RBLN-CR13 NPU product name
sid string 0000000052631015 Card/board identifier
type string npu Device type. npu for containers, vfio for VM passthrough
uuid string 34428712-d887-840b-a7b9-1c9e05807fc3 Unique device identifier. The UUID that rbln-smi -L prints without its NPU- prefix
resource.kubernetes.io/numaNode int 0 NUMA node connected to the device
resource.kubernetes.io/pciBusID string 0000:fd:00.0 PCI bus address
resource.kubernetes.io/pcieRoot string pci0000:fc PCIe root complex (pci<domain>:<bus>)
dra.net/numaNode int 0 Same value as resource.kubernetes.io/numaNode

The device memory size is published separately, as capacity.memory (for example, 140Gi). A CEL expression references it as device.capacity["npu.rebellions.ai"].memory.