Tworzenie puli węzłów procesora GPU z wieloma wystąpieniami w usłudze Azure Kubernetes Service (AKS)
Procesor GPU A100 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 procesora NVIDIA A100, zobacz NVIDIA A100 GPU.
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
kubectl
jest już zainstalowane. Jeśli chcesz zainstalować ją lokalnie, możesz użyćaz aks install-cli
polecenia . - 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.
- Nie można używać narzędzia Cluster Autoscaler z pulami węzłów procesora GPU z wieloma wystąpieniami.
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
, , MIG2g
MIG3g
, MIG4g
i 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 create
polecenia .az group create --name myResourceGroup --location southcentralus
Utwórz klaster usługi AKS przy użyciu
az aks create
polecenia .az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --generate-ssh-keys
Skonfiguruj
kubectl
, aby nawiązać połączenie z klastremaz aks get-credentials
usł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 add
polecenia 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_v4
z migracją.az aks nodepool add \ --name aks-mignode \ --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=mixed
Dodaj repozytorium helm wtyczki urządzenia NVIDIA przy użyciu
helm repo add
poleceń ihelm repo update
.helm repo add nvdp https://nvidia.github.io/k8s-device-plugin helm repo update
Zainstaluj wtyczkę urządzenia NVIDIA przy użyciu
helm install
polecenia .helm install nvdp nvdp/nvidia-device-plugin \ --version=0.15.0 \ --generate-name \ --set migStrategy=${MIG_STRATEGY} \ --set gfd.enabled=true \ --namespace nvidia-device-plugin \ --create-namespace
Uwaga
Instalacja programu Helm wtyczki urządzenia NVIDIA w wersji 0.15.0 lub nowszej konsoliduje wtyczkę urządzenia i repozytoria GFD. W tym samouczku nie zaleca się oddzielnej instalacji narzędzia Helm składnika oprogramowania GFD.
Potwierdzanie możliwości procesora GPU z wieloma wystąpieniami
kubectl
Sprawdź połączenie z klastrem przy użyciu polecenia ,kubectl get
aby zwrócić listę węzłów klastra.kubectl get nodes -o wide
Upewnij się, że węzeł ma możliwość procesora GPU z wieloma wystąpieniami przy użyciu
kubectl describe node
polecenia . Poniższe przykładowe polecenie opisuje węzeł o nazwie aks-mignode, który używa mig1g jako profilu wystąpienia procesora GPU.kubectl describe node aks-mignode
Dane 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.yaml
i 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": 1
Wdróż aplikację przy użyciu
kubectl apply
polecenia i określ nazwę manifestu YAML.kubectl apply -f single-strategy-example.yaml
Sprawdź przydzielone urządzenia z procesorem
kubectl exec
GPU przy użyciu polecenia . To polecenie zwraca listę węzłów klastra.kubectl exec nvidia-single -- nvidia-smi -L
Poniż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.yaml
i 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": 1
Wdróż aplikację przy użyciu
kubectl apply
polecenia i określ nazwę manifestu YAML.kubectl apply -f mixed-strategy-example.yaml
Sprawdź przydzielone urządzenia z procesorem
kubectl exec
GPU przy użyciu polecenia . To polecenie zwraca listę węzłów klastra.kubectl exec nvidia-mixed -- nvidia-smi -L
Poniż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:
Azure Kubernetes Service