Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: AKS w usłudze Azure Local
Uwaga
Aby uzyskać informacje o procesorach GPU w usłudze AKS w systemie Windows Server, zobacz Używanie procesorów GPU w usłudze AKS w systemie Windows Server.
Jednostki przetwarzania graficznego (GPU) są przydatne w przypadku obciążeń intensywnie korzystających z obliczeń, takich jak uczenie maszynowe, uczenie głębokie i inne. W tym artykule opisano, jak używać procesorów GPU dla obciążeń wymagających intensywnych obliczeń w usłudze AKS obsługiwanej przez Azure Arc.
Obsługiwane modele procesora GPU
Następujące modele GPU są obsługiwane przez AKS na Azure Local. Należy pamiętać, że procesory GPU są obsługiwane tylko w pulach węzłów systemu operacyjnego Linux. Procesory GPU nie są obsługiwane w pulach węzłów systemu operacyjnego Windows.
| Producent | Model procesora GPU | Obsługiwana wersja |
|---|---|---|
| NVidia | A2 | 2311.2 |
| NVidia | A16 | 2402.0 |
| NVidia | T4 | 2408.0 |
| NVidia | L4 | 2512.0 |
| NVidia | L40 | 2512.0 |
| NVidia | L40S | 2512.0 |
Obsługiwane rozmiary maszyn wirtualnych GPU
Następujące rozmiary maszyn wirtualnych dla każdego modelu GPU są obsługiwane przez AKS na Azure Local.
Nvidia T4 jest obsługiwana przez SKU NK T4
| Rozmiar maszyny wirtualnej | Karty graficzne | Pamięć procesora GPU: GiB | procesor wirtualny | Pamięć: GiB |
|---|---|---|---|---|
| Standard_NK6 | 1 | 8 | 6 | 12 |
| Standard_NK12 | 2 | 16 | 12 | 24 |
Nvidia A2 jest wspierana przez SKU NC2 A2
| Rozmiar maszyny wirtualnej | Karty graficzne | Pamięć procesora GPU: GiB | procesor wirtualny | Pamięć: 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 |
Nvidia A16 jest wspierana przez SKU NC2 A16
| Rozmiar maszyny wirtualnej | Karty graficzne | Pamięć procesora GPU: GiB | procesor wirtualny | Pamięć: 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 |
Nvidia L4 jest obsługiwana przez jednostki SKU NC2 L4 (wersja zapoznawcza)
| Rozmiar maszyny wirtualnej | Karty graficzne | Pamięć procesora GPU: GiB | procesor wirtualny | Pamięć: 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 |
Nvidia L40 jest obsługiwana przez jednostki SKU NC2 L40 (wersja zapoznawcza)
| Rozmiar maszyny wirtualnej | Karty graficzne | Pamięć procesora GPU: GiB | procesor wirtualny | Pamięć: 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 |
Nvidia L40S jest obsługiwana przez jednostki SKU NC2 L40S (wersja zapoznawcza)
| Rozmiar maszyny wirtualnej | Karty graficzne | Pamięć procesora GPU: GiB | procesor wirtualny | Pamięć: 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 |
Zanim rozpoczniesz
Aby użyć procesorów GPU w usłudze AKS Arc, przed rozpoczęciem wdrażania klastra upewnij się, że zainstalowano niezbędne sterowniki procesora GPU. Wykonaj kroki opisane w tej sekcji.
Krok 1. Instalowanie systemu operacyjnego
Zainstaluj lokalny system operacyjny Platformy Azure na każdym serwerze w klastrze lokalnym platformy Azure.
Krok 2. Odinstalowanie sterownika hosta NVIDIA
Na każdej maszynie hosta przejdź do panelu > sterowania Dodaj lub Usuń programy, odinstaluj sterownik hosta FIRMY NVIDIA, a następnie uruchom ponownie maszynę. Po ponownym uruchomieniu maszyny upewnij się, że sterownik został pomyślnie odinstalowany. Otwórz terminal programu PowerShell z podwyższonym poziomem uprawnień i uruchom następujące polecenie:
Get-PnpDevice | select status, class, friendlyname, instanceid | where {$_.friendlyname -eq "3D Video Controller"}
Urządzenia GPU powinny być wyświetlane w stanie błędu, jak pokazano w poniższym przykładowym wyjściu.
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. Odmontowanie sterownika hosta z hosta
Po odinstalowaniu sterownika hosta fizyczny procesor GPU przechodzi w stan błędu. Należy odinstalować wszystkie urządzenia gpu z hosta.
Dla każdego urządzenia z procesorem GPU (kontroler wideo 3D) uruchom następujące polecenia w programie PowerShell. Skopiuj identyfikator wystąpienia, na przykład PCI\VEN_10DE&DEV_1EB8&SUBSYS_12A210DE&REV_A1\4&32EEF88F&0&0000 z wyników poprzedniego polecenia.
$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
Aby potwierdzić, że procesory GPU zostały poprawnie odinstalowane z hosta, uruchom następujące polecenie. Powinny zostać wyświetlone procesory GPU w Unknown stanie:
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. Pobieranie i instalowanie sterownika ograniczania ryzyka firmy NVIDIA
Oprogramowanie może zawierać składniki opracowane i należące do firmy NVIDIA Corporation lub jej licencjodawców. Korzystanie z tych składników podlega umowie licencyjnej użytkownika końcowego firmy NVIDIA.
Zapoznaj się z dokumentacją centrum danych FIRMY NVIDIA, aby pobrać sterownik ograniczania ryzyka firmy NVIDIA. Po pobraniu sterownika rozwiń archiwum i zainstaluj sterownik ograniczania ryzyka na każdej maszynie hosta. Możesz wykonać czynności opisane w tym skrypcie programu PowerShell, aby pobrać sterownik ograniczania ryzyka i wyodrębnić go:
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\
Aby zainstalować sterownik ograniczania ryzyka, przejdź do folderu zawierającego wyodrębnione pliki i wybierz plik sterownika procesora GPU na podstawie rzeczywistego typu procesora GPU zainstalowanego na hostach lokalnych platformy Azure. Jeśli na przykład typem jest procesor GPU A2, kliknij prawym przyciskiem myszy plik nvidia_azure_stack_A2_base.inf , a następnie wybierz polecenie Zainstaluj.
Sterownik ograniczania ryzyka można również zainstalować, uruchamiając następujące polecenia w wierszu polecenia:
pnputil /add-driver nvidia_azure_stack_A2_base.inf /install
pnputil /scan-devices
Po zainstalowaniu sterownika ograniczającego, procesory GPU są wyświetlane w stanie OK w obszarze Nvidia A2_base - Odmontowane:
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. Powtórz kroki od 1 do 4
Powtórz kroki od 1 do 4 dla każdego serwera w klastrze lokalnym platformy Azure.
Krok 6. Kontynuowanie wdrażania klastra lokalnego platformy Azure
Kontynuuj wdrażanie klastra lokalnego platformy Azure, wykonując kroki opisane we wdrożeniu lokalnym platformy Azure.
Lista dostępnych jednostek SKU maszyn wirtualnych z obsługą GPU
Po zakończeniu wdrażania klastra lokalnego platformy Azure uruchom następujące polecenie CLI, aby wyświetlić dostępne SKU maszyn wirtualnych w Twoim wdrożeniu. Jeśli sterowniki procesora GPU zostały poprawnie zainstalowane, polecenie wyświetla odpowiednie jednostki SKU maszyny wirtualnej procesora GPU:
az aksarc vmsize list --custom-location <custom location ID> -g <resource group name>
Utwórz nowy klaster roboczy z pulą węzłów z obsługą GPU
Obecnie możesz używać pul węzłów z obsługą GPU tylko w przypadku pul węzłów systemu Linux. Aby utworzyć nowy klaster Kubernetes:
az aksarc create -n <aks cluster name> -g <resource group name> --custom-location <custom location ID> --vnet-ids <vnet ID>
W poniższym przykładzie dodano pulę węzłów z dwoma węzłami obsługującymi GPU (NVIDIA A2) i SKU maszyny wirtualnej 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
Potwierdź, że możesz skonfigurować harmonogram dla GPU
Po utworzeniu puli węzłów GPU upewnij się, że można zaplanować GPU w Kubernetes. Najpierw wyświetl listę węzłów w klastrze przy użyciu polecenia kubectl get nodes :
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
Teraz użyj polecenia kubectl describe node , aby potwierdzić, że można zaplanować procesory GPU. W sekcji Pojemność procesor GPU jest wyświetlany jako nvidia.com/gpu: 1.
kubectl describe <node> | findstr "gpu"
Dane wyjściowe pokazują procesory graficzne (GPU) z węzła roboczego i wyglądają podobnie do następującego przykładu:
Capacity:
cpu: 4
ephemeral-storage: 103110508Ki
hugepages-1Gi: 0
hugepages-2Mi: 0
memory: 7865020Ki
nvidia.com/gpu: 1
pods: 110
Uruchom obciążenie obsługiwane przez GPU
Po wykonaniu poprzednich kroków utwórz nowy plik YAML na potrzeby testowania, taki jak gpupod.yaml. Skopiuj i wklej następujący kod YAML do nowego pliku o nazwie gpupod.yaml, a następnie zapisz go:
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
Uruchom następujące polecenie, aby wdrożyć przykładową aplikację:
kubectl apply -f gpupod.yaml
Sprawdź, czy pod został uruchomiony, zakończył działanie, a procesor GPU jest przypisany.
kubectl describe pod cuda-vector-add | findstr 'gpu'
Poprzednie polecenie powinno wyświetlić jeden przypisany procesor GPU:
nvidia.com/gpu: 1
nvidia.com/gpu: 1
Sprawdź dziennik podu, aby zobaczyć, czy test zakończył się pomyślnie.
kubectl logs cuda-vector-add
Poniżej przedstawiono przykładowe dane wyjściowe z poprzedniego polecenia:
[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
Jeśli podczas wywoływania sterowników wystąpi błąd niezgodności wersji, taki jak "Wersja sterownika CUDA jest niewystarczająca dla wersji środowiska uruchomieniowego CUDA", zapoznaj się z tabelą zgodności sterowników NVIDIA.
Często zadawane pytania
Co się dzieje podczas uaktualniania puli węzłów obsługujących GPU?
Uaktualnianie pul węzłów z obsługą procesora GPU jest zgodne z tym samym wzorcem uaktualniania stopniowego, który jest używany w zwykłych pulach węzłów. Aby uaktualnienie powiodło się, platforma Kubernetes musi utworzyć nowe maszyny wirtualne na fizycznej maszynie hosta, która ma co najmniej jeden fizyczny procesor GPU dostępny do przypisania urządzenia. Ta dostępność gwarantuje, że aplikacje mogą nadal działać, gdy Kubernetes planuje pody na tym zaktualizowanym węźle.
Przed uaktualnieniem:
- Zaplanuj przestój podczas uaktualniania.
- Jeśli używasz Standard_NK6, musisz mieć jeden dodatkowy procesor GPU na host fizyczny. Jeśli używasz Standard_NK12, potrzebne są dwa dodatkowe procesory GPU na host fizyczny. Jeśli korzystasz z pełnej pojemności i nie masz dodatkowego GPU, zmniejsz pulę węzłów do jednego węzła przed uaktualnieniem, a następnie zwiększ pulę węzłów po pomyślnym uaktualnieniu.
Co się stanie, jeśli nie mam dodatkowych fizycznych procesorów GPU na mojej maszynie fizycznej podczas uaktualniania?
W przypadku uruchomienia uaktualnienia w klastrze bez dodatkowych zasobów GPU do przeprowadzenia stopniowego uaktualnienia, proces uaktualniania zawiesza się do czasu, aż zostaną udostępnione zasoby GPU. Jeśli uruchamiasz pełną wydajność i nie masz dodatkowej jednostki GPU, zmniejsz skalę puli węzłów do jednego węzła przed uaktualnieniem, a następnie zwiększ skalę po pomyślnym uaktualnieniu.