Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Vissa NVIDIA GPU:er kan delas upp till sju oberoende instanser. Varje instans har en egen Stream Multiprocessor (SM), som ansvarar för att köra instruktioner parallellt och GPU-minne. Mer information om GPU-partitionering finns i NVIDIA MIG.
Den här artikeln beskriver hur du skapar en GPU-nodpool med flera instanser med hjälp av en MIG-kompatibel VM-storlek i ett AKS-kluster (Azure Kubernetes Service).
Krav och begränsningar
- Ett Azure-konto med en aktiv prenumeration. Om du inte har ett konto kan du skapa ett konto kostnadsfritt.
- Azure CLI version 2.2.0 eller senare installerad och konfigurerad. Kör
az --version
för att hitta versionen. Om du behöver installera eller uppgradera, se Installera Azure CLI. - Kubernetes kommandoradsklient, kubectl, installerad och konfigurerad. Om du använder Azure Cloud Shell är
kubectl
redan installerat. Om du vill installera det lokalt kan du användaaz aks install-cli
kommandot . - Helm v3 installerat och konfigurerat. Mer information finns i Installera Helm.
- GPU-nodpooler med flera instanser stöds för närvarande inte i Azure Linux.
- GPU för flera instanser stöds för närvarande på
Standard_NC40ads_H100_v5
och A100 GPU VM-storlekarna på AKS.
GPU-instansprofiler
GPU-instansprofiler definierar hur GPU:er partitioneras. Följande tabell visar den tillgängliga GPU-instansprofilen för Standard_ND96asr_v4
:
Profilnamn | Del av SM | Del av minnet | Antal instanser som skapats |
---|---|---|---|
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, 20 gb | 4/7 | 4/8 | 1 |
MIG 7g.40gb | 7 juli | 8/8 | 1 |
Till exempel anger GPU-instansprofilen MIG 1g.5gb
för att varje GPU-instans har 1 g SM (strömmande multiprocessorer) och 5 GB minne. I det här fallet partitioneras GPU:n i sju instanser.
Tillgängliga GPU-instansprofiler som är tillgängliga för den här VM-storleken är MIG1g
, MIG2g
, MIG3g
, MIG4g
och MIG7g
.
Viktigt!
Du kan inte ändra den tillämpade GPU-instansprofilen när nodpoolen har skapats.
Skapa ett AKS-kluster
Skapa en Azure-resursgrupp med kommandot
az group create
.az group create --name myResourceGroup --location southcentralus
Skapa ett AKS-kluster med hjälp av kommandot
az aks create
.az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --generate-ssh-keys
Konfigurera
kubectl
för att ansluta till ditt AKS-kluster med hjälp avaz aks get-credentials
kommandot .az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Skapa en GPU-nodpool med flera instanser
Du kan använda antingen Azure CLI eller en HTTP-begäran till ARM-API:et för att skapa nodpoolen.
Skapa en GPU-nodpool med flera instanser med kommandot
az aks nodepool add
och ange GPU-instansprofilen. Exemplet nedan skapar en nodpool med denStandard_ND96asr_v4
MIG-kompatibla GPU VM-storleken.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
Fastställa strategi för GPU för flera instanser (MIG)
Innan du installerar NVIDIA-plugin-programmet måste du ange vilken GPU-strategi med flera instanser (MIG) som ska användas för GPU-partitionering: Enkel strategi eller blandad strategi. De två strategierna påverkar inte hur du kör CPU-arbetsbelastningar, utan hur GPU-resurser visas.
-
Enskild strategi: Den enskilda strategin behandlar varje GPU-instans som en GPU. Om du använder den här strategin visas GPU-resurserna som
nvidia.com/gpu: 1
. -
Blandad strategi: Den blandade strategin exponerar GPU-instanserna och GPU-instansprofilen. Om du använder den här strategin visas GPU-resursen som
nvidia.com/mig1g.5gb: 1
.
Installera nvidia-enhetens plugin- och GPU-funktionsidentifieringskomponenter (GFD)
Ställ in din MIG-strategi som en miljövariabel. Du kan använda antingen enkel eller blandad strategi.
# Single strategy export MIG_STRATEGY=single # Mixed strategy export MIG_STRATEGY=mixed
Lägg till helm-lagringsplatsen för enhetstillägget till NVIDIA med hjälp av kommandona
helm repo add
ochhelm repo update
.helm repo add nvdp https://nvidia.github.io/k8s-device-plugin helm repo update
Installera plugin-programmet för NVIDIA-enheten med hjälp av
helm install
kommandot .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
Anmärkning
Helm-installationen av NVIDIA-enhetsinsticksprogrammet konsoliderar Kubernetes-enhets-plugin-programmet och GFD-lagringsplatserna. Separat helm-installation av GFD-programvarukomponenten rekommenderas inte när du använder AKS-hanterad GPU för flera instanser.
Bekräfta GPU-kapacitet för flera instanser
kubectl
Verifiera anslutningen till klustret med kommandotkubectl get
för att returnera en lista över klusternoder.kubectl get nodes -o wide
Bekräfta att noden har GPU-funktioner för flera instanser med hjälp av
kubectl describe node
kommandot . Följande exempelkommando beskriver noden med namnet aksMigNode, som använder MIG1g som GPU-instansprofil.kubectl describe node aksMigNode
Dina utdata bör likna följande exempelutdata:
# Single strategy output Allocatable: nvidia.com/gpu: 56 # Mixed strategy output Allocatable: nvidia.com/mig-1g.5gb: 56
Schemalägg arbete
Följande exempel baseras på CUDA-basavbildning version 12.1.1 för Ubuntu 22.04, taggad som 12.1.1-base-ubuntu22.04
.
Enskild strategi
Skapa en fil med namnet
single-strategy-example.yaml
och kopiera i följande manifest.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
Distribuera programmet med kommandot
kubectl apply
och ange namnet på ditt YAML-manifest.kubectl apply -f single-strategy-example.yaml
Kontrollera de allokerade GPU-enheterna med kommandot
kubectl exec
. Det här kommandot returnerar en lista över klusternoderna.kubectl exec nvidia-single -- nvidia-smi -L
Följande exempel liknar utdata som visar distributioner och tjänster som har skapats:
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)
Blandad strategi
Skapa en fil med namnet
mixed-strategy-example.yaml
och kopiera i följande manifest.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
Distribuera programmet med kommandot
kubectl apply
och ange namnet på ditt YAML-manifest.kubectl apply -f mixed-strategy-example.yaml
Kontrollera de allokerade GPU-enheterna med kommandot
kubectl exec
. Det här kommandot returnerar en lista över klusternoderna.kubectl exec nvidia-mixed -- nvidia-smi -L
Följande exempel liknar utdata som visar distributioner och tjänster som har skapats:
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)
Viktigt!
Taggen latest
för CUDA-avbildningar har föråldrats på Docker Hub. Se NVIDIA:s lagringsplats för de senaste bilderna och motsvarande taggar.
Felsökning
Om du inte ser GPU-funktionen för flera instanser när du har skapat nodpoolen bekräftar du att API-versionen inte är äldre än 2021-08-01.
Nästa steg
Mer information om GPU:er i Azure Kubernetes Service finns i:
Azure Kubernetes Service