GPU-k használata nagy számítási igényű számítási feladatokhoz (AKS az Azure Stack HCI 23H2-ben)

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

Megjegyzés

Az Azure Stack HCI 22H2 AKS-ben található GPU-kkal kapcsolatos információkért lásd: GPU-k használata (HCI 22H2).

A grafikus feldolgozási egységeket (GPU) nagy számítási igényű számítási feladatokhoz, például gépi tanuláshoz, mély tanuláshoz és sok máshoz használják. Ez a cikk azt ismerteti, hogyan használhat GPU-kat 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 Stack HCI 23H2-ben az AKS a következő GPU-modelleket támogatja:

Gyártó GPU-modell Támogatott verzió
Nvidia A2 2311.2
Nvidia A16 2402.0

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

Az Azure Stack HCI 23H2-n futó AKS az alábbi virtuálisgép-méreteket támogatja az egyes GPU-modellekhez.

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 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 1 16 4 8
Standard_NC8_A16 1 16 8 16
Standard_NC16_A16 2 48 16 64
Standard_NC32_A16 2 48 32 28

Előkészületek

Ha GPU-kat szeretne használni az AKS Arcban, a fürt üzembe helyezésének megkezdé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 ismertetett lépéseket.

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

Telepítse az Azure Stack HCI 23H2-es verzióját helyileg az Azure Stack HCI-fürt minden kiszolgálójára.

2. lépés: Az NVIDIA kockázatcsökkentési 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ára az NVIDIA végfelhasználói licencszerződése vonatkozik.

Az NVIDIA-kockázatcsökkentési illesztőprogram letöltéséhez tekintse meg az NVIDIA adatközpont dokumentációját . Az illesztőprogram letöltése után bontsa ki az archívumot, és telepítse a kockázatcsökkentési illesztőprogramot minden gazdagépen.

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ési illesztőprogram telepítéséhez lépjen a kibontott fájlokat tartalmazó mappába, és válassza ki a GPU-illesztőfájlt az Azure Stack HCI-gazdagépekre 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 parancsot.

A parancssorból is telepíthet, ha a mappára lép, és a következő parancsokat futtatja a kockázatcsökkentési illesztőprogram telepítéséhez:

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

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

Get-PnpDevice  | select status, class, friendlyname, instanceid | findstr /i /c:"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

3. lépés: ismételje meg az 1. és a 2. lépést

Ismételje meg az 1. és a 2. lépést a HCI-fürt minden kiszolgálójához.

4. lépés: Az Azure Stack HCI-fürt üzembe helyezésének folytatása

Folytassa az Azure Stack HCI-fürt üzembe helyezését az Azure Stack HCI 23H2-es verziójának üzembe helyezésével.

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

Miután az Azure Stack HCI-fürt üzembe helyezése befejeződött, a következő parancssori felületi 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ásifeladat-fü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

Ellenőrizze, hogy be tudja-e ütemezni a GPU-kat

A GPU-csomópontkészlet létrehozása után győződjön meg arról, hogy a GPU-kat ütemezheti a Kubernetesben. Először listázhatja a fürtön lévő csomópontokat 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 describe node parancsot annak ellenőrzéséhez, hogy a GPU-k ütemezhetők-e. A Kapacitás szakaszban a GPU-nak a következőként kell megjelennie: nvidia.com/gpu: 1.

kubectl describe <node> | findstr "gpu" 

A kimenetnek meg kell jelenítenie a gpu(ka)t a feldolgozó csomópontról, és az alábbihoz hasonlóan 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 teszteléshez; például gpupod.yaml. Másolja és illessze be a következő YAML-fájlt 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, befejeződött-e a futtatás, és hogy a GPU hozzá van-e 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ában, 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 meghívásakor, például "A CUDA-illesztő verziója nem elegendő a CUDA-futtatókörnyezet verziójához", tekintse át az NVIDIA-illesztő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, mint a normál csomópontkészletekhez. 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 rendelkezésre kell á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őtti teendők:

  1. Tervezze meg az állásidőt a frissítés során.
  2. Fizikai gazdagépenként egy további GPU-val kell rendelkeznie, 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ázzon le egy csomópontkészletet egyetlen csomópontra, majd a frissítés sikerességét követően skálázzon fel.

Mi történik, ha nem rendelkezem további 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 lefagy, amíg el nem érhető egy GPU. Ha teljes kapacitással fut, és nem rendelkezik további GPU-val, javasoljuk, hogy a frissítés előtt skálázzon le egy csomópontkészletet egyetlen csomópontra, majd a frissítés sikerességét követően skálázzon fel.

Következő lépések