Használjon GPU-kat a számításigényes feladatokhoz az AKS-ben, az Azure Localban.

A következőkre vonatkozik: AKS az Azure Local-on

Megjegyzés

A Windows Serveren futó AKS gpu-kkal kapcsolatos információkért lásd: GPU-k használata a Windows Serveren futó AKS-ben.

A grafikus feldolgozási egységek (GPU-k) olyan nagy számítási feladatokhoz hasznosak, mint a gépi tanulás, a mély tanulás stb. Ez a cikk azt ismerteti, hogyan használhatók GPU-k a nagy számítási igényű számítási feladatokhoz az Azure Arc által engedélyezett AKS-ben.

Támogatott GPU-modellek

Az Azure Helyi Azure Kubernetes Service (AKS) a következő GPU-modelleket támogatja. A GPU-k csak Linux operációsrendszer-csomópontkészleteken támogatottak. A GPU-k windowsos operációsrendszer-csomópontkészleteken nem támogatottak.

Gyártó GPU-modell Támogatott verzió
NVIDIA A2 2311.2
NVIDIA A16 2402.0
NVIDIA T4 2408.0
NVIDIA L4 2512.0
NVIDIA L40 2512.0
NVIDIA L40S 2512.0
NVIDIA RTX Pro 6000 2603.0

Támogatott GPU virtuálisgép-méretek

Az Azure Local AKS az alábbi virtuálisgép-méreteket támogatja minden GPU-modellhez.

Az NVIDIA T4-et az NK T4 termékváltozatok támogatják

Virtuális gép mérete GPU-k GPU-memória: GiB vCPU Memória: GiB
Standard_NK6 1 8 6 12
Standard_NK12 2 16 12 24

Az NVIDIA A2-t az NC2 A2 termékváltozatok támogatják

Virtuális gép mérete GPU-k GPU-memória: GiB vCPU Memória: GiB
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

Az NVIDIA A16-ot az NC2 A16 termékváltozatok támogatják

Virtuális gép mérete GPU-k GPU-memória: GiB vCPU Memória: GiB
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

Az NVIDIA L4-et az NC2 L4 termékváltozatok támogatják (előzetes verzió)

Virtuális gép mérete GPU-k GPU-memória: GiB vCPU Memória: GiB
Standard_NC16_L4_1 1 24 16 64
Standard_NC16_L4_2 2 48 16 64
Standard_NC32_L4_1 1 24 32 128
Standard_NC32_L4_2 2 48 32 128

Az NVIDIA L40-et az NC2 L40 termékváltozatok támogatják (előzetes verzió)

Virtuális gép mérete GPU-k GPU-memória: GiB vCPU Memória: GiB
Standard_NC16_L40_1 1 48 16 64
Standard_NC16_L40_2 2 96 16 64
Standard_NC32_L40_1 1 48 32 128
Standard_NC32_L40_2 2 96 32 128

Az NVIDIA L40S-t az NC2 L40S termékváltozatok támogatják (előzetes verzió)

Virtuális gép mérete GPU-k GPU-memória: GiB vCPU Memória: GiB
Standard_NC16_L40S_1 1 48 16 64
Standard_NC16_L40S_2 2 96 16 64
Standard_NC32_L40S_1 1 48 32 128
Standard_NC32_L40S_2 2 96 32 128

Az NVIDIA RTX Pro 6000-et az NC2 RTX Pro 6000 termékváltozatok támogatják (előzetes verzió)

Virtuális gép mérete GPU-k GPU-memória: GiB vCPU Memória: GiB
Standard_NC16_RTX6000Pro_1 1 48 16 64
Standard_NC16_RTX6000Pro_2 2 96 16 64
Standard_NC32_RTX6000Pro_1 1 48 32 128
Standard_NC32_RTX6000Pro_2 2 96 32 128

Mielőtt elkezdené

Ha GPU-kat szeretne használni az AKS Arcban, a fürt üzembe helyezése előtt telepítse a szükséges GPU-illesztőprogramokat. Kövesse az ebben a szakaszban leírt lépéseket.

1. lépés: az operációs rendszer telepítése

Telepítse az Azure Local operációs rendszert helyileg az Azure Local fürtjének minden egyes szerverére.

2. lépés: Az NVIDIA-gazdagép illesztőprogramjának eltávolítása

Minden hosztgépen lépjen a Vezérlőpult > Alkalmazások hozzáadása vagy eltávolítása oldalára, távolítsa el az NVIDIA hosztillesztőprogramot, majd indítsa újra a gépet. A gép újraindítása után győződjön meg arról, hogy az illesztőprogram sikeresen el lett távolítva. Nyisson meg egy emelt szintű PowerShell-terminált, és futtassa a következő parancsot:

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

A GPU-eszközök hibaállapotban jelennek meg az alábbi példakimenetben látható módon:

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 

3. lépés: A gazdagép illesztőprogramjának csatlakozásának megszüntetése a gazdagépről

A gazdaillesztő eltávolításakor a fizikai GPU hibaállapotba kerül. El kell távolítania az összes GPU-eszközt a hosztról.

Minden GPU-eszközhöz (3D videovezérlő) futtassa a következő parancsokat a PowerShellben. Másolja ki a példányazonosítót; például PCI\VEN_10DE&DEV_1EB8&SUBSYS_12A210DE&REV_A1\4&32EEF88F&0&0000 az előző parancskimenetből:

$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

Annak ellenőrzéséhez, hogy a GPU-k megfelelően vannak-e lecsatlakoztatva a gazdagépről, futtassa a következő parancsot. A GPU-knak a Unknown következő állapotban kell megjelennie:

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 

4. lépés: Az NVIDIA-kockázatcsökkentő illesztőprogram letöltése és telepítése

A szoftver tartalmazhat olyan összetevőket, amelyeket az NVIDIA Corporation vagy annak licencadói fejlesztettek ki és birtokoltak. Ezeknek az összetevőknek a használatát az NVIDIA végfelhasználói licencszerződése szabályozza.

Tekintse meg az NVIDIA adatközpontjának dokumentációját az NVIDIA-csökkentő illesztőprogram letöltéséhez. A meghajtó letöltése után bontsa ki az archívumot, és telepítse a védelmi meghajtót minden gazdagépre. Ezt a PowerShell-szkriptet követve letöltheti és kinyerheti a hibaelhárítási illesztőprogramot:

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\

A kockázatcsökkentő illesztőprogram telepítéséhez lépjen a kinyert fájlokat tartalmazó mappába, és válassza ki a GPU-illesztőfájlt az Azure Helyi gazdagépeken telepített tényleges GPU-típus alapján. Ha például a típus A2 GPU, kattintson a jobb gombbal a nvidia_azure_stack_A2_base.inf fájlra, és válassza a Telepítés lehetőséget.

A kockázatcsökkentő illesztőprogramot a következő parancsok parancssorból való futtatásával is telepítheti:

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

A mérséklési illesztőprogram telepítése után a GPU-k az OK állapotban jelennek meg az Nvidia A2_base – Leválasztva alatt:

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

5. lépés: ismételje meg az 1–4. lépést

Ismételje meg az 1–4. lépést az Azure Local-fürt minden kiszolgálójához.

6. lépés: Folytassa az Azure Local fürt telepítését

Folytassa az Azure Local fürt telepítését az Azure Local telepítés lépéseinek követésével.

Az elérhető GPU-kompatibilis virtuálisgép-termékváltozatok listájának lekérése

Amikor az Azure Local fürt üzembe helyezése befejeződött, futtassa a következő CLI parancsot az üzembe helyezés során elérhető VM SKU-k megjelenítéséhez. Ha megfelelően telepíti a GPU-illesztőprogramokat, a parancs felsorolja a megfelelő GPU virtuálisgép-termékváltozatokat:

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

Új számítási feladatfürt létrehozása GPU-kompatibilis csomópontkészlettel

Jelenleg csak GPU-kompatibilis csomópontkészleteket használhat Linux-csomópontkészletekhez. Új Kubernetes-klaszter létrehozásához:

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

Az alábbi példa egy két GPU-kompatibilis (NVIDIA A2) csomópontkészletet ad hozzá egy Standard_NC4_A2 virtuálisgép-termékváltozattal:

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

Győződjön meg arról, hogy a GPU-kat ütemezheti

A GPU-csomópontkészlet létrehozása után ellenőrizze, hogy ütemezhet-e GPU-kat a Kubernetesben. Először listázhatja a fürt csomópontjait a kubectl get nodes paranccsal:

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

Most használja a kubectl leíró csomópont parancsot annak ellenőrzéséhez, hogy ütemezheti-e a GPU-kat. A Kapacitás szakaszban a GPU nvidia.com/gpu: 1 jelenik meg.

kubectl describe <node> | findstr "gpu" 

A kimenet megjeleníti a gpu-kat a feldolgozó csomópontról, és az alábbi példához hasonlóan néz ki:

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

GPU-kompatibilis számítási feladat futtatása

Az előző lépések elvégzése után hozzon létre egy új YAML-fájlt a teszteléshez, például gpupod.yaml. Másolja és illessze be a következő YAML-et a gpupod.yaml nevű új fájlba, majd mentse:

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

Futtassa a következő parancsot a mintaalkalmazás üzembe helyezéséhez:

kubectl apply -f gpupod.yaml

Ellenőrizze, hogy a pod elindult-e, fut-e, és hogy a GPU hozzá van rendelve:

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

Az előző parancsnak egy hozzárendelt GPU-t kell megjelenítenie:

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

Ellenőrizze a pod naplófájlját, hogy a teszt sikeres volt-e:

kubectl logs cuda-vector-add

Az alábbi példakimenet az előző parancsból származik:

[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

Ha verzióeltérési hibát kap az illesztőprogramok behívásakor, például "A CUDA-illesztőprogram verziója nem elegendő a CUDA futtatókörnyezet verziójához", tekintse át az NVIDIA illesztőprogram-mátrix kompatibilitási diagramját.

GYIK

Mi történik a GPU-kompatibilis csomópontkészlet frissítése során?

A GPU-kompatibilis csomópontkészletek frissítése ugyanazt a működés közbeni frissítési mintát követi, amelyet a normál csomópontkészletekhez használnak. Ahhoz, hogy a frissítés sikeres legyen, a Kubernetesnek új virtuális gépeket kell létrehoznia a fizikai gazdaszámítógépen, amelyek egy vagy több fizikai GPU-val rendelkeznek az eszköz hozzárendeléséhez. Ez a rendelkezésre állás biztosítja, hogy az alkalmazások továbbra is futni tudjanak, amikor a Kubernetes podokat ütemez ezen a frissített csomóponton.

Frissítés előtt:

  1. Tervezze meg a leállási időt a frissítés során.
  2. Fizikai gazdagépenként legyen egy extra GPU, ha a Standard_NK6-t futtat, vagy két extra GPU, ha a Standard_NK12-t futtat. Ha teljes kapacitással fut, és nincs extra GPU-ja, a frissítés előtt skálázza le a csomópontkészletet egyetlen csomópontra, majd a frissítés sikeres végrehajtása után skálázza fel a skálázást.

Mi történik, ha nem rendelkezem extra fizikai GPU-kkal a fizikai gépemen a frissítés során?

Ha a gördülő frissítés megkönnyítése érdekében további GPU-erőforrások nélkül indítja el a frissítést egy fürtön, a frissítési folyamat addig lefagy, amíg el nem érhető egy GPU. Ha teljes kapacitással fut, és nincs extra GPU-ja, a frissítés előtt skálázza le a csomópontkészletet egyetlen csomópontra, majd a frissítés sikeres végrehajtása után skálázza fel a skálázást.

Következő lépések