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 aaz 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
parancsaz 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
Regisztrálja a
WindowsGPUPreview
funkciójelzőt aaz 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.
Ellenőrizze a regisztrációs állapotot a
az feature show
paranccsal.az feature show --namespace "Microsoft.ContainerService" --name "WindowsGPUPreview"
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
, Windows2022
de minden Windows-beállítás os-sku
támogatott.
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
Ellenőrizze, hogy a GPU-k schedulable-e.
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:
- A GPU-illesztő telepítésének kihagyása (előzetes verzió) a következővel
--skip-gpu-driver-install
: . - 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:
Regisztrálja vagy frissítse az aks-preview bővítményt a vagy
az extension update
parancsaz 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
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
Hozzon létre egy névteret a
kubectl create namespace
paranccsal.kubectl create namespace gpu-resources
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
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
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.
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
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 szerepelnie
microsoft.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 , gpuId gpuModel gpuVendor |
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/clusterName containerName |
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/clusterName containerName |
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 , gpuId gpuModel gpuVendor |
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 , gpuId gpuModel gpuVendor |
A GPU-memória mennyisége bájtokban, amelyeket egy adott tároló használ. |
nodeGpuAllocatable | container.azm.ms/clusterId , , container.azm.ms/clusterName gpuVendor |
A Kubernetes által használható csomópont gpu-k száma. |
nodeGpuCapacity | container.azm.ms/clusterId , , container.azm.ms/clusterName gpuVendor |
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
- Az Apache Spark-feladatok futtatásához lásd : Apache Spark-feladatok futtatása az AKS-en.
- A Kubernetes-ütemező funkcióival kapcsolatos további információkért tekintse meg az AKS speciális ütemezőfunkcióinak ajánlott eljárásait.
- További információ az Azure Kubernetes Service-ről és az Azure Machine Learningről:
Azure Kubernetes Service