Share via


GPU's gebruiken voor rekenintensieve workloads (AKS op Azure Stack HCI 23H2)

Van toepassing op: Azure Stack HCI, versie 23H2

Notitie

Zie GPU's (HCI 22H2) gebruiken voor meer informatie over GPU's in AKS op Azure Stack HCI 22H2.

Graphical Processing Units (GPU) worden gebruikt voor rekenintensieve workloads, zoals machine learning, deep learning en meer. In dit artikel wordt beschreven hoe u GPU's gebruikt voor rekenintensieve workloads in AKS die worden ingeschakeld door Azure Arc.

Ondersteunde GPU-modellen

De volgende GPU-modellen worden ondersteund door AKS op Azure Stack HCI 23H2:

Fabrikant GPU-model Ondersteunde versie
Nvidia A2 2311.2
Nvidia A16 2402.0

Ondersteunde VM-grootten

De volgende VM-grootten voor elk GPU-model worden ondersteund door AKS op Azure Stack HCI 23H2.

De Nvidia A2 wordt ondersteund door NC2 A2-SKU's

VM-grootte GPU's GPU-geheugen: GiB vCPU Geheugen: GiB
Standard_NC4_A2 1 16 4 8
Standard_NC8_A2 1 16 8 16
Standard_NC16_A2 2 48 16 64
Standard_NC32_A2 2 48 32 28

De Nvidia A16 wordt ondersteund door NC2 A16-SKU's

VM-grootte GPU's GPU-geheugen: GiB vCPU Geheugen: GiB
Standard_NC4_A16 1 16 4 8
Standard_NC8_A16 1 16 8 16
Standard_NC16_A16 2 48 16 64
Standard_NC32_A16 2 48 32 28

Voordat u begint

Als u GPU's in AKS Arc wilt gebruiken, moet u ervoor zorgen dat u de benodigde GPU-stuurprogramma's hebt geïnstalleerd voordat u begint met de implementatie van het cluster. Volg de stappen in deze sectie.

Stap 1: het besturingssysteem installeren

Installeer het besturingssysteem Azure Stack HCI versie 23H2 lokaal op elke server in uw Azure Stack HCI-cluster.

Stap 2: het STUURPROGRAMMA voor NVIDIA-risicobeperking downloaden en installeren

De software kan onderdelen bevatten die zijn ontwikkeld en eigendom zijn van NVIDIA Corporation of haar licentiegevers. Het gebruik van deze onderdelen valt onder de gebruiksrechtovereenkomst van NVIDIA.

Zie de documentatie van het NVIDIA-datacenter om het STUURPROGRAMMA voor NVIDIA-risicobeperking te downloaden. Nadat u het stuurprogramma hebt gedownload, vouwt u het archief uit en installeert u het risicobeperkingsstuurprogramma op elke hostcomputer.

Invoke-WebRequest -Uri "https://docs.nvidia.com/datacenter/tesla/gpu-passthrough/nvidia_azure_stack_inf_v2022.10.13_public.zip" -OutFile "nvidia_azure_stack_inf_v2022.10.13_public.zip"
mkdir nvidia-mitigation-driver
Expand-Archive .\nvidia_azure_stack_inf_v2022.10.13_public.zip .\nvidia-mitigation-driver\

Als u het risicobeperkingsstuurprogramma wilt installeren, gaat u naar de map met de uitgepakte bestanden en selecteert u het GPU-stuurprogrammabestand op basis van het werkelijke GPU-type dat is geïnstalleerd op uw Azure Stack HCI-hosts. Als het type bijvoorbeeld A2 GPU is, klikt u met de rechtermuisknop op het bestand nvidia_azure_stack_A2_base.inf en selecteert u Installeren.

U kunt ook installeren met behulp van de opdrachtregel door naar de map te navigeren en de volgende opdrachten uit te voeren om het risicobeperkingsstuurprogramma te installeren:

pnputil /add-driver nvidia_azure_stack_A2_base.inf /install 
pnputil /scan-devices 

Nadat u het risicobeperkingsstuurprogramma hebt geïnstalleerd, worden de GPU's weergegeven in de status OK onder Nvidia A2_base - Ontkoppeld:

Get-PnpDevice  | select status, class, friendlyname, instanceid | findstr /i /c:"nvidia"
OK       Nvidia A2_base - Dismounted               PCI\VEN_10DE&DEV_1EB8&SUBSYS_12A210DE&REV_A1\4&32EEF88F&0&0000 
OK       Nvidia A2_base - Dismounted               PCI\VEN_10DE&DEV_1EB8&SUBSYS_12A210DE&REV_A1\4&3569C1D3&0&0000

Stap 3: herhaal stap 1 en 2

Herhaal stap 1 en 2 voor elke server in uw HCI-cluster.

Stap 4: doorgaan met de implementatie van het Azure Stack HCI-cluster

Ga verder met de implementatie van het Azure Stack HCI-cluster door de stappen te volgen in Azure Stack HCI, versie 23H2-implementatie.

Een lijst met beschikbare VM-SKU's met GPU ophalen

Zodra de implementatie van het Azure Stack HCI-cluster is voltooid, kunt u de volgende CLI-opdracht uitvoeren om de beschikbare VM-SKU's in uw implementatie weer te geven. Als uw GPU-stuurprogramma's correct zijn geïnstalleerd, worden de bijbehorende GPU-VM-SKU's weergegeven:

az aksarc vmsize list --custom-location <custom location ID> -g <resource group name>

Een nieuw workloadcluster maken met een GPU-knooppuntgroep

Op dit moment is het gebruik van GPU-knooppuntgroepen alleen beschikbaar voor Linux-knooppuntgroepen. Een nieuw Kubernetes-cluster maken:

az aksarc create -n <aks cluster name> -g <resource group name> --custom-location <custom location ID> --vnet-ids <vnet ID>

In het volgende voorbeeld wordt een knooppuntgroep met 2 NVDIA A2-knooppunten (GPU) met een Standard_NC4_A2 VM-SKU toegevoegd:

az aksarc nodepool add --cluster-name <aks cluster name> -n <node pool name> -g <resource group name> --node-count 2 --node-vm-size Standard_NC4_A2 --os-type Linux

Bevestig dat u GPU's kunt plannen

Terwijl uw GPU-knooppuntgroep is gemaakt, controleert u of u GPU's kunt plannen in Kubernetes. Vermeld eerst de knooppunten in uw cluster met behulp van de opdracht kubectl get nodes :

kubectl get nodes
NAME             STATUS  ROLES                 AGE   VERSION
moc-l9qz36vtxzj  Ready   control-plane,master  6m14s  v1.22.6
moc-lhbkqoncefu  Ready   <none>                3m19s  v1.22.6
moc-li87udi8l9s  Ready   <none>                3m5s  v1.22.6

Gebruik nu de opdracht kubectl describe node om te bevestigen dat de GPU's kunnen worden gepland. In de sectie Capaciteit moet de GPU worden weergegeven als nvidia.com/gpu: 1.

kubectl describe <node> | findstr "gpu" 

De uitvoer moet de GPU('s) van het werkknooppunt weergeven en er ongeveer als volgt uitzien:

Capacity: 
  cpu:                4 
  ephemeral-storage:  103110508Ki 
  hugepages-1Gi:      0 
  hugepages-2Mi:      0 
  memory:             7865020Ki 
  nvidia.com/gpu:     1 
  pods:               110

Een workload met GPU uitvoeren

Zodra u de vorige stappen hebt voltooid, maakt u een nieuw YAML-bestand om te testen; bijvoorbeeld gpupod.yaml. Kopieer en plak de volgende YAML in het nieuwe bestand met de naam gpupod.yaml en sla deze vervolgens op:

apiVersion: v1
kind: Pod
metadata:
  name: cuda-vector-add
spec:
  restartPolicy: OnFailure
  containers:
  - name: cuda-vector-add
    image: "k8s.gcr.io/cuda-vector-add:v0.1"
    resources:
      limits:
        nvidia.com/gpu: 1

Voer de volgende opdracht uit om de voorbeeldtoepassing te implementeren:

kubectl apply -f gpupod.yaml

Controleer of de pod is gestart, uitgevoerd en of de GPU is toegewezen:

kubectl describe pod cuda-vector-add | findstr 'gpu'

In de vorige opdracht moet één GPU worden weergegeven die is toegewezen:

nvidia.com/gpu: 1
nvidia.com/gpu: 1

Controleer het logboekbestand van de pod om te zien of de test is geslaagd:

kubectl logs cuda-vector-add

Hier volgt een voorbeeld van uitvoer van de vorige opdracht:

[Vector addition of 50000 elements]
Copy input data from the host memory to the CUDA device
CUDA kernel launch with 196 blocks of 256 threads
Copy output data from the CUDA device to the host memory
Test PASSED
Done

Als u een fout over niet-overeenkomende versies ontvangt bij het aanroepen van stuurprogramma's, zoals 'CUDA-stuurprogrammaversie is onvoldoende voor de CUDA-runtimeversie', raadpleegt u de compatibiliteitsgrafiek van nvidia-stuurprogrammamatrix.

Veelgestelde vragen

Wat gebeurt er tijdens de upgrade van een GPU-knooppuntgroep?

Het upgraden van GPU-knooppuntgroepen volgt hetzelfde rolling upgrade-patroon dat wordt gebruikt voor normale knooppuntgroepen. Als u GPU-knooppuntgroepen in een nieuwe VM wilt maken op de fysieke hostcomputer, moeten er een of meer fysieke GPU's beschikbaar zijn voor een geslaagde apparaattoewijzing. Deze beschikbaarheid zorgt ervoor dat uw toepassingen kunnen blijven werken wanneer Kubernetes pods plant op dit bijgewerkte knooppunt.

Voordat u een upgrade uitvoert:

  1. Plan downtime tijdens de upgrade.
  2. Gebruik één extra GPU per fysieke host als u de Standard_NK6 uitvoert of 2 extra GPU's als u Standard_NK12 uitvoert. Als u op volledige capaciteit werkt en geen extra GPU hebt, raden we u aan uw knooppuntgroep omlaag te schalen naar één knooppunt voordat de upgrade wordt uitgevoerd. Vervolgens kunt u na de upgrade omhoog schalen.

Wat gebeurt er als ik geen extra fysieke GPU's op mijn fysieke computer heb tijdens een upgrade?

Als een upgrade wordt geactiveerd op een cluster zonder extra GPU-resources om de rolling upgrade te vergemakkelijken, loopt het upgradeproces vast totdat een GPU beschikbaar is. Als u op volledige capaciteit uitvoert en geen extra GPU hebt, raden we u aan uw knooppuntgroep omlaag te schalen naar één knooppunt vóór de upgrade en vervolgens omhoog te schalen nadat de upgrade is voltooid.

Volgende stappen