Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Niektóre procesory GPU FIRMY NVIDIA można podzielić na maksymalnie siedem niezależnych wystąpień. Każde wystąpienie ma własny multiprocesor strumienia (SM), który jest odpowiedzialny za równoległe wykonywanie instrukcji oraz pamięć GPU. Aby uzyskać więcej informacji na temat partycjonowania procesora GPU, zobacz NVIDIA MIG.
W tym artykule poprowadzimy Cię przez proces tworzenia puli węzłów GPU wielowątkowej przy użyciu rozmiaru maszyny wirtualnej zgodnej z MIG w klastrze Azure Kubernetes Service (AKS).
Wymagania wstępne i ograniczenia
- Konto Azure z aktywną subskrypcją. Jeśli go nie masz, możesz bezpłatnie utworzyć konto.
- Azure CLI w wersji 2.2.0 lub nowszej zainstalowanej i skonfigurowanej. Uruchom polecenie
az --version, aby dowiedzieć się, jaka wersja jest używana. Jeśli musisz zainstalować lub uaktualnić, zobacz Install Azure CLI. - Klient wiersza polecenia kubernetes, kubectl, zainstalowany i skonfigurowany. Jeśli używasz Azure Cloud Shell,
kubectljest już zainstalowany. Jeśli chcesz zainstalować ją lokalnie, możesz użyćaz aks install-clipolecenia . - Program Helm w wersji 3 został zainstalowany i skonfigurowany. Aby uzyskać więcej informacji, zobacz Instalowanie programu Helm.
- Procesor wieloinstancyjny GPU jest obecnie obsługiwany na maszynach wirtualnych GPU
Standard_NC40ads_H100_v5,Standard_ND96isr_H100_v5i A100 w usłudze AKS.
Profile wystąpień procesora GPU
Profile instancji GPU definiują sposób partycjonowania GPU. W poniższej tabeli przedstawiono dostępny profil instancji GPU dla elementu Standard_ND96asr_v4.
| Nazwa profilu | Ułamek SM | Ułamek pamięci | Liczba utworzonych wystąpień |
|---|---|---|---|
| MIG 1g.5gb | 1/7 | 1/8 | 7 |
| MIG 2g.10gb | 2/7 | 2/8 | 3 |
| MIG 3G.20GB | 3/7 | 4/8 | 2 |
| MIG 4g, 20GB | 4.07 | 4/8 | 1 |
| MIG 7g.40gb | 7/7 | 8/8 | 1 |
Na przykład profil MIG 1g.5gb wystąpienia GPU wskazuje, że każde wystąpienie GPU ma 1g SM (multiprocesorów przesyłania strumieniowego) i 5 GB pamięci. W tym przypadku GPU jest podzielony na siedem wystąpień.
Dostępne profile wystąpień procesora GPU dostępne dla tego rozmiaru maszyny wirtualnej obejmują MIG1g, , MIG2gMIG3g, MIG4gi MIG7g.
Ważne
Po utworzeniu puli węzłów nie można zmienić zastosowanego profilu instancji GPU.
Tworzenie klastra AKS
Utwórz grupę zasobów Azure przy użyciu polecenia
az group create.az group create --name myResourceGroup --location southcentralusUtwórz klaster AKS za pomocą polecenia
az aks create.az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --generate-ssh-keysSkonfiguruj
kubectl, aby połączyć się z klastrem AKS przy użyciu poleceniaaz aks get-credentials.az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Tworzenie wielowystąpieniowej puli węzłów GPU
Aby utworzyć pulę węzłów, możesz użyć Azure CLI lub żądania HTTP do interfejsu API usługi ARM.
Utwórz pulę węzłów GPU z wieloma wystąpieniami przy użyciu polecenia
az aks nodepool addi określ profil wystąpienia GPU. W poniższym przykładzie utworzono pulę węzłów z rozmiarem maszyny wirtualnej GPU zgodnym z MIG.az aks nodepool add \ --name aksMigNode \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --node-vm-size Standard_ND96asr_v4 \ --node-count 1 \ --gpu-instance-profile MIG1g
Określanie strategii wieloaduszowego procesora GPU (MIG)
Przed zainstalowaniem wtyczek NVIDIA należy określić strategię użycia multi-instance GPU (MIG) do partycjonowania GPU: pojedyncza strategia lub strategia mieszana. Te dwie strategie nie mają wpływu na sposób wykonywania obciążeń procesora CPU, ale sposób wyświetlania zasobów procesora GPU.
-
Pojedyncza strategia: Pojedyncza strategia traktuje każde wystąpienie GPU jako procesor graficzny. Jeśli używasz tej strategii, zasoby procesora GPU są wyświetlane jako
nvidia.com/gpu: 1. - Strategia mieszana: ujawnia instancje GPU oraz profil instancji GPU. Jeśli używasz tej strategii, zasób procesora GPU będzie wyświetlany jako
nvidia.com/mig1g.5gb: 1.
Instalowanie wtyczki urządzenia NVIDIA i komponentów funkcji wykrywania GPU (GFD)
Ustaw strategię MIG jako zmienną środowiskową. Można użyć strategii pojedynczej lub mieszanej.
# Single strategy export MIG_STRATEGY=single # Mixed strategy export MIG_STRATEGY=mixedDodaj repozytorium helm wtyczki urządzenia NVIDIA przy użyciu poleceń
helm repo addihelm repo update.helm repo add nvdp https://nvidia.github.io/k8s-device-plugin helm repo updateZainstaluj wtyczkę urządzenia NVIDIA przy użyciu
helm installpolecenia .helm install nvdp nvdp/nvidia-device-plugin \ --version=0.17.0 \ --set migStrategy=${MIG_STRATEGY} \ --set gfd.enabled=true \ --namespace nvidia-device-plugin \ --create-namespace
Uwaga
Instalacja wtyczki urządzenia NVIDIA za pomocą Helma konsoliduje wtyczkę urządzenia Kubernetes i repozytoria GFD. W przypadku korzystania z procesora GPU z wieloma wystąpieniami usługi AKS nie zaleca się oddzielnej instalacji składnika oprogramowania GFD.
Uwaga
W przypadku wdrożenia wtyczki urządzenia NVIDIA w systemie Azure Linux za pomocą niestandardowego manifestu daemonSet zamiast programu Helm należy dołączyć zmienną środowiskową NVIDIA_MIG_MONITOR_DEVICES=all w kontenerze wtyczki urządzenia.
Potwierdzenie możliwości wieloinstancyjnego GPU
Sprawdź połączenie z klastrem przy użyciu polecenia
kubectl get, aby zwrócić listę węzłów klastra.kubectl get nodes -o wideUpewnij się, że węzeł ma możliwość obsługi wielu instancji GPU przy użyciu polecenia
kubectl describe node. Poniższe przykładowe polecenie opisuje węzeł o nazwie aksMigNode, który używa MIG1g jako profilu instancji GPU.kubectl describe node aksMigNodeDane wyjściowe powinny przypominać następujące przykładowe dane wyjściowe:
# Single strategy output Allocatable: nvidia.com/gpu: 56 # Mixed strategy output Allocatable: nvidia.com/mig-1g.5gb: 56
Planowanie pracy
Poniższe przykłady są oparte na obrazie podstawowym CUDA w wersji 12.1.1 dla systemu Ubuntu 22.04 oznaczone jako 12.1.1-base-ubuntu22.04.
Pojedyncza strategia
Utwórz plik o nazwie
single-strategy-example.yamli skopiuj go w następującym manifeście.apiVersion: v1 kind: Pod metadata: name: nvidia-single spec: containers: - name: nvidia-single image: nvidia/cuda:12.1.1-base-ubuntu22.04 command: ["/bin/sh"] args: ["-c","sleep 1000"] resources: limits: "nvidia.com/gpu": 1Wdróż aplikację przy użyciu
kubectl applypolecenia i określ nazwę manifestu YAML.kubectl apply -f single-strategy-example.yamlSprawdź przydzielone urządzenia GPU przy użyciu polecenia
kubectl exec. To polecenie zwraca listę węzłów klastra.kubectl exec nvidia-single -- nvidia-smi -LPoniższy przykład to przykład wyniku z pomyślnie utworzonymi usługami oraz wdrożeniami.
GPU 0: NVIDIA A100 40GB PCIe (UUID: GPU-48aeb943-9458-4282-da24-e5f49e0db44b) MIG 1g.5gb Device 0: (UUID: MIG-fb42055e-9e53-5764-9278-438605a3014c) MIG 1g.5gb Device 1: (UUID: MIG-3d4db13e-c42d-5555-98f4-8b50389791bc) MIG 1g.5gb Device 2: (UUID: MIG-de819d17-9382-56a2-b9ca-aec36c88014f) MIG 1g.5gb Device 3: (UUID: MIG-50ab4b32-92db-5567-bf6d-fac646fe29f2) MIG 1g.5gb Device 4: (UUID: MIG-7b6b1b6e-5101-58a4-b5f5-21563789e62e) MIG 1g.5gb Device 5: (UUID: MIG-14549027-dd49-5cc0-bca4-55e67011bd85) MIG 1g.5gb Device 6: (UUID: MIG-37e055e8-8890-567f-a646-ebf9fde3ce7a)
Strategia mieszana
Utwórz plik o nazwie
mixed-strategy-example.yamli skopiuj go w następującym manifeście.apiVersion: v1 kind: Pod metadata: name: nvidia-mixed spec: containers: - name: nvidia-mixed image: nvidia/cuda:12.1.1-base-ubuntu22.04 command: ["/bin/sh"] args: ["-c","sleep 100"] resources: limits: "nvidia.com/mig-1g.5gb": 1Wdróż aplikację przy użyciu
kubectl applypolecenia i określ nazwę manifestu YAML.kubectl apply -f mixed-strategy-example.yamlSprawdź przydzielone urządzenia z procesorem
kubectl execGPU przy użyciu polecenia . To polecenie zwraca listę węzłów klastra.kubectl exec nvidia-mixed -- nvidia-smi -LPoniższy przykład przypomina dane wyjściowe z wyświetlonymi pomyślnie utworzonymi wdrożeniami i usługami:
GPU 0: NVIDIA A100 40GB PCIe (UUID: GPU-48aeb943-9458-4282-da24-e5f49e0db44b) MIG 1g.5gb Device 0: (UUID: MIG-fb42055e-9e53-5764-9278-438605a3014c)
Ważne
Tag latest dla obrazów CUDA został wycofany w Docker Hub. Proszę zapoznać się z repozytorium firmy NVIDIA, aby znaleźć najnowsze obrazy i odpowiednie tagi.
Rozwiązywanie problemów
Jeśli po utworzeniu puli węzłów nie widzisz możliwości GPU o wielu instancjach, upewnij się, że wersja interfejsu API nie jest starsza niż 2021-08-01.
Następne kroki
Aby dowiedzieć się więcej na temat procesorów GPU w Azure Kubernetes Service, zobacz: