Sdílet prostřednictvím


Použití GPU pro úlohy náročné na výpočetní výkon v AKS v Azure Local

Platí pro: AKS v Azure Local

Poznámka:

Informace o grafických procesorech v AKS na Windows Serveru naleznete v tématu Použití GPU v AKS na Windows Serveru.

Grafické procesory (GPU) jsou užitečné 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

AKS v Azure Local podporuje následující modely GPU. Mějte na paměti, že gpu jsou podporovány pouze ve fondech uzlů operačního systému Linux. Grafické procesory nejsou podporované ve fondech uzlů operačního systému Windows.

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čů s GPU

AKS v Azure Local podporuje následující velikosti virtuálních počítačů pro každý model GPU.

Nvidia T4 je podporováno jednotkami SKU NK T4.

Velikost virtuálního počítače Grafické procesory Paměť GPU: GiB vCPU (virtuální CPU) Paměť: GiB (gigabajty)
Standard_NK6 1 8 6 12
Standard_NK12 2 16 12 dvacet čtyři

Podporu pro Nvidia A2 zajišťují skladové položky NC2 A2.

Velikost virtuálního počítače Grafické procesory Paměť GPU: GiB vCPU (virtuální CPU) Paměť: GiB (gigabajty)
Standard_NC4_A2 1 16 4 8
Standard_NC8_A2 1 16 8 16
Standard_NC16_A2 2 32 16 64
Standard_NC32_A2 2 32 32 128

Nvidia A16 je podporována jednotkami NC2 A16.

Velikost virtuálního počítače Grafické procesory Paměť GPU: GiB vCPU (virtuální CPU) Paměť: GiB (gigabajty)
Standard_NC4_A16 1 16 4 8
Standard_NC8_A16 1 16 8 16
Standard_NC16_A16 2 32 16 64
Standard_NC32_A16 2 32 32 128

Než začnete

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

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

Místní operační systém Azure nainstalujte 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: Odmontování ovladače hostitele z hostitele

Když odinstalujete ovladač hostitele, fyzický GPU přejde do chybového stavu. Musíte odmontovat 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

Pokud chcete ověřit, že jsou gpu správně odpojené od hostitele, spusťte následující příkaz. Měla by se zobrazit GPU ve 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.

Ovladač pro zmírnění rizik můžete nainstalovat také spuštěním následujících příkazů z příkazového řádku:

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 místním nasazení Azure.

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 spusťte následující příkaz rozhraní příkazového řádku a zobrazte dostupné skladové položky virtuálních počítačů ve vašem nasazení. Pokud ovladače GPU nainstalujete správně, zobrazí příkaz seznam odpovídajících skladových položek 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ě můžete používat pouze fondy uzlů s podporou GPU 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 s dvěma uzly s aktivovanou podporou pro GPU (NVIDIA A2) se SKU VM 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 plánovat GPU.

Po vytvoření fondu uzlů GPU ověřte, zda můžete v Kubernetes naplánovat GPU. 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 můžete naplánovat gpu. V části Kapacita se GPU zobrazí jako nvidia.com/gpu: 1.

kubectl describe <node> | findstr "gpu" 

Výstup zobrazí gpu z pracovního uzlu a vypadá podobně jako v následujícím příkladu:

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 běh a že je přiřazena 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 že verze ovladače CUDA není dostatečná pro verzi runtime CUDA, projděte si tabulku 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 vzorem postupného upgradu, který se používá pro běžné fondy uzlů. Aby upgrade proběhl úspěšně, musí Kubernetes vytvořit nové virtuální počítače na fyzickém hostitelském počítači, které mají k dispozici jednu nebo více fyzických GPU pro přiřazení zařízení. 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, měli byste mít jednu další GPU na jednom fyzickém hostiteli, nebo dvě další GPU, pokud používáte Standard_NK12. Pokud běžíte v plné kapacitě a nemáte další GPU, škálujte fond uzlů na jeden uzel před upgradem; po úspěšném upgradu škálujte fond uzlů zpět nahoru.

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

Pokud v clusteru aktivujete upgrade bez dalších prostředků GPU pro usnadnění postupného upgradu, proces upgradu se zasekne, dokud nebude GPU k dispozici. Pokud běžíte v plné kapacitě a nemáte další GPU, snižte počet uzlů fondu na jeden uzel před upgradem a po úspěšném upgradu ho znovu navyšte.

Další kroky