Použití GPU pro úlohy náročné na výpočetní výkon (AKS v Azure Stack HCI 23H2)

Platí pro: Azure Stack HCI verze 23H2

Poznámka

Informace o GPU v AKS v Azure Stack HCI 22H2 najdete v tématu Použití GPU (HCI 22H2).

Grafické jednotky zpracování (GPU) se používají pro úlohy náročné na výpočetní výkon, jako je strojové učení, hluboké učení a další. Tento článek popisuje, jak používat grafické procesory pro úlohy náročné na výpočetní výkon v AKS, které umožňuje Azure Arc.

Podporované modely GPU

AKS v Azure Stack HCI 23H2 podporuje následující modely GPU:

Manufacturer Model GPU Podporovaná verze
Nvidia A2 2311.2
Nvidia A16 2402.0

Podporované velikosti virtuálních počítačů

AKS ve službě Azure Stack HCI 23H2 podporuje následující velikosti virtuálních počítačů pro jednotlivé modely GPU.

Nvidia A2 podporuje SKU NC2 A2.

Velikost virtuálního počítače Grafické procesory Paměť GPU: GiB Virtuální procesory Paměť: 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 je podporována SKU NC2 A16

Velikost virtuálního počítače Grafické procesory Paměť GPU: GiB Virtuální procesory Paměť: 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

Než začnete

Pokud chcete v AKS Arc používat gpu, před zahájením nasazení clusteru se ujistěte, že jste nainstalovali potřebné ovladače GPU. Postupujte podle kroků v této části.

Krok 1: Instalace operačního systému

Nainstalujte operační systém Azure Stack HCI verze 23H2 místně na každý server v clusteru Azure Stack HCI.

Krok 2: Stažení a instalace ovladače NVIDIA pro zmírnění rizik

Software může obsahovat komponenty vyvinuté a vlastněné společností NVIDIA Corporation nebo jejími poskytovateli licencí. Použití těchto komponent se řídí licenční smlouvou NVIDIA s koncovým uživatelem.

Ovladač pro zmírnění rizik NVIDIA najdete v dokumentaci k datovému centru NVIDIA . Po stažení ovladače rozbalte archiv a nainstalujte ovladač pro zmírnění rizik na každém hostitelském počítači.

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\

Pokud chcete nainstalovat ovladač pro zmírnění rizik, přejděte do složky, která obsahuje extrahované soubory, a vyberte soubor ovladače GPU na základě skutečného typu GPU nainstalovaného na hostitelích Azure Stack HCI. Pokud je například typ GPU A2, klikněte pravým tlačítkem na soubor nvidia_azure_stack_A2_base.inf a vyberte Nainstalovat.

Instalaci můžete také provést pomocí příkazového řádku tak, že přejdete do složky a spuštěním následujících příkazů nainstalujete ovladač pro zmírnění rizik:

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

Po instalaci ovladače pro zmírnění rizik se grafické procesory zobrazí ve stavu OK v části Nvidia A2_base – Odpojeno:

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

Krok 3: Opakování kroků 1 a 2

Opakujte kroky 1 a 2 pro každý server v clusteru HCI.

Krok 4: Pokračování v nasazení clusteru Azure Stack HCI

Pokračujte v nasazování clusteru Azure Stack HCI podle kroků v tématu Nasazení Azure Stack HCI verze 23H2.

Získání seznamu dostupných skladových položek virtuálních počítačů s podporou GPU

Po dokončení nasazení clusteru Azure Stack HCI můžete spuštěním následujícího příkazu rozhraní příkazového řádku zobrazit dostupné skladové položky virtuálních počítačů ve vašem nasazení. Pokud jsou ovladače GPU správně nainstalované, zobrazí se odpovídající skladové položky virtuálních počítačů GPU:

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

Vytvoření nového clusteru úloh s fondem uzlů s podporou GPU

V současné době je použití fondů uzlů s podporou GPU dostupné jenom pro fondy uzlů s Linuxem. Vytvoření nového clusteru Kubernetes:

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

Následující příklad přidá fond uzlů se 2 uzly s podporou GPU (NVDIA A2) se skladovou položkou virtuálního počítače Standard_NC4_A2 :

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

Ověřte, že můžete naplánovat GPU.

Po vytvoření fondu uzlů GPU ověřte, že můžete naplánovat gpu v Kubernetes. Nejprve pomocí příkazu kubectl get nodes vypište uzly v clusteru:

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

Teď pomocí příkazu kubectl describe node ověřte, že se gpu dají naplánovat. V části Kapacita by se gpu mělo zobrazit jako nvidia.com/gpu: 1.

kubectl describe <node> | findstr "gpu" 

Výstup by měl zobrazit GPU z pracovního uzlu a měl by vypadat přibližně takto:

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

Spuštění úlohy s podporou GPU

Po dokončení předchozích kroků vytvořte nový soubor YAML pro testování. například gpupod.yaml. Zkopírujte a vložte následující YAML do nového souboru s názvem gpupod.yaml a pak ho uložte:

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

Spuštěním následujícího příkazu nasaďte ukázkovou aplikaci:

kubectl apply -f gpupod.yaml

Ověřte, že se pod spustil, dokončil spuštění a že je přiřazená gpu:

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

Předchozí příkaz by měl zobrazit jeden přiřazený GPU:

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

Zkontrolujte soubor protokolu podu a zjistěte, jestli test proběhl úspěšně:

kubectl logs cuda-vector-add

Následuje příklad výstupu z předchozího příkazu:

[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

Pokud se při volání ovladačů zobrazí chyba neshody verzí, například "Verze ovladače CUDA není pro verzi modulu runtime CUDA dostatečná", projděte si graf kompatibility ovladačů NVIDIA.

Časté otázky

Co se stane při upgradu fondu uzlů s podporou GPU?

Upgrade fondů uzlů s podporou GPU se řídí stejným způsobem upgradu se zajištěním provozu, který se používá pro běžné fondy uzlů. Aby se fondy uzlů s podporou GPU na novém virtuálním počítači úspěšně vytvořily na fyzickém hostitelském počítači, vyžaduje, aby pro úspěšné přiřazení zařízení bylo k dispozici jeden nebo více fyzických GPU. Tato dostupnost zajišťuje, aby vaše aplikace mohly běžet i v případě, že Kubernetes naplánuje pody na tomto upgradovaném uzlu.

Před upgradem:

  1. Během upgradu naplánujte výpadek.
  2. Pokud používáte Standard_NK6 nebo 2 další GPU, pokud používáte Standard_NK12, budete mít na fyzického hostitele o jeden GPU navíc. Pokud používáte plnou kapacitu a nemáte další GPU, doporučujeme před upgradem vertikálně snížit kapacitu fondu uzlů na jeden uzel. Vertikální navýšení kapacity po upgradu proběhne úspěšně.

Co se stane, když během upgradu nemám na fyzickém počítači další fyzické gpu?

Pokud se upgrade aktivuje v clusteru bez dalších prostředků GPU, aby se usnadnil upgrade se zajištěním provozu, proces upgradu přestane reagovat, dokud nebude k dispozici GPU. Pokud běžíte při plné kapacitě a nemáte další GPU, doporučujeme před upgradem vertikálně snížit kapacitu fondu uzlů na jeden uzel a po úspěšném upgradu vertikálně navýšit kapacitu.

Další kroky