Megosztás a következőn keresztül:


GPU-k használata nagy számítási feladatokhoz (AKS az Azure Local 23H2-es verziójában)

A következőkre vonatkozik: Azure Local, 23H2-es verzió

Feljegyzés

Az Azure Local 22H2 AKS gpu-jairól további információt a GPU-k használata (Azure Local 22H2) című témakörben talál.

A grafikus feldolgozási egységeket (GPU) olyan nagy számítási feladatokhoz használják, 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 AKS a következő GPU-modelleket támogatja az Azure Local 23H2-es verziójában:

Gyártó GPU-modell Támogatott verzió
NVidia A2 2311.2
NVidia A16 2402.0
NVidia T4 2408.0

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

Az egyes GPU-modellekhez az alábbi virtuálisgép-méreteket támogatja az AKS az Azure Local 23H2-es verziójában.

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 0 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 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

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 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

Mielőtt elkezdené

Ha GPU-kat szeretne használni az AKS Arcban, a fürt üzembe helyezése előtt győződjön meg arról, hogy telepítette 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 23H2-es verzióját helyileg az Azure Local-fürt minden kiszolgálójára.

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

Minden gazdagépen lépjen Vezérlőpult > Programok hozzáadása vagy eltávolítása, távolítsa el az NVIDIA gazdagépillesztőt, 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 leválasztása a gazdagépről

A gazdaillesztő eltávolításakor a fizikai GPU hibaállapotba kerül. Az összes GPU-eszközt le kell választania a gazdagéprő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 lettek-e csatlakoztatva a gazdagépről, futtassa a következő parancsot. A GPU-kat a következő állapotba Unknown kell helyeznie:

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. Az illesztőprogram letöltése után bontsa ki az archívumot, és telepítse a hibaelhárító illesztőprogramot az egyes gazdagépeken. 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 keresse meg a kibontott fájlokat tartalmazó mappát, é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 parancssor használatával is telepítheti a mappát, és a következő parancsokat futtatva telepítheti a kockázatcsökkentő illesztőprogramot:

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

A kockázatcsökkentő illesztőprogram telepítése után a GPU-k ok állapotban jelennek meg az Nvidia A2_base – Leválasztva:

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: Az Azure Local fürt üzembe helyezésének folytatása

Folytassa az Azure Local fürt üzembe helyezését az Azure Local 23H2-es verziójának lépéseit követve.

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

Az Azure Local fürt üzembe helyezése után a következő PARANCSSOR-parancs futtatásával megjelenítheti az üzemelő példányon elérhető virtuálisgép-termékváltozatokat. Ha a GPU-illesztőprogramok megfelelően vannak telepítve, a megfelelő GPU virtuálisgép-termékváltozatok a következők:

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 a GPU-kompatibilis csomópontkészletek használata csak Linux-csomópontkészletekhez érhető el. Új Kubernetes-fürt létrehozása:

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 2 GPU-kompatibilis (NVDIA 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ásával győződjön meg arról, hogy a GPU-kat ütemezheti 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 a GPU-k ütemezhetők-e. A Kapacitás szakaszban a GPU-nak a következő nvidia.com/gpu kell megjelennie: 1.

kubectl describe <node> | findstr "gpu" 

A kimenetnek meg kell jelenítenie a GPU(ka)t a feldolgozó csomópontról, és a következőképpen kell kinéznie:

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 egy új virtuális gépen a GPU-kompatibilis csomópontkészletek sikeresen létre legyenek hozva a fizikai gazdagépen, egy vagy több fizikai GPU-nak kell rendelkezésre állnia a sikeres eszköz-hozzárendeléshez. 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 az állásidőt a frissítés során.
  2. Fizikai gazdagépenként egy további GPU-val rendelkezik, ha a Standard_NK6 vagy 2 további GPU-t futtat, ha Standard_NK12 fut. Ha teljes kapacitással fut, és nem rendelkezik további GPU-val, javasoljuk, hogy a frissítés előtt skáláztassa le a csomópontkészletet egyetlen csomópontra, majd a frissítés sikeres végrehajtása után felskálázhatja 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 frissítés olyan fürtön aktiválódik, amely nem rendelkezik további GPU-erőforrásokkal a működés közbeni frissítés megkönnyítése érdekében, a frissítési folyamat addig lefagy, amíg egy GPU nem érhető el. Ha teljes kapacitással fut, és nem rendelkezik további GPU-val, javasoljuk, hogy a frissítés előtt skáláztassa le a csomópontkészletet egyetlen csomópontra, majd a frissítés sikeres végrehajtása után skálázhatja fel a skálázást.

Következő lépések