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.
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 i pamięć procesora GPU. Aby uzyskać więcej informacji na temat partycjonowania procesora GPU, zobacz NVIDIA MIG.
W tym artykule opisano sposób tworzenia puli węzłów procesora GPU z wieloma wystąpieniami przy użyciu rozmiaru maszyny wirtualnej zgodnej z migracją w klastrze usługi Azure Kubernetes Service (AKS).
Wymagania wstępne i ograniczenia
- Konto platformy Azure z aktywną subskrypcją. Jeśli go nie masz, możesz bezpłatnie utworzyć konto.
- Interfejs wiersza polecenia platformy Azure w wersji 2.2.0 lub nowszej został zainstalowany i skonfigurowany. Uruchom polecenie
az --version, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure. - Klient wiersza polecenia kubernetes, kubectl, zainstalowany i skonfigurowany. Jeśli korzystasz z usługi Azure Cloud Shell, narzędzie
kubectljest już zainstalowane. 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.
- Pule węzłów procesora GPU z wieloma wystąpieniami nie są obecnie obsługiwane w systemie Azure Linux.
- 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 wystąpień procesora GPU definiują sposób partycjonowania procesorów GPU. W poniższej tabeli przedstawiono dostępny profil wystąpienia procesora GPU dla elementu Standard_ND96asr_v4:
| Nazwa profilu | Ułamek sm | Ułamek pamięci | Liczba utworzonych wystąpień |
|---|---|---|---|
| MIG 1g.5gb | 7.01 | 1/8 | 7 |
| MIG 2g.10gb | 7.02 | 2/8 | 3 |
| MIG 3G.20GB | 3/7 | 4/8 | 2 |
| MIG 4g, 20GB | 7.04 | 4/8 | 1 |
| MIG 7g.40gb | 7.07 | 8/8 | 1 |
Na przykład profil MIG 1g.5gb wystąpienia procesora GPU wskazuje, że każde wystąpienie procesora GPU ma 1g SM (multiprocesorów przesyłania strumieniowego) i 5 gb pamięci. W tym przypadku procesor 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 wystąpienia procesora GPU.
Tworzenie klastra AKS
Utwórz grupę zasobów platformy Azure przy użyciu
az group createpolecenia .az group create --name myResourceGroup --location southcentralusUtwórz klaster usługi AKS przy użyciu
az aks createpolecenia .az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --generate-ssh-keysSkonfiguruj
kubectl, aby nawiązać połączenie z klastremaz aks get-credentialsusługi AKS przy użyciu polecenia .az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Tworzenie puli węzłów procesora GPU z wieloma wystąpieniami
Aby utworzyć pulę węzłów, możesz użyć interfejsu wiersza polecenia platformy Azure lub żądania HTTP do interfejsu API usługi ARM.
Utwórz pulę węzłów procesora GPU z wieloma wystąpieniami przy użyciu
az aks nodepool addpolecenia i określ profil wystąpienia procesora GPU. W poniższym przykładzie utworzono pulę węzłów z rozmiarem maszyny wirtualnej procesora GPU zgodnejStandard_ND96asr_v4z migracją.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 FIRMY NVIDIA należy określić strategię użycia procesora GPU (MIG) z wieloma wystąpieniami na potrzeby partycjonowania procesora 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 procesora GPU jako procesor GPU. Jeśli używasz tej strategii, zasoby procesora GPU są wyświetlane jako
nvidia.com/gpu: 1. -
Strategia mieszana: strategia mieszana uwidacznia wystąpienia procesora GPU i profil wystąpienia procesora GPU. Jeśli używasz tej strategii, zasób procesora GPU będzie wyświetlany jako
nvidia.com/mig1g.5gb: 1.
Instalowanie składników funkcji odnajdywania funkcji (GFD) i wtyczki urządzenia NVIDIA (GFD)
Ustaw strategię migrowania 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
helm repo addpoleceń ihelm 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.
Potwierdzanie możliwości procesora GPU z wieloma wystąpieniami
kubectlSprawdź połączenie z klastrem przy użyciu polecenia ,kubectl getaby zwrócić listę węzłów klastra.kubectl get nodes -o wideUpewnij się, że węzeł ma możliwość procesora GPU z wieloma wystąpieniami przy użyciu
kubectl describe nodepolecenia . 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 z procesorem
kubectl execGPU przy użyciu polecenia . To polecenie zwraca listę węzłów klastra.kubectl exec nvidia-single -- 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) 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 obrazów CUDA został przestarzały w usłudze Docker Hub. Zapoznaj się z repozytorium firmy NVIDIA, aby zapoznać się z najnowszymi obrazami i odpowiednimi tagami.
Rozwiązywanie problemów
Jeśli nie widzisz możliwości procesora GPU z wieloma wystąpieniami po utworzeniu puli węzłów, upewnij się, że wersja interfejsu API nie jest starsza niż 2021-08-01.
Następne kroki
Aby dowiedzieć się więcej o procesorach GPU w usłudze Azure Kubernetes Service, zobacz: