Sdílet prostřednictvím


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

Platí pro: Azure Local, verze 23H2

Poznámka:

Informace o grafických procesorech v AKS v Azure Local 22H2 najdete v tématu Použití GPU (Místní 22H2 Azure).

Grafické procesorové jednotky (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 GPU pro úlohy náročné na výpočetní výkon v AKS, které podporuje Azure Arc.

Podporované modely GPU

Místní azure verze 23H2 podporuje AKS následující modely GPU:

Výrobce Model GPU Podporovaná verze
NVidia A2 2311.2
NVidia A16 2402.0
NVidia T4 2408.0

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

AKS v místním Prostředí Azure verze 23H2 podporuje následující velikosti virtuálních počítačů pro jednotlivé modely GPU.

Jednotky SKU NK T4 podporují Nvidia T4.

Velikost virtuálního počítače Grafické procesory Paměť GPU: GiB Virtuální procesory Paměť: GiB
Standard_NK6 1 8 6 12
Standard_NK12 2 16 12 24

Skladové položky NC2 A2 podporuje Nvidia A2.

Velikost virtuálního počítače Grafické procesory Paměť GPU: GiB Virtuální procesory Paměť: GiB
Standard_NC4_A2 0 16 4 8
Standard_NC8_A2 0 16 8 16
Standard_NC16_A2 2 48 16 64
Standard_NC32_A2 2 48 32 28

Skladové položky NC2 A16 podporují Nvidia A16.

Velikost virtuálního počítače Grafické procesory Paměť GPU: GiB Virtuální procesory Paměť: GiB
Standard_NC4_A16 0 16 4 8
Standard_NC8_A16 0 16 8 16
Standard_NC16_A16 2 48 16 64
Standard_NC32_A16 2 48 32 28

Než začnete

Pokud chcete použít GPU v AKS Arc, 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 místní operační systém Azure verze 23H2 místně na každý server v místním clusteru Azure.

Krok 2: Odinstalace ovladače hostitele NVIDIA

Na každém hostitelském počítači přejděte na Ovládací panely > Přidat nebo odebrat programy, odinstalujte ovladač hostitele NVIDIA a restartujte počítač. Po restartování počítače ověřte, že se ovladač úspěšně odinstaloval. Otevřete terminál PowerShellu se zvýšenými oprávněními a spusťte následující příkaz:

Get-PnpDevice  | select status, class, friendlyname, instanceid | where {$_.friendlyname -eq "3D Video Controller"}

Zařízení GPU by se měla zobrazit ve stavu chyby, jak je znázorněno v tomto ukázkovém výstupu:

Error       3D Video Controller                   PCI\VEN_10DE&DEV_1EB8&SUBSYS_12A210DE&REV_A1\4&32EEF88F&0&0000 
Error       3D Video Controller                   PCI\VEN_10DE&DEV_1EB8&SUBSYS_12A210DE&REV_A1\4&3569C1D3&0&0000 

Krok 3: Odpojení ovladače hostitele od hostitele

Když odinstalujete ovladač hostitele, fyzický GPU přejde do chybového stavu. Musíte odpojit všechna zařízení GPU od hostitele.

Pro každé zařízení GPU (3D Video Controller) spusťte v PowerShellu následující příkazy. Zkopírujte ID instance; Například PCI\VEN_10DE&DEV_1EB8&SUBSYS_12A210DE&REV_A1\4&32EEF88F&0&0000 z předchozího výstupu příkazu:

$id1 = "<Copy and paste GPU instance id into this string>"
$lp1 = (Get-PnpDeviceProperty -KeyName DEVPKEY_Device_LocationPaths -InstanceId $id1).Data[0]
Disable-PnpDevice -InstanceId $id1 -Confirm:$false
Dismount-VMHostAssignableDevice -LocationPath $lp1 -Force

Spuštěním následujícího příkazu potvrďte, že se grafické procesory správně odpojí od hostitele. Gpu byste měli umístit do Unknown stavu:

Get-PnpDevice  | select status, class, friendlyname, instanceid | where {$_.friendlyname -eq "3D Video Controller"}
Unknown       3D Video Controller               PCI\VEN_10DE&DEV_1EB8&SUBSYS_12A210DE&REV_A1\4&32EEF88F&0&0000 
Unknown       3D Video Controller               PCI\VEN_10DE&DEV_1EB8&SUBSYS_12A210DE&REV_A1\4&3569C1D3&0&0000 

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

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

Pokud si chcete stáhnout ovladač pro zmírnění rizik NVIDIA, podívejte se do dokumentace k datovému centru NVIDIA. Po stažení ovladače rozbalte archiv a nainstalujte ovladač pro zmírnění rizik na každý hostitelský počítač. Pomocí tohoto skriptu PowerShellu můžete stáhnout ovladač pro zmírnění rizik a extrahovat ho:

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 místních hostitelích Azure. Pokud je například typ A2 GPU, klikněte pravým tlačítkem myši na soubor nvidia_azure_stack_A2_base.inf a vyberte Nainstalovat.

Můžete také nainstalovat pomocí příkazového řádku tak, že přejdete do složky a spustíte následující příkazy pro instalaci ovladače 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 jsou gpu uvedené ve stavu OK v části Nvidia A2_base - Odpojeno:

Get-PnpDevice  | select status, class, friendlyname, instanceid | where {$_.friendlyname -match "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 5: Opakování kroků 1 až 4

Opakujte kroky 1 až 4 pro každý server v místním clusteru Azure.

Krok 6: Pokračování v nasazení místního clusteru Azure

Pokračujte v nasazení místního clusteru Azure podle kroků v nasazení Azure Local verze 23H2.

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

Po dokončení nasazení místního clusteru Azure 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ů Linuxu. 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ů s 2 uzly s podporou GPU (NVDIA A2) s SKU 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

Potvrď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 ve vašem 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 potvrďte, že je možné naplánovat gpu. V části Kapacita by se GPU měl zobrazit jako nvidia.com/gpu: 1.

kubectl describe <node> | findstr "gpu" 

Výstup by měl zobrazit GPU z pracovního uzlu a vypadat nějak 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 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 zkontrolujte, 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 při volání do ovladačů dojde k chybě neshody verzí, například verze ovladače CUDA není dostatečná pro verzi modulu runtime CUDA, projděte si graf kompatibility matic ovladačů NVIDIA.

Často kladené dotazy

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

Upgrade fondů uzlů s podporou GPU se řídí stejným vzorem postupného upgradu, který se používá pro běžné fondy uzlů. Aby se fondy uzlů s podporou GPU v 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 jedno nebo více fyzických GPU. Tato dostupnost zajišťuje, že vaše aplikace budou moct dál běžet, když Kubernetes naplánuje pody na tomto upgradovaném uzlu.

Před upgradem:

  1. Naplánujte výpadek během upgradu.
  2. Pokud používáte Standard_NK6 nebo 2 další GPU, pokud používáte Standard_NK12, požádejte o jeden další GPU na fyzického hostitele. 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 a po úspěšném upgradu vertikálně navýšit kapacitu.

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

Pokud se v clusteru aktivuje upgrade bez dalších prostředků GPU pro usnadnění postupného upgradu, proces upgradu přestane reagovat, dokud nebude gpu k dispozici. Pokud běžíte v 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