Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Bepaalde NVIDIA GPU's kunnen worden onderverdeeld in maximaal zeven onafhankelijke instanties. Elk exemplaar heeft een eigen Stream Multiprocessor (SM), die verantwoordelijk is voor het parallel uitvoeren van instructies en GPU-geheugen. Zie NVIDIA MIG voor meer informatie over GPU-partitionering.
In dit artikel wordt uitgelegd hoe u een GPU-knooppuntgroep met meerdere exemplaren maakt met behulp van een vm-grootte die compatibel is met MIG in een AKS-cluster (Azure Kubernetes Service).
Vereisten en beperkingen
- Een Azure-account met een actief abonnement. Als u nog geen account hebt, kunt u gratis een account maken.
- Azure CLI versie 2.2.0 of hoger geïnstalleerd en geconfigureerd. Voer
az --versionuit om de versie te bekijken. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren. - De Kubernetes-opdrachtregelclient, kubectl, geïnstalleerd en geconfigureerd. Als u Azure Cloud Shell gebruikt, is
kubectlal geïnstalleerd. Als u deze lokaal wilt installeren, kunt u deaz aks install-cliopdracht gebruiken. - Helm v3 is geïnstalleerd en geconfigureerd. Zie Helm installeren voor meer informatie.
- Multi-instance GPU's worden momenteel ondersteund op de
Standard_NC40ads_H100_v5,Standard_ND96isr_H100_v5en A100 GPU-VM-grootten van AKS.
GPU-instantieprofielen
GPU-exemplaarprofielen definiëren hoe GPU's worden gepartitioneerd. In de volgende tabel ziet u het beschikbare GPU-instantieprofiel voor Standard_ND96asr_v4:
| Profielnaam | Fractie van SM | Deel van het geheugen | Aantal gemaakte exemplaren |
|---|---|---|---|
| MIG 1g.5 gb | 1/7 | 1/8 | 7 |
| MIG 2g.10Gb | 02-07 | 2/8 | 3 |
| MIG 3g.20GB | 3 juli | 4/8 | 2 |
| MIG 4g.20 GB | 4/7 | 4/8 | 1 |
| MIG 7g.40GB | 07-07 | 8/8 | 1 |
Het GPU-exemplaarprofiel MIG 1g.5gb geeft bijvoorbeeld aan dat elk GPU-exemplaar 1g SM (streaming multiprocessors) en 5 gb geheugen heeft. In dit geval wordt de GPU gepartitioneerd in zeven exemplaren.
De beschikbare GPU-exemplaarprofielen die beschikbaar zijn voor deze VM-grootte zijn onder andere MIG1g, MIG2g, MIG3gen MIG4gMIG7g.
Belangrijk
U kunt het toegepaste GPU-exemplaarprofiel niet wijzigen nadat de knooppuntgroep is gemaakt.
Een AKS-cluster maken
Maak een Azure-resourcegroep met behulp van de
az group createopdracht.az group create --name myResourceGroup --location southcentralusMaak een AKS-cluster met behulp van de
az aks createopdracht.az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --generate-ssh-keysConfigureer
kubectlom verbinding te maken met je AKS-cluster met behulp van deaz aks get-credentialsopdracht.az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Een GPU-knooppuntpool met meerdere exemplaren maken
U kunt de Azure CLI of een HTTP-aanvraag voor de ARM-API gebruiken om de knooppuntgroep te maken.
Maak een GPU-knooppuntgroep met meerdere exemplaren met behulp van de
az aks nodepool addopdracht en geef het GPU-exemplaarprofiel op. In het onderstaande voorbeeld wordt een knooppuntgroep gemaakt met deStandard_ND96asr_v4MIG-compatibele GPU-VM-grootte.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
Strategie voor GPU (MIG) met meerdere instanties bepalen
Voordat u de NVIDIA-invoegtoepassingen installeert, moet u opgeven welke GPU-strategie (MIG) met meerdere exemplaren moet worden gebruikt voor GPU-partitionering: één strategie of gemengde strategie. De twee strategieën hebben geen invloed op hoe u CPU-workloads uitvoert, maar hoe GPU-resources worden weergegeven.
-
Eén strategie: De ene strategie behandelt elk GPU-exemplaar als een GPU. Als u deze strategie gebruikt, worden de GPU-resources weergegeven als
nvidia.com/gpu: 1. -
Gemengde strategie: De gemengde strategie toont de GPU-exemplaren en het GPU-exemplaarprofiel. Als u deze strategie gebruikt, wordt de GPU-resource weergegeven als
nvidia.com/mig1g.5gb: 1.
De onderdelen van de NVIDIA-apparaatinvoegtoepassing en GPU-functiedetectie (GFD) installeren
Stel uw MIG-strategie in als een omgevingsvariabele. U kunt een enkele of gemengde strategie gebruiken.
# Single strategy export MIG_STRATEGY=single # Mixed strategy export MIG_STRATEGY=mixedVoeg de NVIDIA device plugin helm repository toe met de
helm repo addenhelm repo updateopdrachten.helm repo add nvdp https://nvidia.github.io/k8s-device-plugin helm repo updateInstalleer de NVIDIA-apparaatinvoegtoepassing met behulp van de
helm installopdracht.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
Notitie
Helm-installatie van de NVIDIA-apparaatinvoegtoepassing consolideert de Kubernetes-apparaatinvoegtoepassing en GFD-opslagplaatsen. Afzonderlijke helm-installatie van de GFD-softwarecomponent wordt niet aanbevolen bij het gebruik van multi-instance GPU's beheerd door AKS.
Bevestig multi-instantie GPU-mogelijkheid
Controleer de
kubectlverbinding met uw cluster met behulp van dekubectl getopdracht om een lijst met clusterknooppunten te retourneren.kubectl get nodes -o wideControleer of het knooppunt multi-instance GPU-capaciteiten heeft met behulp van het
kubectl describe nodecommando. In de volgende voorbeeldopdracht wordt het knooppunt met de naam aksMigNode beschreven, dat gebruikmaakt van MIG1g als het GPU-exemplaarprofiel.kubectl describe node aksMigNodeDe uitvoer zou ongeveer moeten lijken op de volgende voorbeelduitvoer:
# Single strategy output Allocatable: nvidia.com/gpu: 56 # Mixed strategy output Allocatable: nvidia.com/mig-1g.5gb: 56
Werk plannen
De volgende voorbeelden zijn gebaseerd op CUDA-basisinstallatiekopie versie 12.1.1 voor Ubuntu 22.04, gelabeld als 12.1.1-base-ubuntu22.04.
Eén strategie
Maak een bestand met de naam
single-strategy-example.yamlen kopieer dit in het volgende 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": 1Implementeer de toepassing met behulp van de
kubectl applyopdracht en geef de naam van uw YAML-manifest op.kubectl apply -f single-strategy-example.yamlControleer de toegewezen GPU-apparaten met behulp van de
kubectl execopdracht. Met deze opdracht wordt een lijst met de clusterknooppunten geretourneerd.kubectl exec nvidia-single -- nvidia-smi -LHet volgende voorbeeld lijkt op uitvoer die succesvol gemaakte implementaties en services toont.
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)
Gemengde strategie
Maak een bestand met de naam
mixed-strategy-example.yamlen kopieer dit in het volgende 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": 1Implementeer de toepassing met behulp van de
kubectl applyopdracht en geef de naam van uw YAML-manifest op.kubectl apply -f mixed-strategy-example.yamlControleer de toegewezen GPU-apparaten met behulp van de
kubectl execopdracht. Met deze opdracht wordt een lijst met de clusterknooppunten geretourneerd.kubectl exec nvidia-mixed -- nvidia-smi -LHet volgende voorbeeld lijkt op uitvoer die succesvol gemaakte implementaties en services toont.
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)
Belangrijk
De latest tag voor CUDA-afbeeldingen is verouderd verklaard op Docker Hub. Raadpleeg de opslagplaats van NVIDIA voor de meest recente images en bijbehorende tags.
Probleemoplossing
Als u na het maken van de node pool geen multi-instance GPU-functionaliteit ziet, controleert u of de API-versie niet ouder is dan 2021-08-01.
Volgende stappen
Zie voor meer informatie over GPU's in Azure Kubernetes Service: