Använda Azure Kubernetes Service som värd för GPU-baserade arbetsbelastningar

Den här artikeln beskriver hur du effektivt kör arbetsbelastningar som använder GPU-noder (grafikprocessor) i ett AkS-kluster (Azure Kubernetes Service). Lär dig hur du väljer rätt SKU, använder GPU-noder för att träna maskininlärningsmodeller och använder GPU-noder för att köra slutsatsdragning på AKS.

Scenarier

GPU-arbetsbelastningar kan vara dyra att köra. För att undvika onödiga kostnader bör du veta när du ska distribuera GPU-baserade noder i dina AKS-kluster.

GPU:er är specialbyggda för grafik, AI och maskininlärning och specialiserade uppgifter, vilket gör dem idealiska för beräkningsintensiva arbetsbelastningar. Centrala bearbetningsenheter (PROCESSORer) hanterar effektivt komplex logik och förgrening. GPU:er är optimerade för dataflöde och hanterar effektivt grundläggande aritmetiska åtgärder och vektoråtgärder.

För att avgöra när du ska använda GPU:er för AKS-arbetsbelastningar måste du förstå GPU-optimering, beräkningsintensitet och andra faktorer som påverkar prestanda. För att få bättre inblick i GPU-användning för AKS-arbetsbelastningar bör du överväga följande arbetsbelastningsexempel som drar nytta av GPU-noder i ett AKS-kluster.

Datavetenskap och analys

Använd GPU:er för att påskynda förbearbetning av data, funktionsutveckling och modellträning i arbetsflöden för datavetenskap. Om du vill använda GPU:er effektivt utökar ramverk som RAPIDS och GPU-stödet i Dask populära databehandlingsbibliotek, till exempel Pandas och scikit-learn.

PROGRAMVARA med öppen källkod (OSS)-accelererade SQL-frågemotorer och kolumndatabaser som HeavyDB använder GPU:er för att utföra frågor och analyser på stora datamängder.

Maskininlärning och djupinlärning

Populära ramverk för maskininlärning och djupinlärning som TensorFlow, PyTorch, vLLM och Triton Inference Server drar nytta av GPU:er eftersom de påskyndar uppgifter som tränar modeller och kör slutsatsdragning. Azure Machine Learning har till exempel stöd för högpresterande modeller som betjänar en hanterad onlineslutpunkt med hjälp av Triton Inference Server.

Djupinlärningsmodeller använder komplexa neurala nätverk. Parallell bearbetning på GPU:er påskyndar deras beräkningar. GPU:er tillhandahåller mycket effektiva åtgärder för matris multiplikation och konvolution, vilket är grundläggande åtgärder inom djupinlärning.

Du kan också använda GPU:er för att påskynda uppgifter som bildklassificering, objektidentifiering, bearbetning av naturligt språk och taligenkänning.

Visuellt innehåll och bildbearbetning

Uppgifter för visuellt innehåll tolkar visuella data för att extrahera meningsfull information. Dessa uppgifter förekommer i AI-drivna program som autonoma fordon, medicinsk avbildning, övervakningssystem och förhöjd verklighet. GPU:er använder parallell bearbetning för att effektivt hantera storskaliga bilddata och komplexa beräkningar för uppgifter som objektidentifiering, bildklassificering och extrahering av funktioner.

Videobearbetning och strömning

Arbetsbelastningar som kodar, kodar och strömmar video är beräkningsintensiva, särskilt om de har innehåll med hög upplösning. GPU:er ger en effektiv plattform för videobearbetning med låg latens och högt dataflöde mellan program som sportevenemangsströmmar och företagsvideor.

GPU-aktiverade agentnoder avlastar grafikintensiva uppgifter till GPU:n i virtuella skrivbordsmiljöer. Funktioner för videokodning och avkodning som använder GPU:er stöder videoströmning i realtid, omkodning och analys.

Om du vill påskynda uppgifter för visuellt innehåll som objektidentifiering, objektspårning och bild- eller videobearbetning använder du ramverk som OpenCV, OpenCL, NVIDIA CUDA och NVIDIA cuDNN.

Spelplattformar och molnspeltjänster använder GPU:er för att återge högupplöst grafik och strömma smidigt spelande via Internet.

Databehandling med höga prestanda

Högpresterande databehandlingsprogram (HPC) kräver ofta komplexa simuleringar, numerisk analys och vetenskapliga beräkningar. Om du vill köra dessa uppgifter effektivt kan du använda GPU:er för att parallellisera arbetsbelastningen över flera kärnor. Exempel på HPC-program som behöver massiv parallell bearbetningskraft är vetenskapliga simuleringar, väderprognoser, beräkningsvätskedynamik och molekylär modellering. GPU:er stöder parallella beräkningar och påskyndar HPC-arbetsbelastningar. De förbättrar också prestanda inom vetenskaplig databehandling och forskningsbaserad databehandling.

För att påskynda HPC-program tillhandahåller ramverk som NVIDIA CUDA, OpenCL och OpenACC GPU-aktiverade API:er och bibliotek.

Genomisk analys och bioinformatik

Hälso- och life science-arbetsbelastningar, som genomisk analys och bioinformatikprogram, bearbetar genetiska data, som DNA-sekvenser och proteinstrukturer. De förlitar sig på komplexa algoritmer för att justera sekvenser, anropa varianter och mina genomiska data. GPU:er påskyndar arbetsflöden för genomisk analys så att forskare kan bearbeta data och snabbt få insikter.

Generativa AI-modeller

Språkmodeller som OpenAI GPT, Meta Llama, Falcon och Phi open-modeller kan dra nytta av GPU-funktioner för parallell bearbetning. Använd GPU:er för att köra dessa modeller och förbättra prestandan.

GPU:er påskyndar tränings- och slutsatsdragningsuppgifter, vilket omfattar komplexa beräkningar och stora mängder data. GPU:er har funktioner för parallell bearbetning som delar upp de stora beräkningsuppgifterna för en viss modell i mindre underaktiviteter som körs samtidigt. Den här processen minskar svarstiden och förbättrar prestandan.

Språkmodeller har ofta komplexa neurala nätverk med flera lager och parametrar, vilket kan öka beräkningsbehovet. GPU:er påskyndar viktiga åtgärder i språkbearbetning, till exempel matris multiplikation och involutioner, vilket minskar den tid som krävs för träning och slutsatsdragning.

GPU:er ger tillräckligt med minneskapacitet, bandbredd och bearbetningskraft för att hantera språkmodellbaserade program som har konversationsgränssnitt och genererar text. GPU-förbättringar ger till exempel svar med låg svarstid för användare som interagerar med chattrobotar och AI-assistenter.

Alla arbetsbelastningar drar inte nytta av GPU-aktiverade agentnoder. I vissa fall räcker det med processorer. Till exempel kanske arbetsbelastningar som främst är indata- och utdatabundna eller inte kräver hög beräkning kanske inte drar nytta av GPU:er.

Kundberättelser

Många Microsoft-kunder drar nytta av GPU-arbetsbelastningar för att förnya för sina kunder. Tänk på följande exempel:

Metodtips för GPU-arbetsbelastningsdistribution

AKS innehåller olika alternativ för att distribuera GPU-aktiverade Linux- och Windows-nodpooler och arbetsbelastningar.

Distribution av Linux-arbetsbelastning

  • Skapa en nodpool som har en GPU-aktiverad virtuell dator (VM) som använder NVIDIA GPU:er eller AMD-GPU:er. Följ GPU-leverantörsvägledningen för att installera det associerade Kubernetes-enhetstillägget. Med den här metoden kan du inte uppdatera en befintlig nodpool för att lägga till GPU:er.

  • Förstå begränsningarna när du använder en Azure Linux GPU-aktiverad nodpool. AKS tillämpar inte automatiska säkerhetskorrigeringar och standardbeteendet för klustret är ohanterat.

  • Använd Kubernetes-nodväljare, nodtillhörighet och taints och toleranser när du schemalägger arbetsbelastningar i dina GPU-aktiverade nodpooler.

Distribution av Windows-arbetsbelastning

  • Skapa en nodpool med hjälp av en GPU-aktiverad virtuell dator som stöds. Den här metoden skapar en GPU-aktiverad Windows-nodpool. AKS installerar automatiskt drivrutinerna och Kubernetes-enhets-plugin-programmet. Med den här metoden kan du inte uppdatera en befintlig nodpool för att lägga till GPU:er.

    När du väljer en GPU-aktiverad virtuell dator som stöds installerar AKS automatiskt den NVIDIA CUDA- eller GRID-drivrutin som krävs. Vissa arbetsbelastningar är beroende av en specifik drivrutin, vilket kan påverka distributionen. För VM-storlekar i NC-serien och ND-serien installerar AKS CUDA-drivrutinen. För VM-storlekar i NV-serien installerar AKS GRID-drivrutinen.

  • Förstå begränsningarna när du använder en Windows-nodpool.

  • Använd Kubernetes-nodväljare, nodtillhörighet och taints och toleranser när du schemalägger arbetsbelastningar i dina GPU-aktiverade nodpooler.

Anmärkning

Windows GPU är en förhandsversionsfunktion. Du måste registrera funktionsflaggan WindowsGPUPreview.

NVIDIA GPU-operator

Använd NVIDIA GPU-operatorn för att distribuera och hantera GPU-resurser i Kubernetes-kluster. Operatören automatiserar installation, konfiguration och underhåll av nödvändiga programvarukomponenter. Den här metoden hjälper till att säkerställa optimal användning av NVIDIA GPU:er för resursintensiva arbetsbelastningar, till exempel AI och maskininlärning.

NVIDIA GPU-operatorn hanterar automatiskt de NVIDIA-programvarukomponenter som du behöver för att distribuera GPU:er, till exempel NVIDIA-enhets-plugin-programmet för Kubernetes och NVIDIA-containerkörningen. Operatorn installerar drivrutinen automatiskt. Mer information finns i ÖVERSIKT över NVIDIA GPU-operatör.

Om du vill ha bättre kontroll och flexibilitet för avancerade GPU-arbetsbelastningar använder du NVIDIA GPU-operatorn med dina GPU-aktiverade noder i AKS. Operatorn stöder inte Windows GPU:er.

Överväg följande metodtips:

  • Använd NVIDIA GPU-operatorn för att utföra avancerade GPU-konfigurationer, till exempel val av drivrutinsversion och GPU-tidsslicering.

  • Hoppa över den automatiska drivrutinsinstallationen innan du använder operatören.

  • Ange det minsta antalet till 1 när du använder operatorn med autoskalning av kluster.

Anmärkning

Microsoft stöder eller hanterar inte underhåll och kompatibilitet för NVIDIA-drivrutinerna som en del av nodbilddistributionen när du använder NVIDIA GPU-operatorn. Mer information finns i Metodtips för GPU för AKS.

GPU-arbetsbelastningsdistribution för språkmodeller

AI-verktygskedjans operator förenklar hur du kör språkmodeller med öppen källkod, till exempel Falcon, i ditt Kubernetes-kluster. Du kan distribuera AI-verktygskedjans operatör i ditt AKS-kluster som en hanterad funktion för AKS. AI-verktygskedjans operator använder Karpenter för att automatiskt etablera och distribuera GPU-noder baserat på en specifikation i den anpassade resursdefinitionen för arbetsytan för den valda modellen. AI-verktygskedjans operatör skapar slutsatsdragningsservern som en slutpunkt för din språkmodell och minskar registreringstiden så att du fokuserar på maskininlärningsåtgärder i stället för installation och underhåll av infrastrukturen.

För att förbättra AI-åtgärder i AKS tillhandahåller AI-verktygskedjan följande funktioner:

  • Hanterar containeravbildningar: Använd containeravbildningar för att hantera språkmodeller. AI-verktygskedjans operatör tillhandahåller en HTTP-server så att du kan använda förinställda modellarbetsytor för att utföra slutsatsdragning, anropa verktyg och använda MCP (Model Context Protocol).

  • Stöder BYO-modeller (Bring Your Own): Använd AI-verktygskedjan för att ta med interna, förtränade språkmodeller med hjälp av en anpassad distributionsmall och HuggingFace Transformers för slutsatsdragning.

  • Konfigurerar GPU-maskinvara: AI-verktygskedjans operator tillämpar automatiskt förinställda konfigurationer baserat på modellkrav. Du behöver inte justera distributionsparametrarna manuellt för att passa GPU-maskinvaran eller felsöka kostsamma OOM-fel (GPU out-of-memory).

  • Tillhandahåller inbyggd slutsatsövervakning: När du distribuerar en modell med hjälp av standardmotorn för vLLM-inferens, visar AI-verktygskedjan vLLM-mått i realtid via Prometheus och Grafana och visar mått om slutsatsdragningsprestanda och hälsa i aks-klustret.

Mer information om operatören i AI-verktygskedjan finns i följande resurser:

Skalning av arbetsbelastningar och kluster

För AI- och maskininlärningsscenarier måste du skilja mellan träningsarbetsbelastningar och slutsatsdragning med förtränad modeller. Om du vill skapa och träna en maskininlärningsmodell använder du GPU-beräkning utformad för djupinlärning och parallellisering av AI-beräkningar. Träning kräver ofta att du skalar GPU-resurser gradvis och distribuerar stora mängder data mellan GPU:er för att uppnå hög noggrannhet genom dataparallellitet.

Modellsharding är en vanlig avancerad teknik för att dela upp faser av modellträning. Du kan tilldela GPU:er till distinkta uppgifter och maximera deras användning genom att aktivera GPU för flera instanser (MIG) på NVIDIA GPU-nodpooler i AKS. GPU:er kan skala upp och skala ut HPC-arbetsbelastningar, till exempel virtuella datorer i NV-serien eller ND-serien i Azure. Den här funktionen hjälper till att upprätthålla hög resursanvändning och minska användarintervention för maskininlärningsprocesser som är långa och dyra.

Du kan också använda förtränad AI med öppen källkod och maskininlärningsmodeller för slutsatsdragning. Börja med populära modeller som Llama, Falcon eller Phi som ett mer kostnadseffektivt alternativ än att skapa och träna en helt anpassad språkmodell. Mer information finns i Språkmodeller på AKS.

När du använder förtränad modeller för slutsatsdragning kan resursanvändningen variera baserat på mängden data som du bearbetar. När du kör livedata via den valda modellen kan trafiken öka beroende på modellens storlek och krav. Upprätthålla låg svarstid under hela slutsatsdragningsprocessen. Om du vill använda dina GPU:er effektivt för höga prestanda och låg svarstid utför du distribuerad slutsatsdragning med hjälp av modeller som AI-verktygskedjans operatör stöder. Den här metoden utökar dina beräkningsalternativ till att omfatta lägre GPU-antal SKU:er som har en eller två GPU:er vardera, ger hög tillgänglighet i Azure-regioner och minskar underhållskostnaderna.

Hälsoövervakning av GPU

GPU-problem kan vara svåra att identifiera och ofta orsaka tysta fel eller försämra prestanda i stället för att misslyckas direkt. De här problemen ger tid att felsöka, förbruka resurser i onödan och öka driftskostnaderna.

GPU-hälsoövervakning på AKS ger konsekventa och frekventa kontroller av nodhändelser och villkor. Node Problem Detector (NPD) rapporterar dessa händelser på specifika GPU VM-storlekar. NPD visar nyckelsignaler som felaktigt GPU-antal eller nätverksanslutningsfel direkt i Kubernetes-nodförhållanden, vilket hjälper team att identifiera och svara på problem. Den här metoden stöder automatisk avisering, nodavspärrning och omplanering av arbetsbelastningar. Det hjälper också till att upprätthålla programmets tillförlitlighet och prestanda i beräkningsintensiva miljöer.

Kostnadshantering för GPU-arbetsbelastning

GPU:er kan öka kostnaden. Övervaka arbetsbelastningar för att förstå vad som driver GPU-kostnader och identifiera optimeringsmöjligheter. Om du vill öka kostnadssynligheten använder du verktyget aks-kostnadsanalys.

Följande scenarier drar nytta av kostnadssynlighet.

Storlekskostnad för GPU-aktiverad virtuell dator

Välj rätt GPU-aktiverad VM-storlek för att optimera kostnaden för att köra GPU:er. De dagliga kostnaderna kan variera beroende på vilken VM-storlek du väljer. A100 GPU:er är kostsamma, så undvik dem om inte din arbetsbelastning kräver dem. AKS-kostnadsanalys visar den dagliga kostnaden för var och en av dina virtuella datorer och visar de associerade kostnaderna för varje arbetsbelastning som körs på den GPU-aktiverade virtuella datorn. Använd dessa data för att utvärdera om du har en lämplig VM-storlek eller om du behöver ett mer kostnadseffektivt alternativ.

Inaktiv kostnad

När du har skapat en GPU-aktiverad nodpool medför du kostnader för Azure-resursen även om du inte kör en GPU-arbetsbelastning. Inaktiva kostnader representerar kostnaden för tillgänglig resurskapacitet som arbetsbelastningar inte använder. Dessa kostnader kan öka snabbt om du har flera oanvända noder. För att undvika höga inaktiva kostnader skapar du endast nodpooler när du kör en arbetsbelastning och använder metoder som funktionen för klusterstopp när du inte kör en arbetsbelastning. AKS-kostnadsanalys visar inaktiva kostnader för var och en av dina noder.

Överetablering och underanvändning

Överetablering är när du allokerar fler resurser än nödvändigt för en podd. Överetablering leder till resursavfall och underanvändning. Noden fortsätter att reservera överskottsresurser även om arbetsbelastningar inte använder dem. Om du vill minska överetablering använder du den lodräta autoskalningsappen för poddar för att ange korrekta begäranden och gränser baserat på tidigare användningsmönster.

Underanvändning kan inträffa när dina arbetsbelastningar inte använder GPU:er helt. Överväg avancerade tekniker för att dela och partitiona GPU:er. I stället för att distribuera flera noder kan du använda en enskild nod med partitioner för att maximera GPU-användningen. De här teknikerna hjälper dig att allokera lämplig mängd GPU-acceleration för varje arbetsbelastning, vilket kan förbättra användningen och sänka driftskostnaderna för distributionen.

Linux GPU-arbetsbelastningsdistributioner på AKS stöder GPU:er med flera instanser. Använd den här funktionen för att partitionera NVIDIA A100 och H100 GPU:er i upp till sju oberoende instanser. Varje instans har sitt eget minne och strömmar flera processorer.

NVIDIA har stöd för andra partitioneringstekniker, till exempel tidsslicering och MPS (Multi-Process Service). Om du vill tillämpa dessa konfigurationer manuellt använder du NVIDIA GPU-operatorn.

I avancerade scenarier kan du förbättra packning av resurslager på AKS-noder och optimera användningen av GPU-resurser i klustret. Du kan ange schemaläggningskonfigurationer med hjälp av ett eller flera inbyggda (eller in-tree) Kubernetes-schemaläggningsprogram för att introducera strategier för arbetsbelastningsplacering som skiljer sig från aks-standardschemaläggaren. Mer information finns i Koncept för konfiguration av Scheduler för placering av arbetsbelastningar i AKS (förhandsversion).

Bidragsgivare

Microsoft ansvarar för den här artikeln. Följande deltagare skrev den här artikeln.

Huvudförfattare:

Övriga medarbetare:

Om du vill se linkedin-profiler som inte är offentliga loggar du in på LinkedIn.

Nästa steg