Partitioneringsstrategieën voor GPU-knooppunten in Azure Kubernetes Service (AKS)

Azure Kubernetes Service (AKS) ondersteunt knooppuntgroepen met NVIDIA GPU om rekenintensieve workloads uit te voeren, waaronder AI/ML-training, realtime deductie en grootschalige gegevensanalyse. Gpu's worden traditioneel toegewezen in een een-op-een-model, waarbij één Kubernetes-pod een volledig GPU-apparaat binnen een Azure virtuele machine (VM) verbruikt. Hoewel dit model eenvoud en sterke isolatie biedt, kan dit leiden tot onderbezetting in scenario's waarin workloads niet volledig beschikbare GPU-resources in het cluster verbruiken.

Om het gebruik te verbeteren en gelijktijdige workloads te ondersteunen, kunnen klanten verschillende GPU-partitioneringsstrategieën in hun knooppuntgroep(en) integreren. Met deze methoden kunnen meerdere workloads één fysieke GPU delen door deze te verdelen in kleinere logische eenheden of door de toegang op software- of GPU-stuurprogrammaniveau uit te breiden.

In dit artikel leert u meer over de drie belangrijkste strategieën voor knooppuntpartitionering voor NVIDIA-GPU's in AKS: Multi-Instance GPU (MIG), time-slicing en Multi-Process Service (MPS).

Overzicht van partitioneringsstrategieën voor GPU-knooppunten in AKS

De drie primaire strategieën die beschikbaar zijn in AKS-omgevingen zijn MULTI-Instance GPU (MIG), time-slicing en MPS (Multi-Process Service). Elke benadering verschilt in termen van AKS-platformbeheer, type isolatie en gebruiksscenario's voor implementatie.

Strategy Beheerd of toegestaan op AKS GPU-deeltype Aanbevolen voor
Multi-Instance GPU (MIG) Beheerd (of door de gebruiker beheerd via GPU-operator) Hardware-partitionering Productiewerklasten
Tijdslicing (via NVIDIA GPU-operator) Door de gebruiker beheerd, AKS toegestaan Software plannen Experimenteren met variabele GPU-belastingen
Multi-Process Service (MPS, NVIDIA GPU Operator) Door de gebruiker beheerd, AKS toegestaan Multiplexing van proces op CUDA-niveau Workloads met lage latentie en hoge doorvoer

Beheerde GPU met meerdere instanties (MIG) op AKS

Multi-Instance GPU (MIG) is een hardwaregebaseerde partitioneringsmogelijkheid die beschikbaar is op bepaalde NVIDIA GPU-architecturen, zoals A100, H100 en H200-serie. Met MIG kan één fysieke GPU worden onderverdeeld in meerdere geïsoleerde exemplaren, elk met toegewezen rekenkernen, geheugen en cache. Dit zorgt voor sterke isolatie van werkbelastingen en voorspelbare prestatiekenmerken, waardoor MIG geschikt is voor productieomgevingen.

In AKS is MIG een beheerde mogelijkheid. Wanneer een knooppuntgroep met MIG is ingericht, Azure de GPU-hardware configureert, de vereiste stuurprogrammastack installeert en onderhoudt en MIG-exemplaren integreert met Kubernetes via de NVIDIA-apparaatinvoegtoepassing. Elk MIG-segment wordt beschikbaar gesteld aan de Kubernetes-planner als een discrete allocatable resource, zodat pods GPU-capaciteit op een gedetailleerde en deterministische manier kunnen aanvragen.

Deze aanpak biedt verschillende voordelen voor bedrijfsimplementaties. Het biedt isolatie op productieniveau via partitionering op hardwareniveau en vermindert operationele overhead door levenscyclusbeheer, inclusief stuurprogramma-updates en configuratie, te delegeren aan AKS. Daarnaast gedragen MIG-exemplaren zich als onafhankelijke GPU-apparaten vanuit het perspectief van de planner, waardoor voorspelbare plaatsing en resourcetoewijzing mogelijk zijn.

MIG introduceert echter ook bepaalde beperkingen: partitioneringsconfiguraties zijn statisch op het niveau van de knooppuntgroep, wat betekent dat wijzigingen opnieuw moeten worden geconfigureerd voor knooppunten. Flexibiliteit is beperkt tot vooraf gedefinieerde MIG-profielen die worden ondersteund door de onderliggende GPU-hardware.

Time-slicing met NVIDIA GPU Operator (door de gebruiker beheerd)

Time-slicing is een op software gebaseerd GPU-deelmechanisme waarmee meerdere Kubernetes-pods één GPU kunnen delen door de uitvoering in de loop van de tijd te interleaseren. Deze aanpak wordt geïmplementeerd via de NVIDIA GPU-operator, waarmee GPU-stuurprogramma's, de Kubernetes-apparaatinvoegtoepassing en de configuratie van de containerruntime worden beheerd.

Time-slicing kan worden geconfigureerd in AKS-knooppuntgroepen, maar niet beheerd door het platform. Clusterbeheerders zijn verantwoordelijk voor het uitrollen en configureren van de NVIDIA GPU Operator, meestal via Helm, en voor het inschakelen van time-slicing via de instellingen van de device-plugin. Zodra de configuratie is uitgevoerd, kunnen meerdere pods toegang tot dezelfde GPU-resource aanvragen en worden hun workloads gepland op een tijd-gedeelde manier.

Time-slicing biedt flexibiliteit en brede compatibiliteit, omdat deze niet afhankelijk is van specifieke GPU-hardwarefuncties en kan worden gebruikt met de meeste NVIDIA GPU's die worden ondersteund door CUDA. Het is handig voor ontwikkeling, testen of werklasten met piekmatige of variabele GPU-benuttingspatronen.

Ondanks zijn flexibiliteit biedt time-slicing geen isolatie op hardwareniveau. Alle workloads delen hetzelfde GPU-geheugen en dezelfde rekenresources, wat kan leiden tot conflicten en onvoorspelbare prestaties. Omdat configuratie- en levenscyclusbeheer gebruikersgestuurd zijn, moeten operators ook stuurprogramma-updates, compatibiliteit en afstemming afhandelen. Daarom wordt timeslicing over het algemeen niet aanbevolen voor productieworkloads met strikte SLA's.

Multi-Process Service (MPS) met NVIDIA GPU Operator (door gebruiker beheerd)

NVIDIA Multi-Process Service (MPS) is een mogelijkheid op stuurprogrammaniveau waarmee meerdere CUDA-toepassingen gelijktijdig kunnen worden uitgevoerd op één GPU. In tegenstelling tot tijdslicing, die de uitvoering tussen workloads afwisselt, kan MPS kernels van verschillende processen tegelijkertijd uitvoeren, waardoor het totale GPU-gebruik wordt verbeterd en de latentie voor compatibele workloads wordt verminderd.

In AKS kan MPS worden geconfigureerd via door de gebruiker beheerde implementatie van de NVIDIA GPU-operator. Operators moeten de GPU-stuurprogrammaomgeving configureren om MPS in te schakelen en de levenscyclus van de MPS-beheerdaemon te beheren. Workloads die verbinding maken met dezelfde MPS-server kunnen de GPU delen en profiteren van gelijktijdige kerneluitvoering.

MPS is handig voor scenario's met hoge doorvoer en lage latentie, zoals batchtaken of nauw gekoppelde parallelle workloads. Het biedt nauwkeurige controle over het delen van GPU's en kan het gebruik aanzienlijk verbeteren wanneer workloads zijn ontworpen om te profiteren van gelijktijdige uitvoering.

MPS introduceert echter extra operationele complexiteit. Configuratie is handmatig en probleemoplossing kan complexer zijn dan bij andere benaderingen. Net als bij tijdslicing biedt MPS geen sterke isolatie, omdat alle processen GPU-geheugen en rekenresources delen. MPS wordt daarom over het algemeen niet aanbevolen voor productieworkloads waarvoor strikte SLA's (Service Level Agreements) zijn vereist.

Een GPU-partitioneringsstrategie kiezen

Het kiezen van de juiste GPU-partitioneringsstrategie in AKS is afhankelijk van workloadvereisten, operationele voorkeuren en prestatieverwachtingen. MIG is de aanbevolen benadering voor productieomgevingen die sterke isolatie en voorspelbare prestaties vereisen. Als functie voor een AKS-knooppuntgroep vereenvoudigt MIG bewerkingen en vermindert de administratieve overhead.

Time-slicing is handig voor niet-productieomgevingen of workloads met fluctuerende GPU-vraag, waarbij het maximaliseren van het gebruik belangrijker is dan consistentie. Het biedt een hardwareagnostische oplossing, maar vereist zorgvuldig beheer en garandeert geen isolatie van prestaties.

MPS is ideaal voor gespecialiseerde workloads die profiteren van gelijktijdige GPU-uitvoering en lage latentie. Het biedt de hoogst mogelijke efficiëntie van het gebruik, maar wordt geleverd met verhoogde complexiteit en minimale isolatie, waardoor het het meest geschikt is voor geavanceerde gebruikers met CUDA-compatibele toepassingen.

In de praktijk kunnen organisaties, afhankelijk van de omgeving, verschillende strategieën hanteren door MIG in te zetten voor productieclusters en timeslicing of MPS te gebruiken in ontwikkel- of experimentele scenario's. Zorgvuldige evaluatie van gpu-workloadkenmerken en operationele beperkingen is essentieel voor het selecteren van de meest effectieve benadering voor partitionering op de lange termijn.