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:
- Tervezze meg az állásidőt a frissítés során.
- 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.