Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
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 --versionfö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
kubectlredan installerat. Om du vill installera det lokalt kan du användaaz aks install-clikommandot . - 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 i storlekarna
Standard_NC40ads_H100_v5,Standard_ND96isr_H100_v5och A100 GPU VM 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 1 g. 5 gb | 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, MIG4goch 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 southcentralusSkapa ett AKS-kluster med hjälp av kommandot
az aks create.az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --generate-ssh-keysKonfigurera
kubectlför att ansluta till ditt AKS-kluster med hjälp avaz aks get-credentialskommandot .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 addoch ange GPU-instansprofilen. Exemplet nedan skapar en nodpool med denStandard_ND96asr_v4MIG-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=mixedLägg till helm-lagringsplatsen för enhetstillägget till NVIDIA med hjälp av kommandona
helm repo addochhelm repo update.helm repo add nvdp https://nvidia.github.io/k8s-device-plugin helm repo updateInstallera plugin-programmet för NVIDIA-enheten med hjälp av
helm installkommandot .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
kubectlVerifiera anslutningen till klustret med kommandotkubectl getför att returnera en lista över klusternoder.kubectl get nodes -o wideBekräfta att noden har GPU-funktioner för flera instanser med hjälp av
kubectl describe nodekommandot . Följande exempelkommando beskriver noden med namnet aksMigNode, som använder MIG1g som GPU-instansprofil.kubectl describe node aksMigNodeDina 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.yamloch 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": 1Distribuera programmet med kommandot
kubectl applyoch ange namnet på ditt YAML-manifest.kubectl apply -f single-strategy-example.yamlKontrollera de allokerade GPU-enheterna med kommandot
kubectl exec. Det här kommandot returnerar en lista över klusternoderna.kubectl exec nvidia-single -- nvidia-smi -LFö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.yamloch 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": 1Distribuera programmet med kommandot
kubectl applyoch ange namnet på ditt YAML-manifest.kubectl apply -f mixed-strategy-example.yamlKontrollera de allokerade GPU-enheterna med kommandot
kubectl exec. Det här kommandot returnerar en lista över klusternoderna.kubectl exec nvidia-mixed -- nvidia-smi -LFö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: