Een GPU-knooppuntgroep met meerdere exemplaren maken in Azure Kubernetes Service (AKS)
DE A100 GPU van NVIDIA kan 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 A100 GPU voor meer informatie over de NVIDIA A100 GPU.
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 --version
uit 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
kubectl
al geïnstalleerd. Als u deze lokaal wilt installeren, kunt u deaz aks install-cli
opdracht gebruiken. - Helm v3 is geïnstalleerd en geconfigureerd. Zie Helm installeren voor meer informatie.
- Gpu-knooppuntgroepen met meerdere exemplaren worden momenteel niet ondersteund in Azure Linux.
- U kunt automatische schaalaanpassing van clusters niet gebruiken met GPU-knooppuntgroepen met meerdere exemplaren.
GPU-exemplaarprofielen
GPU-exemplaarprofielen definiëren hoe GPU's worden gepartitioneerd. In de volgende tabel ziet u het beschikbare GPU-exemplaarprofiel voor het Standard_ND96asr_v4
volgende:
Profielnaam | Fractie van SM | Deel van het geheugen | Aantal gemaakte exemplaren |
---|---|---|---|
MIG 1g.5 gb | 07-01 | 1/8 | 7 |
MIG 2g.10 gb | 07-02 | 2/8 | 3 |
MIG 3g.20 gb | 3/7 | 4/8 | 2 |
MIG 4g.20 gb | 4/7 | 4/8 | 1 |
MIG 7g.40 gb | 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
, MIG3g
en MIG4g
MIG7g
.
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 create
opdracht.az group create --name myResourceGroup --location southcentralus
Maak een AKS-cluster met behulp van de
az aks create
opdracht.az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --generate-ssh-keys
Configureer
kubectl
deze om verbinding te maken met uw AKS-cluster met behulp van deaz aks get-credentials
opdracht.az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Een GPU-knooppuntgroep 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 add
opdracht en geef het GPU-exemplaarprofiel op. In het onderstaande voorbeeld wordt een knooppuntgroep gemaakt met deStandard_ND96asr_v4
MIG-compatibele GPU-VM-grootte.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
Strategie voor GPU (MIG) met meerdere exemplaren 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=mixed
Voeg de HELM-opslagplaats van de NVIDIA-apparaatinvoegtoepassing toe met behulp van de
helm repo add
enhelm repo update
opdrachten.helm repo add nvdp https://nvidia.github.io/k8s-device-plugin helm repo update
Installeer de NVIDIA-apparaatinvoegtoepassing met behulp van de
helm install
opdracht.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
Notitie
Helm-installatie van de NVIDIA-apparaatinvoegtoepassing versie 0.15.0 en hoger consolideert de apparaatinvoegtoepassing en GFD-opslagplaatsen. Afzonderlijke helm-installatie van het GFD-softwareonderdeel wordt niet aanbevolen in deze zelfstudie.
Gpu-mogelijkheid met meerdere exemplaren bevestigen
Controleer de
kubectl
verbinding met uw cluster met behulp van dekubectl get
opdracht om een lijst met clusterknooppunten te retourneren.kubectl get nodes -o wide
Controleer of het knooppunt gpu-mogelijkheden met meerdere exemplaren heeft met behulp van de
kubectl describe node
opdracht. In de volgende voorbeeldopdracht wordt het knooppunt met de naam aks-mignode beschreven. Hierbij wordt MIG1g gebruikt als het GPU-exemplaarprofiel.kubectl describe node aks-mignode
De uitvoer moet er ongeveer uitzien als in 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.yaml
en 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": 1
Implementeer de toepassing met behulp van de
kubectl apply
opdracht en geef de naam van uw YAML-manifest op.kubectl apply -f single-strategy-example.yaml
Controleer de toegewezen GPU-apparaten met behulp van de
kubectl exec
opdracht. Met deze opdracht wordt een lijst met de clusterknooppunten geretourneerd.kubectl exec nvidia-single -- nvidia-smi -L
Het volgende voorbeeld lijkt op uitvoer met implementaties en services die zijn gemaakt:
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.yaml
en 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": 1
Implementeer de toepassing met behulp van de
kubectl apply
opdracht en geef de naam van uw YAML-manifest op.kubectl apply -f mixed-strategy-example.yaml
Controleer de toegewezen GPU-apparaten met behulp van de
kubectl exec
opdracht. Met deze opdracht wordt een lijst met de clusterknooppunten geretourneerd.kubectl exec nvidia-mixed -- nvidia-smi -L
Het volgende voorbeeld lijkt op uitvoer met implementaties en services die zijn gemaakt:
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-installatiekopieën is afgeschaft op Docker Hub. Raadpleeg de opslagplaats van NVIDIA voor de meest recente installatiekopieën en bijbehorende tags.
Probleemoplossing
Als u na het maken van de knooppuntgroep geen GPU-mogelijkheid met meerdere exemplaren 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:
Azure Kubernetes Service