Een volledig beheerde GPU-knooppuntgroep maken in Azure Kubernetes Service (AKS) (preview)

Voor het uitvoeren van NVIDIA GPU-workloads op Azure Kubernetes Service (AKS) moet u traditioneel het NVIDIA GPU-stuurprogramma, de Kubernetes-apparaatinvoegtoepassing en een GPU-exporteur voor metrische gegevens installeren en onderhouden op elk GPU-knooppunt. Deze onderdelen maken GPU-planning, GPU-toegang op containerniveau en telemetrie mogelijk, maar als u ze handmatig installeert of via de NVIDIA GPU-operator , wordt operationele overhead toegevoegd.

Met volledig beheerde GPU-knooppunten (preview) installeert en onderhoudt AKS het NVIDIA GPU-stuurprogramma, de apparaatinvoegtoepassing en de Data Center GPU Manager (DCGM) metrische gegevensexporteur voor u. Het maken van gpu-knooppuntgroepen wordt één stap en GPU-capaciteit gedraagt zich net als elke andere AKS-knooppuntgroep.

U configureert een beheerde GPU-knooppuntgroep via twee velden onder gpuProfile.nvidia:

  • managementMode (Managed of Unmanaged) bepaalt of AKS de volledige beheerde GPU-stack (stuurprogramma, apparaatinvoegtoepassing en dcGM-metrische gegevensexporteur) of alleen het stuurprogramma installeert. De standaardwaarde is Unmanaged.
  • migStrategy (None, Singleof Mixed) stelt de MIG-strategie (Multi-Instance GPU) in voor ondersteunde GPU-SKU's, zoals A100 en H100. De standaardwaarde is None.

In dit artikel richt u een beheerde GPU-knooppuntgroep in, schakelt u eventueel MIG in, controleert u de stack en voert u een gpu-voorbeeldworkload uit.

Belangrijk

AKS preview-functies zijn beschikbaar op selfservice, opt-in basis. Previews worden geleverd 'zoals het is' en 'voor zover beschikbaar' en zijn uitgesloten van de serviceovereenkomsten en beperkte garantie. AKS-previews worden gedeeltelijk gedekt door klantondersteuning naar best vermogen. Zodoende zijn deze functies niet bedoeld voor productiegebruik. Zie de volgende ondersteuningsartikelen voor meer informatie:

Voordat u begint

Beheerde GPU-onderdelen

Een beheerde GPU-knooppuntgroep kan de volgende onderdelen op elk knooppunt bevatten:

Onderdeel Wat het doet Wat AKS beheert
NVIDIA GPU-stuurprogramma Kernelmodules en bibliotheken met gebruikersruimte waarmee het besturingssysteem en de containers kunnen communiceren met de GPU-hardware. Selectie van stuurprogrammaversie, installatie tijdens de voorziening van knooppunten, en herinstallatie na updates van knooppuntenimages.
Invoegtoepassing voor NVIDIA Kubernetes-apparaten DaemonSet-equivalent waarmee GPU-resources (nvidia.com/gpu, nvidia.com/mig-*) worden geadverteerd aan de kubelet, zodat pods deze kunnen aanvragen. Implementatie, configuratie (inclusief MIG-strategie) en levenscyclus op elk GPU-knooppunt.
NVIDIA DCGM-metriekenexporteur Data Center GPU Manager verzamelt GPU-status- en gebruiksgegevens en toont prometheus-metrische gegevens (bijvoorbeeld DCGM_FI_DEV_GPU_UTIL, DCGM_FI_DEV_GPU_TEMP) op poort 19400. Installatie, service activering en het knooplabel kubernetes.azure.com/dcgm-exporter=enabled dat wordt gebruikt voor het verzamelen van metrische gegevens.
GPU-statussignalen NPD signalen die GPU-specifieke voorwaarden voor knooppunten zoals UnhealthyNvidiaDevicePlugin en UnhealthyNvidiaDCGMServices weergeven. NPD-bewaking en -voorwaarderapportage op GPU-knooppunten.

Profielen installeren

Twee gpuProfile velden bepalen welke van deze onderdelen AKS installeert.

  • gpuProfile.driver (Install of None): of AKS het NVIDIA GPU-stuurprogramma installeert.
  • gpuProfile.nvidia.managementMode (Managed of Unmanaged): of AKS ook de Kubernetes-gerichte GPU-stack op het stuurprogramma installeert.

Samen produceren ze drie installatieprofielen:

Profiel installeren CLI-vlaggen Wat AKS installeert en beheert
Volledige beheerde stack --enable-managed-gpu=true (of geen van beide vlaggen) Alle vier de bovenstaande onderdelen: stuurprogramma, apparaatinvoegtoepassing, DCGM metrische gegevensexporteur en GPU-statusbewaking in NPD.
Alleen stuurprogramma (standaard) --enable-managed-gpu=false Alleen NVIDIA GPU-stuurprogramma. U installeert en beheert de invoegtoepassing voor apparaten, de exporteur van metrische gegevens en de statuscontrole zelf (bijvoorbeeld met de NVIDIA GPU-operator).
Geen (BYO) --enable-managed-gpu=false --gpu-driver None Niets. AKS installeert geen van de vier onderdelen. U bent eigenaar van de volledige stack. Zie Bring your own GPU driver.

Standaardwaarden en overschrijvingen

  • Standaardinstellingen: Als u --enable-managed-gpu of --gpu-driver niet doorgeeft, past AKS het alleen-stuurprogrammaprofiel toe op de knooppuntenpool die met een NVIDIA GPU ingeschakelde VM-grootte is gemaakt.
  • Overschrijven: managementMode: Managed vereist het stuurprogramma, dus --gpu-driver None wordt genegeerd wanneer --enable-managed-gpu=true en het stuurprogramma nog steeds is geïnstalleerd. Als u de driver wilt overslaan, stelt u zowel --enable-managed-gpu=false als --gpu-driver None in.
  • Onveranderbaarheid: managementMode, migStrategy, en driver zijn allemaal vastgelegd tijdens het maken. Als u het profiel wilt wijzigen, maakt u een nieuwe knooppuntgroep.

aks-preview De CLI-extensie installeren

  1. Installeer de aks-preview CLI-extensie met behulp van de az extension add opdracht. Versie 19.0.0b29 of hoger is vereist.

    az extension add --name aks-preview
    
  2. Werk de extensie bij om ervoor te zorgen dat u de nieuwste versie hebt geïnstalleerd met behulp van de az extension update opdracht.

    az extension update --name aks-preview
    

ManagedGPUExperiencePreview De functievlag registreren

Registreer de ManagedGPUExperiencePreview functievlag in uw abonnement met behulp van de az feature register opdracht.

az feature register --namespace Microsoft.ContainerService --name ManagedGPUExperiencePreview

Beperkingen

  • Deze functie biedt momenteel alleen ondersteuning voor VM-grootten (VIRTUELE MACHINES) met NVIDIA GPU .
  • Het bijwerken van een knooppuntgroep voor algemeen gebruik om een GPU-VM-grootte toe te voegen, wordt niet ondersteund in AKS.
  • Windows knooppuntgroepen worden niet ondersteund met deze functie, omdat GPU-metrische gegevens niet worden ondersteund. Wanneer u Windows GPU-knooppuntgroepen maakt, installeert en beheert AKS automatisch de stuurprogramma's en de DirectX-apparaatinvoegtoepassing. Zie de documentatie AKS Windows GPU voor meer informatie.
  • Het migreren van uw bestaande GPU-knooppuntgroepen met meerdere exemplaren om deze functie te gebruiken, wordt niet ondersteund.
  • In-place upgrades van een bestaande NVIDIA GPU-knooppuntgroep naar een beheerde GPU-knooppuntgroep worden niet ondersteund. Als u uw bestaande GPU-knooppunten wilt migreren, cordoneren en leegmaken, implementeert u uw workloads vervolgens opnieuw in een nieuwe GPU-knooppuntgroep die is gemaakt met --enable-managed-gpu=true. Zie Het formaat van knooppuntgroepen wijzigen in AKS voor meer informatie.
  • De velden managementMode, migStrategy, en driver onder gpuProfile zijn onveranderbaar nadat de nodepool is aangemaakt. Als u deze waarden wilt wijzigen, maakt u een nieuwe knooppuntgroep.
  • Automatische schaalaanpassing van clusters wordt niet ondersteund in beheerde GPU-knooppuntgroepen tijdens de preview-versie. Schaal deze pools handmatig.

Opmerking

GPU-ingeschakelde virtuele machines bevatten gespecialiseerde hardware die onderhevig is aan hogere prijsstelling en beschikbaarheid per regio. Raadpleeg voor meer informatie het prijsgereedschap en de beschikbaarheid per regio.

Een door AKS beheerde GPU-knooppuntgroep maken (preview)

Voeg een beheerde GPU-knooppuntgroep toe aan een bestaand AKS-cluster door deze door te geven --enable-managed-gpu=true aan az aks nodepool add. AKS stelt gpuProfile.nvidia.managementMode in op Managed en installeert automatisch het GPU-stuurprogramma, de apparaatinvoegtoepassing en de DCGM-metrieken-exporteur.

Als u de standaard Ubuntu-besturingssysteem-SKU (OS) wilt gebruiken, maakt u de knooppuntgroep zonder een SKU van het besturingssysteem op te geven. De nodepool is geconfigureerd voor het standaardbesturingssysteem op basis van de Kubernetes-versie van de cluster.

  1. Voeg een knooppuntgroep toe aan uw cluster met behulp van de az aks nodepool add opdracht met de --enable-managed-gpu=true vlag.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name gpunp \
        --node-count 1 \
        --node-vm-size Standard_NC6s_v3 \
        --node-taints sku=gpu:NoSchedule \
        --enable-managed-gpu=true
    
  2. Controleer of de beheerde NVIDIA GPU-softwareonderdelen zijn geïnstalleerd:

    az aks nodepool show \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name gpunp
    

    De uitvoer moet de volgende waarden bevatten:

    ...
    "gpuProfile": {
        "driver": "Install",
        "driverType": "",
        "nvidia": {
            "managementMode": "Managed",
            "migStrategy": null
        }
    },
    ...
    

Een beheerde MIG-knooppuntgroep (Multi-Instance GPU) maken (preview)

Voor GPU-SKU's die ondersteuning bieden voor GPU's met meerdere exemplaren (zoals A100 en H100), configureert u een MIG-strategie bij het maken van een knooppuntgroep met de --gpu-mig-strategy vlag. De strategie bepaalt hoe MIG-partities worden blootgesteld aan Kubernetes:

  • Single: Alle MIG-exemplaren worden samengevoegd onder de standaardresource nvidia.com/gpu .
  • Mixed: Elk MIG-profiel wordt weergegeven als een afzonderlijke resource, zoals nvidia.com/mig-1g.10gb.
  • None (standaard): MIG is niet geconfigureerd.

Het migStrategy veld is onveranderbaar nadat de knooppuntgroep is gemaakt.

Zie Voor achtergrondinformatie over MIG-partitionering, ondersteunde VM-grootten en GPU-exemplaarprofielen een GPU-knooppuntgroep met meerdere exemplaren maken in AKS en NVIDIA Multi-Instance GPU.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mignp \
    --node-count 1 \
    --node-vm-size Standard_NC24ads_A100_v4 \
    --node-taints sku=gpu:NoSchedule \
    --enable-managed-gpu=true \
    --gpu-instance-profile MIG1g \
    --gpu-mig-strategy Single

Met deze configuratie vragen pods GPU-resources aan met behulp van de standaardresourcenaam nvidia.com/gpu .

De beheerde GPU-knooppuntgroep controleren (preview)

Nadat de knooppuntgroep gereed is, voert u de volgende controles uit om te controleren of de volledige beheerde stack is geïnstalleerd en in orde is.

  1. Controleer de GPU-specifieke knooppuntvoorwaarden van Node Problem Detector (NPD):

    GPU_NODE=$(kubectl get nodes -l agentpool=gpunp -o jsonpath='{.items[0].metadata.name}')
    kubectl describe node $GPU_NODE
    

    Op een beheerd GPU-knooppunt moeten de volgende voorwaarden beide rapporteren False:

    Condition Status Reden
    UnhealthyNvidiaDevicePlugin False HealthyNvidiaDevicePlugin
    UnhealthyNvidiaDCGMServices False HealthyNvidiaDCGMServices
  2. Controleer of het beheerde GPU-label aanwezig is op het knooppunt:

    kubectl get node $GPU_NODE -o jsonpath='{.metadata.labels.kubernetes\.azure\.com/dcgm-exporter}'
    

    Verwachte uitvoer: enabled.

  3. Controleer of GPU-resources worden geadverteerd in de resources die beschikbaar zijn voor het knooppunt:

    kubectl get node $GPU_NODE -o jsonpath='{.status.allocatable}'
    

    Voor een niet-MIG-nodepool bevat "nvidia.com/gpu": "1" de uitvoer (of meer, afhankelijk van de SKU). Voor een MIG-node pool bevat de uitvoer MIG-specifieke Mixed resources, zoals "nvidia.com/mig-1g.10gb": "7".

  4. Voer een voorbeeldworkload uit om GPU-toegang vanuit een container te bevestigen:

    apiVersion: v1
    kind: Pod
    metadata:
      name: managed-gpu-test
    spec:
      restartPolicy: Never
      tolerations:
        - key: "sku"
          operator: "Equal"
          value: "gpu"
          effect: "NoSchedule"
      containers:
      - name: gpu-test
        image: mcr.microsoft.com/azuredocs/samples-tf-mnist-demo:gpu
        command: ["nvidia-smi"]
        resources:
          limits:
            nvidia.com/gpu: 1
    

    Bekijk de podlogboeken om uitvoer weer te geven nvidia-smi met het GPU-apparaat, de stuurprogrammaversie en de CUDA-versie:

    kubectl logs managed-gpu-test
    

Een beheerde GPU-knooppuntgroep schalen (preview)

Een beheerde GPU-knooppuntgroep handmatig schalen met az aks nodepool scale. Nieuwe knooppunten installeren de volledige beheerde GPU-stack.

az aks nodepool scale \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name gpunp \
    --node-count 2

Belangrijk

Tijdens de preview ondersteunen beheerde GPU-knooppuntgroepen de automatische schaalaanpassing van clusters niet. Schaal deze pools handmatig.

Alternatieve installatieprofielen

Als het volledig beheerde stackprofiel niet de juiste optie is, ondersteunt AKS twee alternatieve profielen in GPU-knooppuntgroepen.

Gebruik dit profiel als u wilt dat AKS het NVIDIA GPU-stuurprogramma installeert en onderhoudt, maar u van plan bent zelf de invoegtoepassing voor het apparaat en de exporteur van metrische gegevens te implementeren (bijvoorbeeld met de NVIDIA GPU-operator). Instellen --enable-managed-gpu=false:

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name gpunp \
    --node-count 1 \
    --node-vm-size Standard_NC6s_v3 \
    --node-taints sku=gpu:NoSchedule \
    --enable-managed-gpu=false

Met deze configuratie:

  • AKS installeert en beheert het NVIDIA GPU-stuurprogramma (gpuProfile.driver is Install).
  • AKS installeert geen apparaatplug-in, DCGM-metriekexporteur of gezondheidsregels voor GPU's. gpuProfile.nvidia is null.
  • Er wordt geen nvidia.com/gpu resource geadverteerd totdat u een apparaatinvoegtoepassing implementeert.

Volgende stappen