🔴 Advanced

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.