Megosztás a következőn keresztül:


A Windows GPU-k használata számítási igényű számítási feladatokhoz az Azure Kubernetes Service-ben (AKS) (előzetes verzió)

A grafikus feldolgozási egységeket (GPU-kat) gyakran használják nagy számítási feladatokhoz, például grafikus és vizualizációs számítási feladatokhoz. Az AKS támogatja a GPU-kompatibilis Windows- és Linux-csomópontkészleteket a nagy számítási igényű Kubernetes-számítási feladatok futtatásához.

Ez a cikk segítséget nyújt a Windows-csomópontok új és meglévő AKS-fürtökre (előzetes verzió) való üzembe helyezéséhez schedulable GPU-kkal.

Támogatott GPU-kompatibilis virtuális gépek (virtuális gépek)

A támogatott GPU-kompatibilis virtuális gépek megtekintéséhez tekintse meg a GPU-ra optimalizált virtuálisgép-méreteket az Azure-ban. Az AKS-csomópontkészletek esetében a minimális Standard_NC6s_v3 méretet javasoljuk. Az NVv4-sorozat (AMD GPU-k alapján) nem támogatott az AKS-en.

Feljegyzés

A GPU-kompatibilis virtuális gépek speciális hardvereket tartalmaznak, amelyek magasabb díjszabást és régiók rendelkezésre állását teszik lehetővé. További információkért tekintse meg a díjszabási eszközt és a régió rendelkezésre állását.

Korlátozások

  • A meglévő Windows-csomópontkészlet GPU-ra való frissítése nem támogatott.
  • A Kubernetes 1.28-es és újabb verziói nem támogatottak.

Mielőtt elkezdené

  • Ez a cikk feltételezi, hogy van egy meglévő AKS-fürtje. Ha nem rendelkezik fürttel, hozzon létre egyet az Azure CLI, az Azure PowerShell vagy az Azure Portal használatával.
  • Telepítenie kell az Azure CLI 1.0.0b2-es vagy újabb verzióját, és konfigurálnia kell a mezőt a --skip-gpu-driver-install az aks nodepool add parancs használatára. A verzió azonosításához futtassa a következőt: az --version. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése.
  • Telepítenie kell az Azure CLI 9.0.0b5-ös vagy újabb verzióját, és konfigurálnia kell, hogy használja a --driver-type mezőt a az aks nodepool add paranccsal. A verzió azonosításához futtassa a következőt: az --version. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése.

A fürt hitelesítő adatainak lekérése

  • Kérje le az AKS-fürt hitelesítő adatait a az aks get-credentials paranccsal. Az alábbi példaparancs lekéri a myAKSCluster hitelesítő adatait a myResourceGroup erőforráscsoportban:

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    

Windows GPU használata automatikus illesztőprogram-telepítéssel

Az NVIDIA GPU-k használata magában foglalja a különböző NVIDIA szoftverösszetevők, például a Kubernetes DirectX-eszköz beépülő moduljának telepítését, a GPU-illesztőprogram telepítését stb. Ha egy támogatott GPU-kompatibilis virtuális géppel rendelkező Windows-csomópontkészletet hoz létre, ezek az összetevők és a megfelelő NVIDIA CUDA- vagy GRID-illesztőprogramok lesznek telepítve. NC és ND sorozatú virtuálisgép-méretek esetén a CUDA-illesztő telepítve van. NV sorozatú virtuálisgép-méretek esetén a GRID-illesztő telepítve van.

Fontos

Az AKS előzetes verziójú funkciói önkiszolgáló, opt-in alapon érhetők el. Az előzetes verziókat "ahogy van" és "rendelkezésre állóként" biztosítjuk, és a szolgáltatási szerződésekből és a korlátozott jótállásból kizárjuk őket. Az AKS előzetes verzióit részben az ügyfélszolgálat fedezi a legjobb munkamennyiség alapján. Ezért ezek a funkciók nem éles használatra vannak szánva. További információkért tekintse meg az alábbi támogatási cikkeket:

Az aks-preview Azure CLI-bővítmény telepítése

  • Regisztrálja vagy frissítse az aks-preview bővítményt a vagy az extension update parancs az extension add használatával.

    # Register the aks-preview extension
    az extension add --name aks-preview
    
    # Update the aks-preview extension
    az extension update --name aks-preview
    

A funkciójelző regisztrálása WindowsGPUPreview

  1. Regisztrálja a WindowsGPUPreview funkciójelzőt a az feature register paranccsal.

    az feature register --namespace "Microsoft.ContainerService" --name "WindowsGPUPreview"
    

    Néhány percig tart, amíg az állapot megjelenik a Regisztrált állapotban.

  2. Ellenőrizze a regisztrációs állapotot a az feature show paranccsal.

    az feature show --namespace "Microsoft.ContainerService" --name "WindowsGPUPreview"
    
  3. Ha az állapot a Regisztrált állapotot tükrözi, frissítse a Microsoft.ContainerService erőforrás-szolgáltató regisztrációját a az provider register paranccsal.

    az provider register --namespace Microsoft.ContainerService
    

Windows GPU-kompatibilis csomópontkészlet létrehozása (előzetes verzió)

Windows GPU-kompatibilis csomópontkészlet létrehozásához támogatott GPU-kompatibilis virtuálisgép-méretet kell használnia, és meg kell adnia a os-type következőt Windows: . Az alapértelmezett Windows os-sku , Windows2022de minden Windows-beállítás os-sku támogatott.

  1. Hozzon létre egy Windows GPU-kompatibilis csomópontkészletet a az aks nodepool add paranccsal.

    az aks nodepool add \
       --resource-group myResourceGroup \
       --cluster-name myAKSCluster \
       --name gpunp \
       --node-count 1 \
       --os-type Windows \
       --kubernetes-version 1.29.0 \
       --node-vm-size Standard_NC6s_v3
    
  2. Ellenőrizze, hogy a GPU-k schedulable-e.

  3. Miután meggyőződött arról, hogy a GPU-k nem használhatók, futtathatja a GPU-számítási feladatokat.

GPU-illesztőprogram típusának megadása (előzetes verzió)

Az AKS alapértelmezés szerint egy alapértelmezett GPU-illesztőtípust ad meg minden támogatott GPU-kompatibilis virtuális géphez. Mivel a számítási feladatok és az illesztőprogramok kompatibilitása fontos a GPU-számítási feladatok működéséhez, megadhatja a Windows GPU-csomópont illesztőprogram-típusát. Ez a funkció linuxos GPU-csomópontkészletek esetén nem támogatott.

Ha GPU-támogatással hoz létre Windows-ügynökkészletet, a jelölő használatával --driver-type megadhatja a GPU-illesztő típusát.

Az elérhető lehetőségek:

  • GRID: Virtualizálási támogatást igénylő alkalmazásokhoz.
  • CUDA: A tudományos számítástechnika és az adatigényes alkalmazások számítási feladataihoz optimalizálva.

Feljegyzés

A jelölő beállításakor --driver-type felelősséget vállal annak biztosításáért, hogy a kiválasztott illesztőprogram-típus kompatibilis legyen a csomópontkészlet adott virtuálisgép-méretével és konfigurációjával. Bár az AKS megpróbálja ellenőrizni a kompatibilitást, vannak olyan esetek, amikor a csomópontkészlet létrehozása meghiúsulhat a megadott illesztőprogram-típus és a mögöttes virtuális gép vagy hardver közötti inkompatibilitás miatt.

Ha windowsos GPU-kompatibilis csomópontkészletet szeretne létrehozni egy adott GPU-illesztőtípussal, használja a az aks nodepool add parancsot.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name gpunp \
    --node-count 1 \
    --os-type Windows \
    --kubernetes-version 1.29.0 \
    --node-vm-size Standard_NC6s_v3 \
    --driver-type GRID

A fenti parancs például gpu-kompatibilis csomópontkészletet hoz létre a GRID GPU-illesztő típusával. Ha ezt az illesztőprogramtípust választja, az felülírja CUDA az NC sorozatú virtuálisgép-termékváltozatok alapértelmezett illesztőprogramtípusát.

A Windows GPU használata manuális illesztőprogram-telepítéssel

Ha N sorozatú (NVIDIA GPU) virtuálisgép-méretekkel rendelkező Windows-csomópontkészletet hoz létre az AKS-ben, a GPU-illesztő és a Kubernetes DirectX-eszköz beépülő modulja automatikusan települ. Az automatikus telepítés megkerüléséhez kövesse az alábbi lépéseket:

  1. A GPU-illesztő telepítésének kihagyása (előzetes verzió) a következővel --skip-gpu-driver-install: .
  2. A Kubernetes DirectX eszköz beépülő modul manuális telepítése.

GPU-illesztőprogram telepítésének kihagyása (előzetes verzió)

Az AKS alapértelmezés szerint engedélyezve van az automatikus GPU-illesztőprogram-telepítéssel. Bizonyos esetekben, például a saját illesztőprogramok telepítésekor érdemes lehet kihagyni a GPU-illesztőprogramok telepítését.

Fontos

Az AKS előzetes verziójú funkciói önkiszolgáló, opt-in alapon érhetők el. Az előzetes verziókat "ahogy van" és "rendelkezésre állóként" biztosítjuk, és a szolgáltatási szerződésekből és a korlátozott jótállásból kizárjuk őket. Az AKS előzetes verzióit részben az ügyfélszolgálat fedezi a legjobb munkamennyiség alapján. Ezért ezek a funkciók nem éles használatra vannak szánva. További információkért tekintse meg az alábbi támogatási cikkeket:

  1. Regisztrálja vagy frissítse az aks-preview bővítményt a vagy az extension update parancs az extension add használatával.

    # Register the aks-preview extension
    az extension add --name aks-preview
    
    # Update the aks-preview extension
    az extension update --name aks-preview
    
  2. Hozzon létre egy csomópontkészletet a az aks nodepool add jelölővel ellátott paranccsal az --skip-gpu-driver-install automatikus GPU-illesztőprogram telepítésének kihagyásához.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name gpunp \
        --node-count 1 \
        --os-type windows \
        --os-sku windows2022 \
        --skip-gpu-driver-install
    

Feljegyzés

Ha a --node-vm-size használt eszköz még nincs előkészítve az AKS-en, akkor nem használhat GPU-kat, és --skip-gpu-driver-install nem működik.

A Kubernetes DirectX-eszköz beépülő modul manuális telepítése

A Kubernetes DirectX eszköz beépülő modulhoz üzembe helyezhet egy DaemonSetet, amely minden csomóponton egy podot futtat, hogy biztosítsa a GPU-khoz szükséges illesztőprogramokat.

  • Adjon hozzá csomópontkészletet a fürthöz a az aks nodepool add parancs használatával.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name gpunp \
        --node-count 1 \
        --os-type windows \
        --os-sku windows2022
    

Névtér létrehozása és a Kubernetes DirectX-eszköz beépülő modul üzembe helyezése

  1. Hozzon létre egy névteret a kubectl create namespace paranccsal.

    kubectl create namespace gpu-resources
    
  2. Hozzon létre egy k8s-directx-device-plugin.yaml nevű fájlt, és illessze be a kubernetes-projekthez készült NVIDIA eszköz beépülő modul részeként megadott alábbi YAML-jegyzékfájlt:

    apiVersion: apps/v1
    kind: DaemonSet
    metadata:
      name: nvidia-device-plugin-daemonset
      namespace: gpu-resources
    spec:
      selector:
        matchLabels:
          name: nvidia-device-plugin-ds
      updateStrategy:
        type: RollingUpdate
      template:
        metadata:
          # Mark this pod as a critical add-on; when enabled, the critical add-on scheduler
          # reserves resources for critical add-on pods so that they can be rescheduled after
          # a failure.  This annotation works in tandem with the toleration below.
          annotations:
            scheduler.alpha.kubernetes.io/critical-pod: ""
          labels:
            name: nvidia-device-plugin-ds
        spec:
          tolerations:
          # Allow this pod to be rescheduled while the node is in "critical add-ons only" mode.
          # This, along with the annotation above marks this pod as a critical add-on.
          - key: CriticalAddonsOnly
            operator: Exists
          - key: nvidia.com/gpu
            operator: Exists
            effect: NoSchedule
          - key: "sku"
            operator: "Equal"
            value: "gpu"
            effect: "NoSchedule"
          containers:
          - image: mcr.microsoft.com/oss/nvidia/k8s-device-plugin:v0.14.1
            name: nvidia-device-plugin-ctr
            securityContext:
              allowPrivilegeEscalation: false
              capabilities:
                drop: ["ALL"]
            volumeMounts:
              - name: device-plugin
                mountPath: /var/lib/kubelet/device-plugins
          volumes:
            - name: device-plugin
              hostPath:
                path: /var/lib/kubelet/device-plugins
    
  3. Hozza létre a Démonkészletet, és győződjön meg arról, hogy az NVIDIA eszköz beépülő modul sikeresen létrejött a kubectl apply parancs használatával.

    kubectl apply -f nvidia-device-plugin-ds.yaml
    
  4. Most, hogy sikeresen telepítette az NVIDIA eszköz beépülő modult, ellenőrizheti, hogy a GPU-k schedulable-e.

Ellenőrizze, hogy a GPU-k schedulable-e

A fürt létrehozása után győződjön meg arról, hogy a GPU-k a Kubernetesben használhatók.

  1. A parancs használatával kubectl get nodes listázhatja a fürt csomópontjait.

    kubectl get nodes
    

    A kimenetnek a következő példakimenethez hasonlóan kell kinéznie:

    NAME                   STATUS   ROLES   AGE   VERSION
    aks-gpunp-28993262-0   Ready    agent   13m   v1.20.7
    
  2. Győződjön meg arról, hogy a GPU-k a parancs használatával kubectl describe node schedulable-e.

    kubectl describe node aks-gpunp-28993262-0
    

    A Kapacitás szakaszban a GPU-nak a következőként kell szerepelniemicrosoft.com/directx: 1: . A kimenetnek a következő kondenzált példakimenethez hasonlóan kell kinéznie:

    Capacity:
    [...]
     microsoft.com.directx/gpu:                 1
    [...]
    

A Container Insights használata a GPU-használat monitorozásához

Az AKS-sel rendelkező Container Insights a következő GPU-használati metrikákat figyeli:

Metrika neve Metrikadimenzió (címkék) Leírás
containerGpuDutyCycle container.azm.ms/clusterId, container.azm.ms/clusterName, containerName, gpuIdgpuModelgpuVendor Az elmúlt mintaidőszak (60 másodperc) időtartamának százalékos aránya, amely során a GPU foglalt/aktív feldolgozást végzett egy tárolón. A vámciklus egy 1 és 100 közötti szám.
containerGpuLimits container.azm.ms/clusterId, , container.azm.ms/clusterNamecontainerName Minden tároló megadhat korlátokat egy vagy több GPU-ként. A GPU töredékét nem lehet lekérni vagy korlátozni.
containerGpuRequests container.azm.ms/clusterId, , container.azm.ms/clusterNamecontainerName Minden tároló igényelhet egy vagy több GPU-t. A GPU töredékét nem lehet lekérni vagy korlátozni.
containerGpumemoryTotalBytes container.azm.ms/clusterId, container.azm.ms/clusterName, containerName, gpuIdgpuModelgpuVendor A GPU-memória mennyisége bájtokban, amelyek egy adott tárolóhoz használhatók.
containerGpumemoryUsedBytes container.azm.ms/clusterId, container.azm.ms/clusterName, containerName, gpuIdgpuModelgpuVendor A GPU-memória mennyisége bájtokban, amelyeket egy adott tároló használ.
nodeGpuAllocatable container.azm.ms/clusterId, , container.azm.ms/clusterNamegpuVendor A Kubernetes által használható csomópont gpu-k száma.
nodeGpuCapacity container.azm.ms/clusterId, , container.azm.ms/clusterNamegpuVendor A csomópont gpu-jainak teljes száma.

Az erőforrások eltávolítása

  • Távolítsa el a cikkben létrehozott társított Kubernetes-objektumokat a kubectl delete job paranccsal.

    kubectl delete jobs windows-gpu-workload
    

Következő lépések