GPU Management#
AcceleratorDetector
AIM Engine includes an
AcceleratorDetector that detects AMD
GPUs, NVIDIA GPUs, and CPUs through NFD. It writes normalized labels under
feature.node.kubernetes.io/aim-accelerator.* and is enabled by default.
AIM Engine uses detected accelerators for profile resolution, resource requests, and inference-pod scheduling.
GPU Detection#
AIM Engine’s detector DaemonSets publish a common label contract regardless of GPU vendor:
Label |
Description |
Example |
|---|---|---|
|
Accelerator model and count |
|
|
GPU vendor and count |
|
|
GPU partition state |
|
AMD detection uses aim-runtime detect-hardware and amd-smi; NVIDIA
detection uses nvidia-smi. Product names are normalized to profile-compatible
tokens such as MI300X, H100, and RTX4090.
The device plugins separately advertise schedulable resources:
Vendor |
Kubernetes resource |
Supporting operator |
|---|---|---|
AMD |
|
AMD GPU Operator |
NVIDIA |
|
NVIDIA GPU Operator |
The AMD device plugin may also publish compatibility metadata such as
amd.com/gpu.device-id, amd.com/gpu.family, and amd.com/gpu.vram.
Legacy labels with the beta.amd.com/ prefix remain relevant to the deprecated
template pipeline; v1alpha2 profile matching uses the normalized
aim-accelerator.* labels.
GPU-Aware Resolution#
During profile resolution, AIM Engine filters profiles to those whose required vendor, model, partition state, and resource capacity are available. For example, an H100 profile is excluded when only AMD nodes are present, and an MI325X profile is excluded when no MI325X node exists.
When otherwise-equivalent profiles remain, AMD GPU preference scoring is MI325X > MI300X > MI250X > MI210 > R9700 > W7900. Models outside this list, including NVIDIA models, tie at the bottom and are resolved by the remaining profile-ranking and deterministic name rules.
GPU Resource Requests#
AIMProfile and AIMClusterProfile use flat accelerator fields. AIM Engine
derives the vendor-specific device request from those fields:
# In an AIMProfile / AIMClusterProfile
spec:
acceleratorVendor: amd
acceleratorModel: MI300X
acceleratorType: gpu
acceleratorCount: 4
# In an AIMProfile / AIMClusterProfile
spec:
acceleratorVendor: nvidia
acceleratorModel: H100
acceleratorType: gpu
acceleratorCount: 4
The AMD profile requests and limits amd.com/gpu: 4; the NVIDIA profile
requests and limits nvidia.com/gpu: 4. If acceleratorVendor is omitted, the
backward-compatible default is AMD. Explicit spec.resources entries are
merged over the derived defaults and win for the same resource key.
Node Affinity#
AIM Engine writes required node affinity from the profile’s accelerator fields.
acceleratorVendor selects the normalized vendor label,
acceleratorModel selects the model label, and
acceleratorPartitioningMode selects the partition label. These requirements
are combined so a pod cannot cross vendors or land on an incompatible GPU
shape.
Verifying GPU Availability#
Check the normalized accelerator labels:
kubectl get nodes --show-labels | grep aim-accelerator
Check the GPU resources advertised by each device plugin:
kubectl get nodes \
-o custom-columns='NAME:.metadata.name,AMD_GPU:.status.allocatable.amd\.com/gpu,NVIDIA_GPU:.status.allocatable.nvidia\.com/gpu'
If the expected detector labels are absent, inspect the matching AMD or NVIDIA AcceleratorDetector DaemonSet and verify that NFD is running.
Next Steps#
Accelerator Detection — Unified hardware detection and NFD labels
AIM Services — Profile resolution and ranking
Profiles — Self-contained runtime configurations and GPU requirements
Installation — GPU operator prerequisites