Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Multi-instance GPU (MIG) delar upp en kompatibel NVIDIA GPU i partitioner med dedikerade beräknings- och minnesresurser. I ett AKS-kluster begär arbetslaster om dessa partitioner via Kubernetes utökade resurser. Använd mig-strategin (Mixed Multi-Instance GPU) för att matcha GPU-partitionsstorlekar med dina arbetsbelastningar. I stället för att fördela en hel GPU till en mindre arbetsbelastning eller använda samma partitionsstorlek för varje arbetsbelastning, kör du arbetsbelastningar med olika beräknings- och minnesbehov på samma GPU. Varje partition har isolerade beräknings- och minnesresurser. Den här metoden kan förbättra utnyttjandet av GPU:n genom att låta mindre arbetslaster dela på GPU-kapaciteten med större arbetslaster.
Till exempel kan en NVIDIA A100 80 GB GPU tillhandahålla en stor partition, en medelhög partition och två små partitioner. Fyra arbetsbelastningar kan köras samtidigt, var och en med en partition dimensionerad efter sina behov, enligt följande exempel på blandad layout.
Den här artikeln visar hur du skapar en blandad MIG-nodpool, verifierar partitionsallokering och kör exempelarbetsbelastningar.
Se GPU-strategier för flera instanser i AKS för strategival. För uniforma partitioner, se Skapa en MIG-nodpool med en enda strategi.
Important
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:
Innan du börjar
Innan du konfigurerar en blandad MIG-nodpool kontrollerar du att du har följande förutsättningar:
- Den här artikeln förutsätter att du har ett befintligt AKS-kluster. Om du inte har något kluster skapar du ett med hjälp av Azure CLI, Azure PowerShell eller Azure portalen.
- Du har installerat Azure CLI med version
2.85.0eller senare och tilläggsversionenaks-preview22.0.0b15eller senare. Köraz --versionfö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.
- En kompatibel mixed MIG-layout för den valda GPU:n. Välj partitioneringsprofiler som stöds och som uppfyller GPU:ns kapacitet och placeringskrav. Mer information finns i Förstå blandade MIG-profiler.
- MIG-nodpoolen använder en AKS Linux-nodbild baserad på VHD-version
202609.01.0eller senare. - Funktionerna
ManagedGPUExperiencePreviewochMixedMIGStrategyPreviewhar registrerats i din prenumeration. Anvisningar finns i artikeln Registrera förhandsgranskningsfunktionerna.
Limitations
- Nodpooler med
AzureContainerLinuxochWindowsOS-SKU:er stöds för närvarande inte med den här funktionen. - Den här funktionen stöder för närvarande inte automatisk skalning av MIG-noder med blandad strategi med hjälp av AKS Cluster Autoscaler.
- En konfiguration med blandad strategi måste uppfylla GPU:ns partitioneringskapacitet och placeringsbegränsningar.
- 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.
Förstå blandade MIG-profiler
En profil, till exempel MIG3g, definierar storleken på en GPU-partition. En layout är den uppsättning profiler som du konfigurerar på en nodpool. Varje profil i layouten skapar en partition som arbetsbelastningar begär som en utökad resurs.
MIG-strategin styr både den kompatibla profilkonfigurationen och de resursnamn som arbetsbelastningar begär.
| Strategy | Profilkonfiguration | Arbetsbelastningsresurs |
|---|---|---|
| Enskild | Ange exakt en profil och sedan skapar AKS en enhetlig partitionslayout. |
nvidia.com/gpu: Varje enhet representerar en MIG-partition, inte hela den fysiska GPU:n. |
| Blandat | Ange en eller flera kompatibla profiler som utgör en layout som stöds. Upprepa en profil för att begära flera partitioner av den storleken. | En profilspecifik resurs, till exempel nvidia.com/mig-1g.10gb. |
Profilvärdena som stöds är MIG1g, MIG2g, MIG3g, MIG4goch MIG7g. Följande tabell visar partitionen som varje profil skapar på en NVIDIA A100 80 GB GPU, till exempel GPU:n i Standard_NC24ads_A100_v4. GPU-minne per profil beror på NVIDIA GPU-modellen.
| Profile | beräkningssegment | Partition | Arbetsbelastningsresurs |
|---|---|---|---|
MIG1g |
1 | 1g.10gb |
nvidia.com/mig-1g.10gb |
MIG2g |
2 | 2g.20gb |
nvidia.com/mig-2g.20gb |
MIG3g |
3 | 3g.40gb |
nvidia.com/mig-3g.40gb |
MIG4g |
4 | 4g.40gb |
nvidia.com/mig-4g.40gb |
MIG7g |
7 | 7g.80gb |
nvidia.com/mig-7g.80gb |
Förbered din miljö
Ange miljövariabler, registrera förhandsversionsfunktionerna och anslut till ditt befintliga kluster innan du lägger till den blandade MIG-nodpoolen.
Ange miljövariabler
Ange följande miljövariabler för ditt befintliga kluster. Exempelmanifesten senare i den här artikeln använder
migmixedförMIXED_POOL.export SUBSCRIPTION_ID="<subscription-id>" export RESOURCE_GROUP="<my-resource-group>" export CLUSTER_NAME="<my-cluster-name>" export MIXED_POOL="<mig-pool-name>"
Registrera förhandsgranskningsfunktionerna
Installera eller uppdatera
aks-previewtillägget.az extension add --name aks-preview --upgrade --yesRegistrera funktionen
ManagedGPUExperiencePreview.az feature register \ --namespace Microsoft.ContainerService \ --name ManagedGPUExperiencePreviewRegistrera funktionen
MixedMIGStrategyPreview.az feature register \ --namespace Microsoft.ContainerService \ --name MixedMIGStrategyPreviewBekräfta statusen för registreringen av funktionen Hanterad GPU.
az feature show \ --namespace Microsoft.ContainerService \ --name ManagedGPUExperiencePreview \ --query properties.state --output tsvBekräfta registreringstillståndet för blandad MIG-funktion.
az feature show \ --namespace Microsoft.ContainerService \ --name MixedMIGStrategyPreview \ --query properties.state --output tsvNär båda tillstånden har returnerat
Registered, uppdaterar du resursproviderregistreringen.az provider register --namespace Microsoft.ContainerService
Ansluta till ditt AKS-kluster
Hämta autentiseringsuppgifterna för klustret.
az aks get-credentials \ --resource-group "$RESOURCE_GROUP" \ --name "$CLUSTER_NAME"Kontrollera anslutningen och den befintliga nodstatusen.
kubectl get nodes
Aktivera mixed MIG på en ny nodpool
Använd Azure CLI för att skapa en blandad MIG-nodpool. Välj fliken för nodens OS SKU.
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 en blandad MIG-nodpool med hjälp av följande A100-layout. Ange --enable-managed-gpu=true, --gpu-mig-strategy Mixedoch MIG-profillistan tillsammans. AKS bevarar den angivna listordningen och hanterar placeringsordningen under nodkonfigurationen.
az aks nodepool add \
--resource-group "$RESOURCE_GROUP" \
--cluster-name "$CLUSTER_NAME" \
--name "$MIXED_POOL" \
--node-vm-size "Standard_NC24ads_A100_v4" \
--enable-managed-gpu=true \
--gpu-mig-strategy Mixed \
--gpu-mig-profiles MIG3g MIG2g MIG1g MIG1g \
--node-count 1
Verifiera den blandade MIG-konfigurationen
Kontrollera nodpoolens konfiguration, nodberedskap och annonserade resurser separat. Lyckad etablering av GPU-noder bekräftar inte att en arbetsbelastning kan använda en partition.
Granska poolkonfigurationen och nodbilden.
az aks nodepool show \ --resource-group "$RESOURCE_GROUP" \ --cluster-name "$CLUSTER_NAME" \ --name "$MIXED_POOL" \ --query "{state:provisioningState,image:nodeImageVersion,gpu:gpuProfile.nvidia}" \ --output jsonBekräfta att utdata matchar följande värden:
Utdatafält Förväntat värde stateSucceededgpu.managementModeManagedgpu.driverModeDevicePlugingpu.migStrategyMixedgpu.migProfilesMIG3g,MIG2g,MIG1g,MIG1g(bådaMIG1gposterna)Vänta tills noderna i den blandade MIG-nodpoolen blir
Ready.kubectl wait --for=condition=Ready node \ -l agentpool="$MIXED_POOL" --timeout=600sGranska de allokerbara NVIDIA-resurserna på varje nod i poolen.
kubectl describe nodes -l agentpool="$MIXED_POOL"För
Standard_NC24ads_A100_v4med layoutenMIG3g MIG2g MIG1g MIG1gbör varje nodsAllocatableavsnitt innehålla följande resursantal tillsammans med dess CPU, minne och andra resurser:Allocatable: nvidia.com/mig-1g.10gb: 2 nvidia.com/mig-2g.20gb: 1 nvidia.com/mig-3g.40gb: 1Dessa antal är allokerbar kapacitet, inte en rapport över för närvarande oanvända partitioner. Granska schemalagda poddbegäranden för att fastställa återstående kapacitet.
Kör arbetsbelastningar på olika partitionsstorlekar
Använd exakt de utökade resursnamn som dina noder annonserar. I följande exempel begär du en 3g.40gb partition och en 1g.10gb partition. Varje container kör nvidia-smi en gång för att rapportera GPU-enhetsinformation och avslutas sedan.
Skapa en fil med namnet
mixed-mig-workloads.yamlmed följande manifest. Väljarnaagentpoolanvändermigmixedpoolnamnet. Om du använde ett annat namn förMIXED_POOL, uppdaterar du båda väljarna.apiVersion: v1 kind: Pod metadata: name: mixed-mig-pod-3g spec: restartPolicy: Never nodeSelector: agentpool: migmixed containers: - name: gpu-test image: mcr.microsoft.com/azuredocs/samples-tf-mnist-demo:gpu command: ["nvidia-smi"] resources: limits: nvidia.com/mig-3g.40gb: "1" --- apiVersion: v1 kind: Pod metadata: name: mixed-mig-pod-1g spec: restartPolicy: Never nodeSelector: agentpool: migmixed containers: - name: gpu-test image: mcr.microsoft.com/azuredocs/samples-tf-mnist-demo:gpu command: ["nvidia-smi"] resources: limits: nvidia.com/mig-1g.10gb: "1"Kubernetes använder en utökad resursgräns som begäran när du utelämnar en separat begäran. Ange partitionstal som heltal. Om du anger både begäranden och gränser för samma GPU-resurs använder du lika värden.
Distribuera exempelpoddarna.
kubectl apply -f mixed-mig-workloads.yamlVänta tills podden med den större partitionen har slutförts utan fel.
kubectl wait --for=jsonpath='{.status.phase}'=Succeeded \ pod/mixed-mig-pod-3g --timeout=300sVänta tills podden för den mindre partitionen har slutförts.
kubectl wait --for=jsonpath='{.status.phase}'=Succeeded \ pod/mixed-mig-pod-1g --timeout=300sKontrollera poddernas nodtilldelningar.
kubectl get pods mixed-mig-pod-3g mixed-mig-pod-1g -o wideLäs GPU-enhetsinformationen för podden med den större partitionen.
kubectl logs mixed-mig-pod-3gKontrollera att
nvidia-smirapporterar GPU:n och en tilldelad MIG-enhet utan fel. Podden begär nodens annonseradenvidia.com/mig-3g.40gbresurs.Läs GPU-enhetsinformationen för den mindre partitionspodden.
kubectl logs mixed-mig-pod-1gKontrollera att
nvidia-smirapporterar GPU:n och en tilldelad MIG-enhet utan fel. Podden begär nodens annonseradenvidia.com/mig-1g.10gbresurs. Utdataformatering beror på drivrutinsversionen; standardkommandot visar inte nödvändigtvis profilnamn. Fysisk GPU-information är inte bevis för att podden har åtkomst till hela GPU:n.Poddar som har slutförts visas
Completedikubectl get pods. De förblir inte redo eller behåller sin partitionsallokering när containern har avslutats. Om väntetiden är slut kontrollerar du poddens status, loggar och händelser för att skilja schemaläggningsproblem från avbildnings- eller containerfel.
För en Single strategipool begär du nvidia.com/gpu: "1" i stället för en profilspecifik resurs. Återanvänd inte resursnamnet för att begära en partition från den blandade poolen i det här exemplet.
Skala och underhålla nodpoolen
Skalning bevarar den blandade MIG-nodpoolens ursprungliga strategi- och profillista. Kontrollera att du har kvot- och GPU-kapacitet innan du lägger till noder.
az aks nodepool scale \
--resource-group "$RESOURCE_GROUP" \
--cluster-name "$CLUSTER_NAME" \
--name "$MIXED_POOL" \
--node-count 2
Upprepa nodberedskapen och allokeringsbara resurskontroller för alla noder. Med Standard_NC24ads_A100_v4 och layouten MIG3g MIG2g MIG1g MIG1g annonserar varje nod samma fyra partitioner: en 3g.40gb, en 2g.20gboch två 1g.10gb. Fler noder lägger till kapacitet för de konfigurerade partitionstyperna. de lägger inte till saknade typer.
Uppdatera nodbilden med hjälp av node-image-only uppgraderingskommandot. Planera för störningar i arbetsbelastningen samt GPU-kvot och kapacitet för ersättningsnoder under underhåll.
az aks nodepool upgrade \
--resource-group "$RESOURCE_GROUP" \
--cluster-name "$CLUSTER_NAME" \
--name "$MIXED_POOL" \
--node-image-only
Optimera partitionsanvändningen för utvärdering av produktionsarbetsbelastningar
Använd följande metoder för att utvärdera din produktionsarbetsbelastningsmix i en AKS-testmiljö innan du planerar en produktionsdistribution.
- Dimensionera partitioner utifrån mätningar. Benchmarka representativa inferens-, batch- och träningsarbetslaster. Mät enhetens maximala minnesanvändning, beräkningsutnyttjande, dataflöde och svarstid under realistisk samtidighet. Välj den minsta partition som uppfyller dina arbetsbelastningskrav med minnesutrymme.
- Anpassa layouten till samtidig efterfrågan. Layouten
MIG3g MIG2g MIG1g MIG1gpåStandard_NC24ads_A100_v4ger en stor, en medelstor och två små partitioner per nod. Två samtidiga begäranden för en stor partition behöver två noder även om mindre partitioner är inaktiva. Välj layouter utifrån fördelningen av samtidig efterfrågan, inte bara totalt GPU-minne. - Behandla kapacitet som separata resurstyper. Spåra begärd och tillgänglig kapacitet för varje
nvidia.com/mig-*-resurs. Kubernetes kombinerar inte små partitioner till en större eller ändrar storlek på den konfigurerade layouten för att uppfylla en väntande podd. - Använd separata pooler för olika arbetsbelastningsklasser. Behåll arbetsbelastningar som behöver en icke-partitionerad GPU på en pool som skapats utan MIG-inställningar. Använd en enhetlig enskild strategi när alla jobb behöver samma partitionsstorlek och blandade layouter när arbetsbelastningar behöver olika storlekar. Jämför prestanda för distribuerade arbetsbelastningar eller arbetsbelastningar med flera GPU:er separat i stället för att anta att de fungerar som fullständiga GPU-arbetsbelastningar.
- Ange processor- och minnesbegäranden samt GPU-gränser. En tillgänglig GPU-partition säkerställer inte att en nod har tillräckligt med värdminne eller PROCESSOR för att köra arbetsbelastningen. Använd en Deployment eller ett Job som passar programmets livscykel i stället för inspektionspoddarna i den här artikeln.
- Övervaka arbetsbelastningsresultat och partitionsanvändning tillsammans. Jämför svarstid, dataflöde, GPU-minnestryck och schemaläggningsfel efter MIG-profil.
- Verifiera programstacken. Testa kompatibiliteten för testramverk, CUDA, drivrutin och partition. Lås verifierade versioner eller digest för programavbilder och använd inte inspektionsavbilden som en programavbild för produktion.
Felsöka konfiguration och schemaläggning
Om en exempelpodd stannar Pendingska du kontrollera dess schemaläggningshändelser och nodens allokerade resurser.
Granska schemaläggningshändelserna för en väntande exempelpodd, till exempel mixed-mig-pod-3g från Kör arbetsbelastningar på olika partitionsstorlekar:
kubectl describe pod mixed-mig-pod-3g
Granska de allokerade resursbegäranden på den blandade MIG-nodpoolens noder:
kubectl describe nodes -l agentpool="$MIXED_POOL"
Vanliga orsaker är bland annat:
- Podden begär en resurs som poolen inte annonserar. En begäran om
nvidia.com/mig-4g.40gbväntar till exempel på en pool som skapats medMIG3g MIG2g MIG1g MIG1g, eftersom poolen inte annonserar den resursen. Att skala poolen löser inte det här matchningsfelet. - Noden saknar andra resurser. Om GPU-partitionerna verkar vara tillgängliga, kontrollera CPU, värdminne, taints och tillhörighet.
Relaterad vägledning finns i felsökning för MIG med enskild strategi och hanterad GPU-verifiering. Konfigurationskraven i den här artikeln gäller för den nya förhandsversionen av mixad profil.
Inaktivera mixed MIG-strategi och ta bort exempelresurser
Inaktivera blandad MIG-användning genom att migrera arbetsbelastningar och ta bort den blandade MIG-nodpoolen. Förhandsgranskningen tillhandahåller inte någon ändring av layouten på plats eller en None strategi. Att avregistrera en prenumerationsfunktion konverterar inte befintliga noder eller ersätta borttagning av nodpooler.
Ta bort eller ersätt den blandade MIG-nodpoolen
Innan du tar bort en nodpool som kör programarbetsbelastningar, etablerar du en ersättnings-MIG-pool med tillräcklig kapacitet, uppdaterar resursbegäranden och väljare för arbetsbelastningar och kontrollerar programmets hälsa. Om du vill skapa en icke-partitionerad GPU-pool utelämnar du både --gpu-mig-strategy och --gpu-mig-profiles. Om du vill gå över till en enda strategi skapar du en ny nodpool med --gpu-mig-strategy Single och exakt en profil.
Skapa en hanterad ersättningsnodpool med full GPU, till exempel, endast om dina applikationer fortfarande behöver GPU-kapacitet:
az aks nodepool add \
--resource-group "$RESOURCE_GROUP" \
--cluster-name "$CLUSTER_NAME" \
--name gpufull \
--node-vm-size "Standard_NC24ads_A100_v4" \
--enable-managed-gpu=true \
--node-count 1
Kontrollera att ersättningsnoden är Ready och annonserar nvidia.com/gpu i stället för MIG-partitionsresurser:
kubectl describe nodes -l agentpool=gpufull
Bekräfta att True är Conditions i varje nods Ready-avsnitt. I avsnittet Allocatable bekräftar du att nvidia.com/gpu finns och att MIG-partitionsresurser inte annonseras.
Uppdatera migrerade arbetsbelastningar för att begära nvidia.com/gpu och välj agentpool: gpufull. Verifiera på nytt programmets storlek och beteende på den fullständiga GPU:n innan du tar bort den gamla nodpoolen. Om du inte behöver ersätta GPU-kapacitet hoppar du över det här exemplet och tar bort exempelpoolen direkt.
Ta bort exempelpoddar och den blandade MIG-nodpoolen
Ta bort inspektionspoddarna.
kubectl delete pod mixed-mig-pod-3g mixed-mig-pod-1g \ --ignore-not-found=trueKontrollera att exempelpoddarna är borta.
kubectl get pods \ --field-selector metadata.name=mixed-mig-pod-3gkubectl get pods \ --field-selector metadata.name=mixed-mig-pod-1gNär du har migrerat andra arbetsbelastningar tar du bort den blandade MIG-nodpoolen. Vänta tills åtgärden har slutförts innan du påbörjar en annan klusteråtgärd.
az aks nodepool delete \ --resource-group "$RESOURCE_GROUP" \ --cluster-name "$CLUSTER_NAME" \ --name "$MIXED_POOL"Kontrollera att den borttagna nodpoolen inte längre visas.
az aks nodepool list \ --resource-group "$RESOURCE_GROUP" \ --cluster-name "$CLUSTER_NAME" \ --query "[?name=='$MIXED_POOL'].name" \ --output jsonUtdata ska vara
[].Kontrollera att inga Kubernetes-noder finns kvar för den nodpoolen.
kubectl get nodes -l agentpool="$MIXED_POOL"Kommandot bör rapportera att det inte finns några matchande resurser när borttagningen har slutförts.
Nästa steg
- Lär dig mer om MIG-strategier som stöds i AKS.
- Granska hanterade GPU-noder i AKS.
- Jämför med konfigurationsexempel för en enda strategi i Skapa en mig-nodpool för en enda strategi.