Verwenden von GPUs für rechenintensive Workloads (AKS in Azure Stack HCI 23H2)
Gilt für: Azure Stack HCI, Version 23H2
Hinweis
Informationen zu GPUs in AKS in Azure Stack HCI 22H2 finden Sie unter Verwenden von GPUs (HCI 22H2).
Grafikprozessoren (Graphical Processing Units, GPU) werden für rechenintensive Workloads wie Machine Learning, Deep Learning und vieles mehr verwendet. In diesem Artikel wird beschrieben, wie Sie GPUs für rechenintensive Workloads in AKS verwenden, die von Azure Arc aktiviert werden.
Unterstützte GPU-Modelle
Die folgenden GPU-Modelle werden von AKS in Azure Stack HCI 23H2 unterstützt:
Hersteller | GPU-Modell | Unterstützte Version |
---|---|---|
Nvidia | A2 | 2311.2 |
Nvidia | A16 | 2402.0 |
Unterstützte VM-Größen
Die folgenden VM-Größen für die einzelnen GPU-Modelle werden von AKS in Azure Stack HCI 23H2 unterstützt.
Nvidia A2 wird von NC2 A2-SKUs unterstützt.
Größe des virtuellen Computers | GPUs | GPU-Arbeitsspeicher: GiB | vCPU | Memory: 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 |
Nvidia A16 wird von NC2 A16-SKUs unterstützt.
Größe des virtuellen Computers | GPUs | GPU-Arbeitsspeicher: GiB | vCPU | Memory: 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 |
Voraussetzungen
Um GPUs in AKS Arc zu verwenden, stellen Sie sicher, dass Sie die erforderlichen GPU-Treiber installiert haben, bevor Sie mit der Bereitstellung des Clusters beginnen. Führen Sie die Schritte in diesem Abschnitt aus.
Schritt 1: Installieren des Betriebssystems
Installieren Sie das Betriebssystem Azure Stack HCI, Version 23H2, lokal auf jedem Server in Ihrem Azure Stack HCI-Cluster.
Schritt 2: Herunterladen und Installieren des NVIDIA-Entschärfungstreibers
Die Software kann Komponenten enthalten, die von NVIDIA Corporation oder ihren Lizenzgebern entwickelt und im Besitz sind. Die Verwendung dieser Komponenten unterliegt dem NVIDIA-Endbenutzer-Lizenzvertrag.
Informationen zum Herunterladen des NVIDIA-Entschärfungstreibers finden Sie in der Dokumentation zum NVIDIA-Rechenzentrum . Erweitern Sie nach dem Herunterladen des Treibers das Archiv, und installieren Sie den Entschärfungstreiber auf jedem 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\
Navigieren Sie zum Installieren des Entschärfungstreibers zu dem Ordner, der die extrahierten Dateien enthält, und wählen Sie die GPU-Treiberdatei basierend auf dem tatsächlichen GPU-Typ aus, der auf Ihren Azure Stack HCI-Hosts installiert ist. Wenn der Typ beispielsweise A2 GPU ist, klicken Sie mit der rechten Maustaste auf die Datei nvidia_azure_stack_A2_base.inf , und wählen Sie Installieren aus.
Sie können die Installation auch über die Befehlszeile durchführen, indem Sie zum Ordner navigieren und die folgenden Befehle ausführen, um den Entschärfungstreiber zu installieren:
pnputil /add-driver nvidia_azure_stack_A2_base.inf /install
pnputil /scan-devices
Nachdem Sie den Entschärfungstreiber installiert haben, werden die GPUs im Status OK unter Nvidia A2_base – Nicht bereitgestellt aufgeführt:
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
Schritt 3: Wiederholen Der Schritt 1 und 2
Wiederholen Sie die Schritte 1 und 2 für jeden Server in Ihrem HCI-Cluster.
Schritt 4: Fortsetzen der Bereitstellung des Azure Stack HCI-Clusters
Fahren Sie mit der Bereitstellung des Azure Stack HCI-Clusters fort, indem Sie die Schritte unter Azure Stack HCI, Version 23H2-Bereitstellung ausführen.
Abrufen einer Liste der verfügbaren GPU-fähigen VM-SKUs
Nachdem die Bereitstellung des Azure Stack HCI-Clusters abgeschlossen ist, können Sie den folgenden CLI-Befehl ausführen, um die verfügbaren VM-SKUs für Ihre Bereitstellung anzuzeigen. Wenn Ihre GPU-Treiber ordnungsgemäß installiert sind, werden die entsprechenden GPU-VM-SKUs aufgeführt:
az aksarc vmsize list --custom-location <custom location ID> -g <resource group name>
Erstellen eines neuen Workloadclusters mit einem GPU-fähigen Knotenpool
Die Verwendung GPU-fähiger Knotenpools steht aktuell nur für Linux-Knotenpools zur Verfügung. So erstellen Sie einen neuen Kubernetes-Cluster:
az aksarc create -n <aks cluster name> -g <resource group name> --custom-location <custom location ID> --vnet-ids <vnet ID>
Im folgenden Beispiel wird ein Knotenpool mit zwei GPU-fähigen Knoten (NVDIA A2) mit einer Standard_NC4_A2 VM-SKU hinzugefügt:
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
Vergewissern Sie sich, dass Sie GPUs planen können
Nachdem Ihr GPU-Knotenpool erstellt wurde, vergewissern Sie sich, dass Sie GPUs in Kubernetes planen können. Listen Sie zunächst die Knoten in Ihrem Cluster mit dem Befehl kubectl get nodes auf:
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
Verwenden Sie nun den Befehl kubectl describe node , um zu bestätigen, dass die GPUs geplant werden können. Im Abschnitt Kapazität sollte die GPU als nvidia.com/gpu: 1 angezeigt werden.
kubectl describe <node> | findstr "gpu"
Die Ausgabe sollte die GPU(n) des Workerknotens anzeigen und in etwa wie folgt aussehen:
Capacity:
cpu: 4
ephemeral-storage: 103110508Ki
hugepages-1Gi: 0
hugepages-2Mi: 0
memory: 7865020Ki
nvidia.com/gpu: 1
pods: 110
Ausführen einer GPU-fähigen Workload
Nachdem Sie die vorherigen Schritte ausgeführt haben, erstellen Sie eine neue YAML-Datei zum Testen. beispiel: gpupod.yaml. Kopieren Sie die folgende YAML-Datei, fügen Sie sie in die neue Datei gpupod.yaml ein, und speichern Sie sie dann:
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
Führen Sie den folgenden Befehl aus, um die Beispielanwendung bereitzustellen:
kubectl apply -f gpupod.yaml
Vergewissern Sie sich, dass der Pod gestartet, die Ausführung abgeschlossen und die GPU zugewiesen ist:
kubectl describe pod cuda-vector-add | findstr 'gpu'
Der vorherige Befehl sollte eine zugewiesene GPU anzeigen:
nvidia.com/gpu: 1
nvidia.com/gpu: 1
Überprüfen Sie die Protokolldatei des Pods, um festzustellen, ob der Test erfolgreich war:
kubectl logs cuda-vector-add
Im Folgenden finden Sie eine Beispielausgabe des vorherigen Befehls:
[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
Wenn beim Aufrufen von Treibern ein Versionskonfliktfehler angezeigt wird, z. B. "CUDA-Treiberversion ist nicht ausreichend für CUDA-Laufzeitversion", lesen Sie das Kompatibilitätsdiagramm für nvidia-Treibermatrix.
Häufig gestellte Fragen
Was geschieht beim Upgrade eines GPU-fähigen Knotenpools?
Das Upgrade von GPU-fähigen Knotenpools folgt demselben parallelen Upgrademuster, das für reguläre Knotenpools verwendet wird. Damit GPU-fähige Knotenpools auf einem neuen virtuellen Computer erfolgreich auf dem physischen Hostcomputer erstellt werden können, müssen mindestens eine physische GPUs für eine erfolgreiche Gerätezuweisung verfügbar sein. Diese Verfügbarkeit stellt sicher, dass Ihre Anwendungen weiterhin ausgeführt werden können, wenn Kubernetes Pods auf diesem aktualisierten Knoten plant.
Vor dem Upgrade:
- Planen Sie ausfallzeiten während des Upgrades.
- Sie verfügen über eine zusätzliche GPU pro physischem Host, wenn Sie die Standard_NK6 ausführen, oder 2 zusätzliche GPUs, wenn Sie Standard_NK12 ausführen. Wenn Sie mit voller Kapazität ausgeführt werden und keine zusätzliche GPU besitzen, empfehlen wir, Ihren Knotenpool vor dem Upgrade auf einen einzelnen Knoten herunterzuskalieren und dann nach dem erfolgreichen Upgrade hochzuskalieren.
Was geschieht, wenn ich während eines Upgrades keine zusätzlichen physischen GPUs auf meinem physischen Computer habe?
Wenn ein Upgrade in einem Cluster ohne zusätzliche GPU-Ressourcen ausgelöst wird, um das parallele Upgrade zu ermöglichen, bleibt der Upgradeprozess hängen, bis eine GPU verfügbar ist. Wenn Sie mit voller Kapazität ausgeführt werden und keine zusätzliche GPU besitzen, empfehlen wir, Ihren Knotenpool vor dem Upgrade auf einen einzelnen Knoten herunterzuskalieren und dann nach dem erfolgreichen Upgrade hochzuskalieren.
Nächste Schritte
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für