NVIDIA vGPU s Dynamic Resource Allocation na AKS
Microsoft a NVIDIA predstavili podporu Dynamic Resource Allocation (DRA) pre NVIDIA vGPU na Azure Kubernetes Service. Táto integrácia výrazne zlepšuje zdieľanie GPU medzi kontajnermi pre AI a mediálne workloady.
Čo je DRA (Dynamic Resource Allocation)
DRA je Kubernetes API (stabilné od K8s 1.31), ktoré nahrádza klasický resources.limits prístup pre špecializovaný hardvér:
# Starý spôsob (device plugins)
resources:
limits:
nvidia.com/gpu: 1 # celá GPU, žiadne zdieľanie
# Nový spôsob (DRA)
apiVersion: resource.k8s.io/v1beta1
kind: ResourceClaim
metadata:
name: gpu-slice
spec:
devices:
requests:
- name: gpu
deviceClassName: gpu.nvidia.com
selectors:
- cel:
expression: "device.attributes[\"gpu.nvidia.com\"].memory >= quantity(\"8Gi\")"
Výhody DRA oproti Device Plugins
| Vlastnosť | Device Plugins | DRA |
|---|---|---|
| Zdieľanie GPU | Nie | Áno (vGPU slicing) |
| Granulárna alokácia | Celá GPU | Časti GPU |
| Scheduling hints | Obmedzené | Plné |
| Multi-device claims | Nie | Áno |
Ako to funguje na AKS
1. Prerekvizity
- AKS cluster s GPU node poolom (NVIDIA A100/H100/H200)
- Kubernetes 1.31+
- NVIDIA GPU Operator s DRA driverom
2. Inštalácia
# Vytvorenie GPU node poolu s DRA podporou
az aks nodepool add \
--resource-group myRG \
--cluster-name myAKS \
--name gpupool \
--node-vm-size Standard_NC24ads_A100_v4 \
--node-count 2 \
--enable-gpu-dra
3. Definícia ResourceClaim
apiVersion: resource.k8s.io/v1beta1
kind: ResourceClaimTemplate
metadata:
name: ai-inference-gpu
spec:
spec:
devices:
requests:
- name: gpu-slice
deviceClassName: gpu.nvidia.com
selectors:
- cel:
expression: "device.attributes[\"gpu.nvidia.com\"].productName == \"A100\""
config:
- opaque:
driver: gpu.nvidia.com
parameters:
apiVersion: gpu.nvidia.com/v1
kind: VGpuConfig
sharing:
strategy: TimeSlicing
timeSlicing:
replicas: 4
Praktické use cases
AI Inference s viacerými modelmi
Namiesto dedikovanej GPU pre každý model môžete zdieľať jednu A100 medzi 4-8 inference kontajnermi:
apiVersion: apps/v1
kind: Deployment
metadata:
name: llm-inference
spec:
replicas: 4
template:
spec:
containers:
- name: inference
image: my-llm-server:latest
resources: {}
resourceClaims:
- name: gpu
resourceClaimTemplateName: ai-inference-gpu
Video transcoding
Mediálne workloady môžu zdieľať GPU encoder/decoder bez plytvania celou kartou.
Monitoring a troubleshooting
# Kontrola ResourceClaim stavu
kubectl get resourceclaims -A
# Detail alokácie
kubectl describe resourceclaim gpu-slice
# NVIDIA monitoring
kubectl exec -it nvidia-device-plugin-xxx -- nvidia-smi
Zhrnutie
DRA na AKS je game-changer pre organizácie, ktoré prevádzkujú AI workloady na Kubernetes. Namiesto plytvaniu celými GPU kartami môžete granulárne prideľovať GPU zdroje podľa skutočných potrieb. To znižuje náklady a zvyšuje utilization — kritické metriky v dobe, keď GPU čas stojí desiatky dolárov za hodinu.