Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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:
- Naplánujte výpadek během upgradu.
- 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.