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:
- Plan downtime tijdens de upgrade.
- 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
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor