Windows-GPU's gebruiken voor rekenintensieve workloads in Azure Kubernetes Service (AKS) (preview)
Grafische verwerkingseenheden (GPU's) worden vaak gebruikt voor rekenintensieve workloads, zoals afbeeldingen en visualisatieworkloads. AKS biedt ondersteuning voor Windows- en Linux-knooppuntgroepen met GPU om rekenintensieve Kubernetes-workloads uit te voeren.
Dit artikel helpt u bij het inrichten van Windows-knooppunten met gefaseerde GPU's op nieuwe en bestaande AKS-clusters (preview).
Ondersteunde virtuele machines met GPU (VM's)
Zie voor GPU geoptimaliseerde VM-grootten in Azure om ondersteunde VM-vm's met GPU weer te geven. Voor AKS-knooppuntgroepen raden we een minimale grootte van Standard_NC6s_v3 aan. De NVv4-serie (gebaseerd op AMD GPU's) wordt niet ondersteund op AKS.
Notitie
VM's met GPU-functionaliteit bevatten speciale hardware waarvoor hogere prijzen en beschikbaarheid van regio's gelden. Zie het prijshulpprogramma en de beschikbaarheid van regio's voor meer informatie.
Beperkingen
- Het bijwerken van een bestaande Windows-knooppuntgroep om GPU toe te voegen, wordt niet ondersteund.
- Niet ondersteund in Kubernetes versie 1.28 en lager.
Voordat u begint
- In dit artikel wordt ervan uitgegaan dat u een bestaand AKS-cluster hebt. Als u geen cluster hebt, maakt u er een met behulp van de Azure CLI, Azure PowerShell of Azure Portal.
- U moet Azure CLI versie 1.0.0b2 of hoger hebben geïnstalleerd en geconfigureerd voor het gebruik van het
--skip-gpu-driver-install
veld met deaz aks nodepool add
opdracht. Voeraz --version
uit om de versie te bekijken. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren. - U moet Azure CLI versie 9.0.0b5 of hoger hebben geïnstalleerd en geconfigureerd voor het gebruik van het
--driver-type
veld met deaz aks nodepool add
opdracht. Voeraz --version
uit om de versie te bekijken. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren.
De referenties voor uw cluster ophalen
Haal de referenties voor uw AKS-cluster op met behulp van de
az aks get-credentials
opdracht. Met de volgende voorbeeldopdracht worden de referenties voor het myAKSCluster in de resourcegroep myResourceGroup ophaalt:az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Windows GPU gebruiken met automatische installatie van stuurprogramma's
Het gebruik van NVIDIA GPU's omvat de installatie van verschillende NVIDIA-softwareonderdelen, zoals de DirectX-apparaatinvoegtoepassing voor Kubernetes, installatie van GPU-stuurprogramma's en meer. Wanneer u een Windows-knooppuntgroep maakt met een ondersteunde VM met GPU, worden deze onderdelen en de juiste NVIDIA CUDA- of GRID-stuurprogramma's geïnstalleerd. Voor VM-grootten uit de NC- en ND-serie wordt het CUDA-stuurprogramma geïnstalleerd. Voor VM-grootten uit de NV-serie wordt het GRID-stuurprogramma geïnstalleerd.
Belangrijk
AKS preview-functies zijn beschikbaar op selfservice, opt-in basis. Previews worden geleverd 'zoals is' en 'als beschikbaar' en ze worden uitgesloten van de serviceovereenkomsten en beperkte garantie. AKS-previews worden gedeeltelijk gedekt door klantondersteuning op basis van best effort. Daarom zijn deze functies niet bedoeld voor productiegebruik. Zie de volgende ondersteuningsartikelen voor meer informatie:
aks-preview
De Azure CLI-extensie installeren
Registreer of werk de aks-preview-extensie bij met behulp van de
az extension add
ofaz extension update
opdracht.# Register the aks-preview extension az extension add --name aks-preview # Update the aks-preview extension az extension update --name aks-preview
WindowsGPUPreview
De functievlag registreren
Registreer de
WindowsGPUPreview
functievlag met behulp van deaz feature register
opdracht.az feature register --namespace "Microsoft.ContainerService" --name "WindowsGPUPreview"
Het duurt enkele minuten voordat de status Geregistreerd wordt weergegeven.
Controleer de registratiestatus met behulp van de
az feature show
opdracht.az feature show --namespace "Microsoft.ContainerService" --name "WindowsGPUPreview"
Wanneer de status Geregistreerd weergeeft, vernieuwt u de registratie van de Microsoft.ContainerService-resourceprovider met behulp van de
az provider register
opdracht.az provider register --namespace Microsoft.ContainerService
Een knooppuntgroep met Windows GPU maken (preview)
Als u een Windows GPU-knooppuntgroep wilt maken, moet u een ondersteunde VM-grootte met GPU gebruiken en de os-type
als Windows
. De standaardversie van Windows os-sku
is Windows2022
, maar alle Windows-opties os-sku
worden ondersteund.
Maak een windows GPU-knooppuntgroep met behulp van de
az aks nodepool add
opdracht.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
Controleer of uw GPU's kunnen worden geschacht.
Zodra u hebt bevestigd dat uw GPU's beschikbaar zijn, kunt u uw GPU-workload uitvoeren.
Type GPU-stuurprogramma opgeven (preview)
Standaard geeft AKS een standaard gpu-stuurprogrammatype op voor elke ondersteunde VM met GPU. Omdat workload- en stuurprogrammacompatibiliteit belangrijk zijn voor werkende GPU-workloads, kunt u het stuurprogrammatype opgeven voor uw Windows GPU-knooppunt. Deze functie wordt niet ondersteund voor Linux GPU-knooppuntgroepen.
Wanneer u een Windows-agentgroep maakt met GPU-ondersteuning, kunt u het type GPU-stuurprogramma opgeven met behulp van de --driver-type
vlag.
De beschikbare opties zijn:
- GRID: Voor toepassingen waarvoor ondersteuning voor virtualisatie is vereist.
- CUDA: Geoptimaliseerd voor rekentaken in wetenschappelijke computing en gegevensintensieve toepassingen.
Notitie
Wanneer u de --driver-type
vlag instelt, neemt u de verantwoordelijkheid om ervoor te zorgen dat het geselecteerde stuurprogrammatype compatibel is met de specifieke VM-grootte en -configuratie van uw knooppuntgroep. Hoewel AKS compatibiliteit probeert te valideren, zijn er scenario's waarin het maken van de knooppuntgroep kan mislukken vanwege incompatibiliteit tussen het opgegeven stuurprogrammatype en de onderliggende VM of hardware.
Gebruik de az aks nodepool add
opdracht om een windows GPU-knooppuntgroep te maken met een specifiek TYPE GPU-stuurprogramma.
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
Met de bovenstaande opdracht maakt u bijvoorbeeld een gpu-knooppuntgroep met behulp van het GRID
type GPU-stuurprogramma. Als u dit stuurprogrammatype selecteert, wordt het standaardstuurprogrammatype voor VM-SKU's uit CUDA
de NC-serie overschreven.
Windows GPU gebruiken met handmatige installatie van stuurprogramma's
Bij het maken van een Windows-knooppuntgroep met N-serie VM-grootten (NVIDIA GPU) in AKS, worden het GPU-stuurprogramma en de invoegtoepassing voor Kubernetes DirectX-apparaten automatisch geïnstalleerd. Gebruik de volgende stappen om deze automatische installatie te omzeilen:
- Sla de installatie van GPU-stuurprogramma's (preview) over met behulp van
--skip-gpu-driver-install
. - Handmatige installatie van de Kubernetes DirectX-apparaatinvoegtoepassing.
Installatie van GPU-stuurprogramma overslaan (preview)
AKS heeft standaard automatische installatie van GPU-stuurprogramma's ingeschakeld. In sommige gevallen, zoals het installeren van uw eigen stuurprogramma's, wilt u de installatie van GPU-stuurprogramma's overslaan.
Belangrijk
AKS preview-functies zijn beschikbaar op selfservice, opt-in basis. Previews worden geleverd 'zoals is' en 'als beschikbaar' en ze worden uitgesloten van de serviceovereenkomsten en beperkte garantie. AKS-previews worden gedeeltelijk gedekt door klantondersteuning op basis van best effort. Daarom zijn deze functies niet bedoeld voor productiegebruik. Zie de volgende ondersteuningsartikelen voor meer informatie:
Registreer of werk de aks-preview-extensie bij met behulp van de
az extension add
ofaz extension update
opdracht.# Register the aks-preview extension az extension add --name aks-preview # Update the aks-preview extension az extension update --name aks-preview
Maak een knooppuntgroep met behulp van de
az aks nodepool add
opdracht met de vlag om de--skip-gpu-driver-install
automatische installatie van GPU-stuurprogramma's over te slaan.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
Notitie
Als de --node-vm-size
functie die u gebruikt, nog niet is uitgevoerd op AKS, kunt u GEEN GPU's gebruiken en --skip-gpu-driver-install
werkt dit niet.
De Kubernetes DirectX-apparaatinvoegtoepassing handmatig installeren
U kunt een DaemonSet implementeren voor de Kubernetes DirectX-apparaatinvoegtoepassing, die een pod op elk knooppunt uitvoert om de vereiste stuurprogramma's voor de GPU's te bieden.
Voeg een knooppuntgroep toe aan uw cluster met behulp van de
az aks nodepool add
opdracht.az aks nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name gpunp \ --node-count 1 \ --os-type windows \ --os-sku windows2022
Een naamruimte maken en de Kubernetes DirectX-apparaatinvoegtoepassing implementeren
Maak een naamruimte met behulp van de
kubectl create namespace
opdracht.kubectl create namespace gpu-resources
Maak een bestand met de naam k8s-directx-device-plugin.yaml en plak het volgende YAML-manifest dat is opgegeven als onderdeel van de NVIDIA-apparaatinvoegtoepassing voor het Kubernetes-project:
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
Maak de DaemonSet en controleer of de NVIDIA-apparaatinvoegtoepassing is gemaakt met behulp van de
kubectl apply
opdracht.kubectl apply -f nvidia-device-plugin-ds.yaml
Nu u de NVIDIA-apparaatinvoegtoepassing hebt geïnstalleerd, kunt u controleren of uw GPU's kunnen worden geschuleerbaar.
Controleer of GPU's kunnen worden gescheerd
Nadat u het cluster hebt gemaakt, controleert u of GPU's beschikbaar zijn in Kubernetes.
Vermeld de knooppunten in uw cluster met behulp van de
kubectl get nodes
opdracht.kubectl get nodes
De uitvoer moet er ongeveer uitzien als in de volgende voorbeelduitvoer:
NAME STATUS ROLES AGE VERSION aks-gpunp-28993262-0 Ready agent 13m v1.20.7
Controleer of de GPU's beschikbaar zijn met behulp van de
kubectl describe node
opdracht.kubectl describe node aks-gpunp-28993262-0
Onder de sectie Capaciteit moet de GPU worden weergegeven als
microsoft.com/directx: 1
. De uitvoer moet er ongeveer uitzien als in de volgende verkorte voorbeelduitvoer:Capacity: [...] microsoft.com.directx/gpu: 1 [...]
Container Insights gebruiken om GPU-gebruik te bewaken
Container Insights met AKS bewaakt de volgende metrische gegevens over GPU-gebruik:
Naam van meetwaarde | Metrische dimensie (tags) | Beschrijving |
---|---|---|
containerGpuDutyCycle | container.azm.ms/clusterId , , container.azm.ms/clusterName containerName , gpuId , , , gpuModel gpuVendor |
Percentage van de tijd gedurende de afgelopen voorbeeldperiode (60 seconden) waarin GPU bezig was/actief werd verwerkt voor een container. De dienstcyclus is een getal tussen 1 en 100. |
containerGpuLimits | container.azm.ms/clusterId , , container.azm.ms/clusterName containerName |
Elke container kan limieten opgeven als een of meer GPU's. Het is niet mogelijk om een fractie van een GPU aan te vragen of te beperken. |
containerGpuRequests | container.azm.ms/clusterId , , container.azm.ms/clusterName containerName |
Elke container kan een of meer GPU's aanvragen. Het is niet mogelijk om een fractie van een GPU aan te vragen of te beperken. |
containerGpumemoryTotalBytes | container.azm.ms/clusterId , , container.azm.ms/clusterName containerName , gpuId , , , gpuModel gpuVendor |
Hoeveelheid GPU-geheugen in bytes die beschikbaar zijn voor gebruik voor een specifieke container. |
containerGpumemoryUsedBytes | container.azm.ms/clusterId , , container.azm.ms/clusterName containerName , gpuId , , , gpuModel gpuVendor |
Hoeveelheid GPU-geheugen in bytes die worden gebruikt door een specifieke container. |
nodeGpuAllocatable | container.azm.ms/clusterId , , container.azm.ms/clusterName gpuVendor |
Het aantal GPU's in een knooppunt dat Kubernetes kan gebruiken. |
nodeGpuCapacity | container.azm.ms/clusterId , , container.azm.ms/clusterName gpuVendor |
Totaal aantal GPU's in een knooppunt. |
Resources opschonen
Verwijder de bijbehorende Kubernetes-objecten die u in dit artikel hebt gemaakt met behulp van de
kubectl delete job
opdracht.kubectl delete jobs windows-gpu-workload
Volgende stappen
- Zie Apache Spark-taken uitvoeren op AKS als u Apache Spark-taken wilt uitvoeren.
- Zie Best practices voor geavanceerde scheduler-functies in AKS voor meer informatie over functies van de Kubernetes-planner.
- Zie voor meer informatie over Azure Kubernetes Service en Azure Machine Learning:
Azure Kubernetes Service