Použití gpu Windows pro úlohy náročné na výpočetní výkon ve službě Azure Kubernetes Service (AKS) (Preview)
Grafické procesory (GPU) se často používají pro úlohy náročné na výpočetní výkon, jako jsou grafické a vizualizační úlohy. AKS podporuje fondy uzlů s podporou GPU pro Windows a Linux pro spouštění úloh Kubernetes náročných na výpočetní výkon.
Tento článek vám pomůže zřizovat uzly Windows s novými a existujícími clustery AKS (Preview).
Podporované virtuální počítače s podporou GPU
Pokud chcete zobrazit podporované virtuální počítače s podporou GPU, podívejte se na velikosti virtuálních počítačů optimalizovaných pro GPU v Azure. Pro fondy uzlů AKS doporučujeme minimální velikost Standard_NC6s_v3. Řada NVv4 (založená na grafických procesorech AMD) není podporována v AKS.
Poznámka:
Virtuální počítače s podporou GPU obsahují specializovaný hardware, na který se vztahují vyšší ceny a dostupnost oblastí. Další informace najdete v cenovém nástroji a dostupnosti oblastí.
Omezení
- Aktualizace existujícího fondu uzlů Windows pro přidání GPU se nepodporuje.
- V Kubernetes verze 1.28 a níže se nepodporuje.
Než začnete
- Tento článek předpokládá, že máte existující cluster AKS. Pokud cluster nemáte, vytvořte ho pomocí Azure CLI, Azure PowerShellu nebo webu Azure Portal.
- Potřebujete nainstalované a nakonfigurované rozhraní příkazového řádku Azure CLI verze 1.0.0b2 nebo novější pro použití
--skip-gpu-driver-install
pole s příkazemaz aks nodepool add
. Verzi zjistíte spuštěním příkazuaz --version
. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI. - Potřebujete nainstalované a nakonfigurované rozhraní příkazového řádku Azure CLI verze 9.0.0b5 nebo novější, aby se toto pole používalo
--driver-type
s příkazemaz aks nodepool add
. Verzi zjistíte spuštěním příkazuaz --version
. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.
Získání přihlašovacích údajů pro cluster
Pomocí příkazu získejte přihlašovací údaje pro cluster
az aks get-credentials
AKS. Následující ukázkový příkaz načte přihlašovací údaje pro myAKSCluster ve skupině prostředků myResourceGroup :az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Použití Grafického procesoru Windows s automatickou instalací ovladačů
Použití grafických procesorů NVIDIA zahrnuje instalaci různých softwarových komponent NVIDIA, jako je modul plug-in zařízení DirectX pro Kubernetes, instalaci ovladače GPU a další. Když vytvoříte fond uzlů Windows s podporovaným virtuálním počítačem s podporou GPU, nainstalují se tyto komponenty a příslušné ovladače NVIDIA CUDA nebo GRID. Pro velikosti virtuálních počítačů řady NC a ND se nainstaluje ovladač CUDA. U velikostí virtuálních počítačů řady NV je nainstalován ovladač GRID.
Důležité
Funkce AKS ve verzi Preview jsou k dispozici na samoobslužné bázi. Verze Preview jsou poskytovány "tak, jak jsou" a "dostupné", a jsou vyloučené ze smluv o úrovni služeb a omezené záruky. Verze Preview AKS jsou částečně pokryty zákaznickou podporou na základě maximálního úsilí. Proto tyto funkce nejsou určené pro produkční použití. Další informace najdete v následujících článcích podpory:
aks-preview
Instalace rozšíření Azure CLI
Zaregistrujte nebo aktualizujte rozšíření aks-preview pomocí
az extension add
příkazu neboaz extension update
příkazu.# Register the aks-preview extension az extension add --name aks-preview # Update the aks-preview extension az extension update --name aks-preview
Registrace příznaku WindowsGPUPreview
funkce
WindowsGPUPreview
Pomocí příkazu zaregistrujte příznakaz feature register
funkce.az feature register --namespace "Microsoft.ContainerService" --name "WindowsGPUPreview"
Zobrazení stavu Zaregistrované trvá několik minut.
Pomocí příkazu ověřte stav
az feature show
registrace.az feature show --namespace "Microsoft.ContainerService" --name "WindowsGPUPreview"
Jakmile se stav projeví jako zaregistrovaný, aktualizujte registraci poskytovatele prostředků Microsoft.ContainerService pomocí
az provider register
příkazu.az provider register --namespace Microsoft.ContainerService
Vytvoření fondu uzlů s podporou GPU s Windows (Preview)
Pokud chcete vytvořit fond uzlů s podporou GPU s Windows, musíte použít podporovanou velikost virtuálního počítače s podporou GPU a zadat jako os-type
Windows
. Výchozí windows je Windows2022
, ale všechny možnosti Windows os-sku
os-sku
jsou podporovány.
Pomocí příkazu vytvořte fond
az aks nodepool add
uzlů s podporou GPU systému Windows.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
Zkontrolujte, jestli jsou vaše grafické procesory schedovatelné.
Jakmile potvrdíte, že jsou grafické procesory dostupné, můžete spustit úlohu GPU.
Určení typu ovladače GPU (Preview)
Ve výchozím nastavení AKS určuje výchozí typ ovladače GPU pro každý podporovaný virtuální počítač s podporou GPU. Vzhledem k tomu, že pro funkční úlohy GPU jsou důležité kompatibilita úloh a ovladačů, můžete zadat typ ovladače pro uzel Gpu s Windows. Tato funkce není podporována pro fondy uzlů GPU s Linuxem.
Při vytváření fondu agentů Windows s podporou GPU máte možnost určit typ ovladače GPU pomocí příznaku --driver-type
.
Dostupné jsou následující možnosti:
- GRID: Pro aplikace vyžadující podporu virtualizace.
- CUDA: Optimalizováno pro výpočetní úlohy ve vědeckých výpočetních a datových aplikacích náročných na data.
Poznámka:
Při nastavování příznaku --driver-type
přebíráte odpovědnost za zajištění kompatibility vybraného typu ovladače s konkrétní velikostí a konfigurací fondu uzlů. I když se AKS pokouší ověřit kompatibilitu, existují scénáře, kdy vytvoření fondu uzlů může selhat kvůli nekompatibilitě mezi zadaným typem ovladače a základním virtuálním počítačem nebo hardwarem.
Pokud chcete vytvořit fond uzlů s podporou GPU systému Windows s konkrétním typem ovladače GPU, použijte az aks nodepool add
příkaz.
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
Výše uvedený příkaz například vytvoří fond uzlů s podporou GPU pomocí GRID
typu ovladače GPU. Výběrem tohoto typu ovladače se přepíše výchozí typ CUDA
ovladače pro skladové položky virtuálních počítačů řady NC series.
Použití Grafického procesoru Windows s ruční instalací ovladače
Při vytváření fondu uzlů s Windows s velikostmi virtuálních počítačů řady N-series (NVIDIA GPU) v AKS se automaticky nainstaluje ovladač GPU a modul plug-in zařízení Kubernetes DirectX. Pokud chcete tuto automatickou instalaci obejít, postupujte takto:
- Přeskočte instalaci ovladače GPU (Preview) pomocí
--skip-gpu-driver-install
. - Ruční instalace modulu plug-in zařízení Kubernetes DirectX
Přeskočit instalaci ovladače GPU (Preview)
AKS má ve výchozím nastavení povolenou automatickou instalaci ovladače GPU. V některých případech, například instalace vlastních ovladačů, možná budete chtít přeskočit instalaci ovladače GPU.
Důležité
Funkce AKS ve verzi Preview jsou k dispozici na samoobslužné bázi. Verze Preview jsou poskytovány "tak, jak jsou" a "dostupné", a jsou vyloučené ze smluv o úrovni služeb a omezené záruky. Verze Preview AKS jsou částečně pokryty zákaznickou podporou na základě maximálního úsilí. Proto tyto funkce nejsou určené pro produkční použití. Další informace najdete v následujících článcích podpory:
Zaregistrujte nebo aktualizujte rozšíření aks-preview pomocí
az extension add
příkazu neboaz extension update
příkazu.# Register the aks-preview extension az extension add --name aks-preview # Update the aks-preview extension az extension update --name aks-preview
Vytvořte fond uzlů pomocí
az aks nodepool add
příkazu s příznakem--skip-gpu-driver-install
, který přeskočí automatickou instalaci ovladače GPU.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
Poznámka:
--node-vm-size
Pokud ještě není nasazená služba AKS, nemůžete použít grafické procesory a --skip-gpu-driver-install
nefunguje.
Ruční instalace modulu plug-in zařízení Kubernetes DirectX
Pro modul plug-in zařízení Kubernetes DirectX můžete nasadit daemonSet, který na každém uzlu spouští pod, který poskytuje požadované ovladače pro gpu.
Přidejte do clusteru
az aks nodepool add
fond uzlů pomocí příkazu.az aks nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name gpunp \ --node-count 1 \ --os-type windows \ --os-sku windows2022
Vytvoření oboru názvů a nasazení modulu plug-in zařízení Kubernetes DirectX
Vytvořte obor názvů pomocí
kubectl create namespace
příkazu.kubectl create namespace gpu-resources
Vytvořte soubor s názvem k8s-directx-device-plugin.yaml a vložte následující manifest YAML poskytnutý jako součást modulu plug-in zařízení NVIDIA pro projekt Kubernetes:
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
Pomocí příkazu vytvořte daemonSet a potvrďte úspěšné vytvoření
kubectl apply
modulu plug-in zařízení NVIDIA.kubectl apply -f nvidia-device-plugin-ds.yaml
Teď, když jste úspěšně nainstalovali modul plug-in zařízení NVIDIA, můžete zkontrolovat, zda jsou vaše GPU schedlitelné.
Potvrďte, že jsou gpu schedlitelné.
Po vytvoření clusteru ověřte, že se v Kubernetes dají schedovat gpu.
Pomocí příkazu vypište uzly v clusteru
kubectl get nodes
.kubectl get nodes
Výstup by měl vypadat podobně jako v následujícím příkladu výstupu:
NAME STATUS ROLES AGE VERSION aks-gpunp-28993262-0 Ready agent 13m v1.20.7
Pomocí příkazu ověřte, že jsou grafické procesory schednutelné
kubectl describe node
.kubectl describe node aks-gpunp-28993262-0
V části Kapacita by gpu měl být uveden jako
microsoft.com/directx: 1
. Výstup by měl vypadat podobně jako v následujícím zhuštěném příkladu výstupu:Capacity: [...] microsoft.com.directx/gpu: 1 [...]
Použití Container Insights k monitorování využití GPU
Container Insights s AKS monitoruje následující metriky využití GPU:
Název metriky | Dimenze metriky (značky) | Popis |
---|---|---|
containerGpuDutyCycle | container.azm.ms/clusterId , container.azm.ms/clusterName , containerName , gpuId , , gpuModel gpuVendor |
Procento času v minulém ukázkovém období (60 sekund), během kterého byl GPU zaneprázdněn/aktivně zpracovával kontejner. Pracovní cyklus je číslo mezi 1 a 100. |
containerGpuLimits | container.azm.ms/clusterId , , container.azm.ms/clusterName containerName |
Každý kontejner může zadat omezení jako jeden nebo více GPU. Není možné požadovat ani omezit zlomek GPU. |
ContainerGpuRequests | container.azm.ms/clusterId , , container.azm.ms/clusterName containerName |
Každý kontejner si může vyžádat jednu nebo více grafických procesorů. Není možné požadovat ani omezit zlomek GPU. |
containerGpumemoryTotalBytes | container.azm.ms/clusterId , container.azm.ms/clusterName , containerName , gpuId , , gpuModel gpuVendor |
Množství paměti GPU v bajtech, které lze použít pro konkrétní kontejner. |
containerGpumemoryUsedBytes | container.azm.ms/clusterId , container.azm.ms/clusterName , containerName , gpuId , , gpuModel gpuVendor |
Velikost paměti GPU v bajtech používaných konkrétním kontejnerem |
nodeGpuAllocatable | container.azm.ms/clusterId , , container.azm.ms/clusterName gpuVendor |
Počet GPU v uzlu, který může Kubernetes používat. |
nodeGpuCapacity | container.azm.ms/clusterId , , container.azm.ms/clusterName gpuVendor |
Celkový počet GPU v uzlu |
Vyčištění prostředků
Pomocí příkazu odeberte přidružené objekty Kubernetes, které jste vytvořili v tomto článku
kubectl delete job
.kubectl delete jobs windows-gpu-workload
Další kroky
- Pokud chcete spouštět úlohy Apache Sparku, přečtěte si téma Spouštění úloh Apache Sparku v AKS.
- Další informace o funkcích plánovače Kubernetes najdete v tématu Osvědčené postupy pro pokročilé funkce plánovače v AKS.
- Další informace o službě Azure Kubernetes Service a Azure Machine Learning najdete tady:
Azure Kubernetes Service