Skapa en GPU-nodpool med flera instanser med single-strategi i Azure Kubernetes Service (AKS)

Vissa NVIDIA GPU:er kan delas in i upp till sju oberoende instanser. Varje instans har en egen SM (Streaming Multiprocessor), som kör instruktioner parallellt, samt eget GPU-minne. Mer information om GPU-partitionering finns i NVIDIA MIG.

Använd single strategy-MIG (multi-instance GPU) i AKS-klustret för att köra arbetsbelastningar på GPU-partitioner med enhetlig storlek. Varje arbetsbelastning begär nvidia.com/gpu, där en enhet representerar en partition i stället för en hel fysisk GPU. AKS installerar och konfigurerar NVIDIA-drivrutinen och enhets-plugin-programmet för den här sökvägen. Information om val av strategi och namngivning av resurser finns i GPU-strategier för flera instanser i AKS. Information om hur du skapar partitioner med olika storlek finns i Konfigurera mixed MIG-strategi.

Den här artikeln beskriver hur du anger en enskild strategi med en MIG-nodpool med hjälp av en kompatibel VM-storlek i ett Azure Kubernetes Service (AKS) kluster.

Viktigt!

AKS-förhandsversionsfunktioner är tillgängliga via självbetjäning och frivillig registrering. Förhandsversioner tillhandahålls "i befintligt skick" och "i mån av tillgång," och de är undantagna från servicenivåavtal och begränsad garanti. AKS-förhandsversioner stöds delvis av kundsupport efter bästa förmåga. Därför är dessa funktioner inte avsedda för produktionsanvändning. Mer information finns i följande supportartiklar:

Limitations

  • Nodpooler med AzureContainerLinux och Windows OS-SKU:er stöds för närvarande inte med den här funktionen.
  • Du kan inte ändra profilkonfigurationen efter att MIG-nodpoolen har skapats. Skapa en ersättningspool för att ändra layouten eller sluta använda MIG. Försök inte inaktivera MIG genom att uppdatera strategin till None.

Innan du börjar

  • Ett Azure-abonnemang. Om du inte har ett, skapar du ett Azure kostnadsfritt konto.
  • Installera Azure CLI version 2.85.0 eller senare och aks-preview version 22.0.0b15 eller senare. Kör az --version för att kontrollera din Azure CLI version.
  • En MIG-kompatibel GPU VM-storlek som stöds i den valda AKS-regionen. Se till att du har tillräckligt med regional och GPU-familj vCPU-kvot för den VM-storlek och det nodantal som du planerar att distribuera.
  • Se till att någon befintlig självhanterad NVIDIA-enhetsplugin eller GPU-operator inte också hanterar den nya MIG-nodpoolens noder.

Välj en enhetlig GPU-profil

Ange exakt en profil för Single så att AKS kan skapa en enhetlig partitionslayout. I följande tabell visas profilerna för NVIDIA A100 80 GB GPU. Antalet är per fysisk GPU, inte per nod. Standard_NC24ads_A100_v4 har en A100 80 GB GPU, så MIG3g ger två partitioner för den VM-storleken.

Profilargument Partition Beräkna andel Minnesandel Partitioner per GPU
MIG1g 1g.10gb 1/7 1/8 7
MIG2g 2g.20gb 2/7 2/8 3
MIG3g 3g.40gb 3/7 4/8 2
MIG4g 4g.40gb 4/7 4/8 1
MIG7g 7g.80gb 7 juli 8/8 1

GPU-minne per profil varierar beroende på NVIDIA GPU-modell. Tillämpa inte den här tabellens minnesstorlekar eller antalet noder på en annan SKU utan att bekräfta GPU-konfigurationen.

Ange miljövariabler och förbered din Azure-prenumeration

export SUBSCRIPTION_ID="<subscription-id>"
export RESOURCE_GROUP="<my-resource-group>"
export CLUSTER_NAME="<my-cluster-name>"
export SINGLE_POOL="migsingle"

Välj Azure-prenumeration:

az account set --subscription "$SUBSCRIPTION_ID"

Anslut till ditt AKS-kluster:

az aks get-credentials \
  --resource-group "$RESOURCE_GROUP" \
  --name "$CLUSTER_NAME"

Registrera förhandsgranskningsfunktionerna

Installera eller uppdatera det tillägg som krävs:

az extension add --name aks-preview --upgrade --yes

Registrera funktionen ManagedGPUExperiencePreview :

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

Registrera funktionen MixedMIGStrategyPreview :

az feature register \
  --namespace Microsoft.ContainerService \
  --name MixedMIGStrategyPreview

Kontrollera varje registrering:

az feature show \
  --namespace Microsoft.ContainerService \
  --name ManagedGPUExperiencePreview \
  --query properties.state --output tsv
az feature show \
  --namespace Microsoft.ContainerService \
  --name MixedMIGStrategyPreview \
  --query properties.state --output tsv

När båda returnerar Registereduppdaterar du providerregistreringen:

az provider register --namespace Microsoft.ContainerService

Aktivera single strategy MIG på en ny nodpool

Om du vill använda os-standard-SKU:n skapar du nodpoolen utan att ange en OS-SKU. Nodpoolen är konfigurerad för standardoperativsystemet baserat på Kubernetes-versionen av klustret. Skapa den enhetliga poolen med --enable-managed-gpu=true och exakt en MIG-profil:

az aks nodepool add \
  --resource-group "$RESOURCE_GROUP" \
  --cluster-name "$CLUSTER_NAME" \
  --name "$SINGLE_POOL" \
  --node-vm-size Standard_NC24ads_A100_v4 \
  --enable-managed-gpu=true \
  --gpu-mig-strategy Single \
  --gpu-mig-profiles MIG3g \
  --node-count 1

Verifiera konfiguration och GPU-partitionskapacitet

Kontrollera de hanterade GPU-inställningarna, profillistan och AKS-nodbilden:

az aks nodepool show \
  --resource-group "$RESOURCE_GROUP" \
  --cluster-name "$CLUSTER_NAME" \
  --name "$SINGLE_POOL" \
  --query "{state:provisioningState,image:nodeImageVersion,gpu:gpuProfile.nvidia}" \
  --output json

Kontrollera följande värden i utdata. GPU-värdena visas under gpu nyckeln.

Utdatafält Förväntat värde
state Succeeded
gpu.managementMode Managed
gpu.driverMode DevicePlugin
gpu.migStrategy Single
gpu.migProfiles Endast den profil som du angav (MIG3g i det här exemplet)
image En VHD-version av nodavbildningen 202609.01.0 eller senare, vilket krävs för --gpu-mig-profiles

Vänta tills poolens noder blir Ready.

kubectl wait --for=condition=Ready node \
  -l agentpool="$SINGLE_POOL" --timeout=600s

Kontrollera alla noder i nodpoolen:

kubectl describe nodes -l agentpool="$SINGLE_POOL"

För en Standard_NC24ads_A100_v4 nod med profilen MIG3g (en A100 80 GB GPU, som ger två partitioner), Allocatable bör avsnittet innehålla:

Allocatable:
  nvidia.com/gpu:  2

Varje enhet har en kapacitet på en 3g.40gb MIG-partition.

Kör en arbetsbelastning på en MIG-partition

Skapa single-strategy-example.yaml med följande manifest. Uppdatera väljaren om du har ändrat namnet på nodpoolen.

apiVersion: v1
kind: Pod
metadata:
  name: nvidia-single
spec:
  restartPolicy: Never
  nodeSelector:
    agentpool: migsingle
  containers:
    - name: gpu-test
      image: mcr.microsoft.com/azuredocs/samples-tf-mnist-demo:gpu
      command: ["nvidia-smi"]
      resources:
        limits:
          nvidia.com/gpu: "1"

Selektorn är viktig eftersom en fullständig GPU-pool också kan annonsera nvidia.com/gpu. Kubernetes behandlar en utelämnad begäran som lika med den utökade resursgränsen. Om du anger båda, använd lika heltalsvärden.

Distribuera pod:

kubectl apply -f single-strategy-example.yaml

Vänta tills slutförandet har slutförts:

kubectl wait --for=jsonpath='{.status.phase}'=Succeeded \
  pod/nvidia-single --timeout=300s

Läs dess enhetsinformation:

kubectl logs nvidia-single

Bekräfta att nvidia-smi körs utan fel och rapporterar en tilldelad MIG-enhet. För en explicit kontroll av enhetslistan ändrar du exempelkommandot till ["nvidia-smi", "-L"], tar bort den slutförda podden och tillämpar manifestet igen. Upprepa slutförandeväntningen och loggkontrollen. Med Standard_NC24ads_A100_v4 och profilen MIG3g bör loggarna visa en tilldelad 3g.40gb MIG-enhet.

Förstå validering och befintlig funktionskompatibilitet

Jämför sätt att konfigurera MIG med en enda strategi

Funktionen --gpu-instance-profile är fortfarande tillgänglig för att konfigurera ditt eget enhetsinsticksprogram för NVIDIA GPU. Följande alternativ separerar GPU-layoutkonfigurationen från ansvaret för enhetsplugin-programmet.

Konfigurationssökväg Azure CLI inställningar när poolen skapas Strategi och ägare för enhetsplugin API-representation
Befintlig profil med en självkonfigurerad plugin --gpu-instance-profile <profile> utan att aktivera den hanterade GPU-upplevelsen. Du installerar och konfigurerar den självhanterade NVIDIA device plugin med migStrategy=single. gpuInstanceProfile anger den enhetliga layouten. Inställningen migStrategy för det självhanterade enhetsplugin-programmet lagras inte som en ny inställning i AKS-profillistan. Du ansvarar fortfarande för livscykeln för det självhanterade insticksprogrammet för enheter.
Befintlig profil med ett plugin för hanterad enhet --enable-managed-gpu=true --gpu-instance-profile <profile>. AKS hanterar pluginet för den enhetliga vägen med en enda strategi och inga separata plugin-ändringar krävs. Fältet --gpu-instance-profile finns kvar. API:et genererar inte migProfiles eller migStrategy när endast --gpu-instance-profile anges.
Profillista med ett hanterat insticksprogram --enable-managed-gpu=true --gpu-mig-strategy Single --gpu-mig-profiles <profile>. Ange exakt en profil. AKS konfigurerar det hanterade NVIDIA-enhetspluginet pluginet för Single. Ingen manuell konfiguration krävs. gpuProfile.nvidia.migStrategy och gpuProfile.nvidia.migProfiles beskriver konfigurationen uttryckligen.

Alla tre sökvägarna för en enda strategi exponerar partitioner som nvidia.com/gpu när de konfigureras på en NVIDIA GPU-nodpool. Enbart resursnamnet identifierar inte partitionsstorleken eller om AKS hanterar plugin-programmet.

Verifiera MIG-profilkonfigurationen

  • Ange exakt ett profilvärde till --gpu-mig-profiles för Single, inte upprepade poster för att ange antal partitioner.
  • Ange inte heller flaggan --gpu-instance-profile. Du kan inte kombinera --gpu-instance-profile och --gpu-mig-profiles på samma MIG-nodpool.

Flaggan --gpu-instance-profile stöds fortfarande för den enskilda strategin och AKS konverterar den inte automatiskt till --gpu-mig-profiles. Om du vill verifiera en ny nodpool som skapats med --gpu-mig-strategy och --gpu-mig-profiles, kör az aks nodepool show och kontrollera gpuProfile.nvidia.migStrategy och gpuProfile.nvidia.migProfiles.

Migrera för att använda hanterade MIG-profiler

  1. Inventera den aktuella poolens VM-storlek, gpuInstanceProfilenodavbildning och annonserad partitionskapacitet. Registrera arbetsbelastningsväljare, tillhörighet, taints, toleranser och GPU-begäranden. Kontrollera om det befintliga NVIDIA-enhets-plugin-programmet eller GPU-operatorn hanterar andra nodpooler.

  2. Se till att ditt självhanterade NVIDIA device plugin och alla GPU-operatörer inte hanterar noderna i ersättnings-MIG-poolen. Justera deras nodinriktning med hjälp av konfigurationen som stöds för installationen.

  3. Skapa en ersättnings-MIG-nodpool med ett distinkt namn. Om du till exempel vill bevara en MIG3g layout på Standard_NC24ads_A100_v4använder du följande kommando. Ersätt den SKU och den enskilda profil som stöds och som matchar din migreringsplan. Skicka inte --gpu-instance-profile.

    az aks nodepool add \
      --resource-group "$RESOURCE_GROUP" \
      --cluster-name "$CLUSTER_NAME" \
      --name migreplacement \
      --node-vm-size Standard_NC24ads_A100_v4 \
      --enable-managed-gpu=true \
      --gpu-mig-strategy Single \
      --gpu-mig-profiles MIG3g \
      --node-count 1
    
  4. Kör konfigurations-, readiness-, kapacitets- och arbetsbelastningskontrollerna i den här artikeln mot migreplacement. Uppdatera exempelväljaren till agentpool: migreplacement. Bekräfta den förväntade partitionsstorleken och enhetsåtkomsten innan du flyttar programarbetsbelastningar.

  5. Flytta arbetsbelastningar gradvis genom att uppdatera poolväljare eller tillhörighet och eventuella nödvändiga toleranser. Arbetsbelastningar med en enda strategi fortsätter att begära nvidia.com/gpu. Kontrollera programmets beteende, genomströmning, svarstid och minnesanvändning i ersättningspoolen.

  6. När du har verifierat ersättningen ska du evakuera eller avveckla arbetsbelastningar i den gamla nodpoolen och ta bort den. Behåll den gamla poolen tillgänglig tills migreringsverifieringen är klar när kapaciteten tillåter det. Ta bort installationen av den självhanterade NVIDIA-enhetspluginen först när du har bekräftat att inga återstående pooler behöver den.

Felsöka och ta bort nodpoolen

Felsöka schemaläggning och annonsering av partitioner

En podd som begär fler nvidia.com/gpu resurser än de berättigade noderna kan tillhandahålla förblir väntande med en schemaläggningshändelse för otillräcklig resurs. Granska dess status och händelser:

kubectl describe pod nvidia-single

Om noder inte rapporterar partitioner kontrollerar du nodvillkor, hanterade inställningar och den valda bilden och profilen. Installera inte ett andra plugin-program eller patcha AKS-hanterade komponenter som en tillfällig lösning.

Följande fel kan inträffa när du skapar nodpoolen:

Felkod Cause Åtgärd
MIGNotSupportedForVMSize Vm-storleken stöder inte MIG. Använd en MIG-kompatibel GPU VM-storlek som stöds.
InvalidOrNoneMIGProfile Profilen är ogiltig eller så har du angett None. Ange exakt en giltig MIG-profil för vm-storleken.
MIGProfilesNodeImageNotSupported AKS-nodavbilden är äldre än den lägsta versionen som stöds. Använd en nodbildversion av 202609.01.0 eller senare.

Azure CLI kan visa BadRequest som kod på toppnivå, så läs även verifieringsmeddelandet.

Ta bort exempelpodden och MIG-nodpoolen

Ta bort exempelpodden:

kubectl delete pod nvidia-single --ignore-not-found=true

Innan du tar bort en nodpool som kör andra arbetsbelastningar skapar du ersättningskapacitet, migrerar arbetsbelastningarna och kontrollerar programmets hälsotillstånd. Ta sedan bort nodpoolen:

az aks nodepool delete \
  --resource-group "$RESOURCE_GROUP" \
  --cluster-name "$CLUSTER_NAME" \
  --name "$SINGLE_POOL"

Kontrollera att MIG-nodpoolen har tagits bort:

az aks nodepool list \
  --resource-group "$RESOURCE_GROUP" \
  --cluster-name "$CLUSTER_NAME" \
  --query "[?name=='$SINGLE_POOL'].name" --output json

Utdata ska vara []. Bekräfta att inga Kubernetes-noder finns kvar för poolen:

kubectl get nodes -l agentpool="$SINGLE_POOL"

Nästa steg