Redigera

Dela via


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

Azure Kubernetes Service (AKS)

Den här artikeln beskriver hur du effektivt kör arbetsbelastningar som använder GPU-noder 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 slutsatsdragningar 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. Processorer hanterar effektivt invecklad logik och förgrening. GPU:er är optimerade för dataflöde. De kan effektivt hantera enkla 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 och beräkningsintensitet, men du bör också överväga andra faktorer. 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

Du kan använda GPU:er för att påskynda förbearbetning av data, funktionsutveckling och modellträning i arbetsflöden för datavetenskap. För att effektivt använda GPU:er utökar ramverk som RAPIDS och Dask GPU populära databehandlingsbibliotek, till exempel pandas och scikit-learn.

Programvara med öppen källkod (OSS)-accelererade SQL-frågemotorer och kolumndatabaser som BlazingSQL och HeavyDB använder GPU:er för att snabbt 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 och PyTorch drar nytta av GPU:er eftersom de kan påskynda tränings- och slutsatsdragningsuppgifter.

Djupinlärningsmodeller har komplexa neurala nätverk. Parallell bearbetning på GPU:er påskyndar modellens beräkningar. GPU:er ger högeffektiv matris multiplikation och sammandragningar, vilket är kärnå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 blir allt vanligare i AI-drivna tillämpningar, autonoma fordon, medicinsk avbildning, övervakningssystem och förhöjd verklighet. GPU:er använder parallell bearbetning, så att de effektivt kan hantera storskaliga bilddata och komplexa beräkningar för uppgifter som objektidentifiering, bildklassificering och extrahering av funktioner.

Videobearbetning och strömning

Videor blir allt vanligare i verksamheten, så organisationer behöver GPU-baserad maskinvara i stället för processorer. Arbetsbelastningar för videobearbetning, inklusive omkodning, kodning och strömning, är beräkningsintensiva, särskilt om de har hd-innehåll eller 4K-innehåll. GPU:er tillhandahåller en effektiv plattform som ger högpresterande videoupplevelser med låg svarstid i olika program, till exempel strömmande sportevenemang eller företagsvideor.

GPU-aktiverade agentnoder ger en omfattande kundupplevelse i virtuella skrivbordsmiljöer eftersom de avlastar grafikintensiva uppgifter till GPU:n. GPU-accelererad videokodning och avkodningsfunktioner hjälper till att förbättra videoströmning i realtid, videotranskodning och videoanalys.

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

Spelplattformar och molnspeltjänster förlitar sig på GPU:er för att leverera högkvalitativ grafik och smidiga spelupplevelser.

Databehandling med höga prestanda

Högpresterande databehandlingsprogram (HPC) kräver ofta komplexa simuleringar, numerisk analys och vetenskapliga beräkningar. Om du snabbt vill köra dessa uppgifter 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 är idealiska för parallella beräkningar och påskyndar HPC-arbetsbelastningar avsevärt. Vetenskapliga och forskningsdrivna strävanden drar nytta av GPU:er.

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, blir allt vanligare. Dessa arbetsbelastningar omfattar bearbetning av genetiska data, till exempel DNA-sekvenser och proteinstrukturer, och kräver komplexa algoritmer för sekvensjustering, variantanrop och genomisk datautvinning. GPU:er påskyndar genomiska analysarbetsflöden så att forskare kan bearbeta data och få insikter snabbare.

Överväg kostnadskonsekvenser innan du distribuerar GPU-noder i AKS-kluster. Förstå GPU-optimering för beräkningsintensiva uppgifter som visuellt innehåll, videobearbetning, HPC och genomiska analysuppgifter. Tänk på dessa faktorer när du jämför GPU-resurser jämfört med CPU-resurser i AKS-kluster.

Generativa AI-modeller

Stora språkmodeller (LLM), som OpenAI GPT, Meta Llama, Falcon eller Mistral, kan dra nytta av GPU-funktioner för parallell bearbetning. Använd GPU:er med dessa modeller för att förbättra prestanda.

GPU:er kan påskynda 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 ger snabba resultat 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 påskyndar träning och slutsatsdragningstider.

GPU:er ger tillräckligt med minneskapacitet, bandbredd och bearbetningskraft för att hantera LLM-baserade program som har konversationsgränssnitt och textgenerering. GPU-förbättringar ger till exempel snabba svarstider för användare som interagerar med chattrobotar och AI-assistenter.

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

Kundcase

Många Microsoft-kunder drar nytta av GPU-arbetsbelastningar för att förnya för sina kunder. Föreställ dig 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. Följ dessa metodtips för att säkerställa att GPU-arbetsbelastningen fungerar smidigt.

Distribution av Linux-arbetsbelastning

  • Skapa en nodpool med en GPU-aktiverad virtuell dator (VM) som stöds och installera NVIDIA-enhetens plugin-program manuellt för att distribuera GPU-aktiverade Linux-nodpooler. Den här metoden stöder inte uppdatering av en befintlig nodpool för att lägga till GPU:er.

  • Visa de GPU-aktiverade virtuella datorer som stöds i Azure. Vi rekommenderar att du använder en minsta storlek på Standard_NC6s_v3 för AKS-nodpooler. AKS stöder inte NVv4-serien baserat på AMD-GPU:er.

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

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

Distribution av Windows-arbetsbelastning

  • Skapa en nodpool med en GPU-aktiverad virtuell dator som stöds för att distribuera GPU-aktiverade Windows-nodpooler. AKS installerar automatiskt drivrutinerna och nödvändiga NVIDIA-komponenter. Den här metoden stöder inte uppdatering av 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 lämplig NVIDIA CUDA- eller GRID-drivrutin. 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.

  • Visa de GPU-aktiverade virtuella datorer som stöds i Azure. Vi rekommenderar att du använder en minsta storlek på Standard_NC6s_v3 för AKS-nodpooler. AKS stöder inte NVv4-serien baserat på AMD-GPU:er.

  • Förstå begränsningarna när du använder en Windows-nodpool. Kubernetes version 1.28 och nedan stöder inte Windows GPU:er.

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

Kommentar

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

NVIDIA GPU-operator

NVIDIA GPU-operatorn är ett verktyg som du kan använda för att effektivt distribuera och hantera GPU-resurser i Kubernetes-kluster. Du kan använda operatorn för att automatisera installation, konfiguration och underhåll av programvarukomponenter. Den här metoden säkerställer optimal användning av NVIDIA GPU:er för krävande arbetsbelastningar, till exempel AI- och maskininlärningsarbetsbelastningar.

NVIDIA GPU-operatorn hanterar automatiskt alla 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.

Om du vill ha ökad kontroll och flexibilitet för avancerade GPU-arbetsbelastningar kan du använda NVIDIA GPU-operatorn med dina GPU-aktiverade noder i AKS. NVIDIA GPU-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 tidsslicering.

  • Hoppa över installationen av den automatiska drivrutinen innan du använder GPU-operatorn.

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

Kommentar

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

GPU-arbetsbelastningsdistribution för LLM:er

Kubernetes AI-verktygskedjans operator (KAITO) är en Kubernetes-operator som förenklar hur du kör llm:er med öppen källkod, till exempel Falcon och Llama2, i kubernetes-klustret. Du kan distribuera KAITO i ditt AKS-kluster som ett hanterat tillägg för AKS. KAITO 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. KAITO skapar slutsatsdragningsservern som en slutpunkt för din LLM och minskar den totala registreringstiden så att du kan utföra maskininlärningsåtgärder i stället för installation och underhåll av infrastrukturen.

För att förbättra maskininlärningsåtgärderna tillhandahåller KAITO följande funktioner:

  • Hantering av containeravbildningar: Använd containeravbildningar för att hantera LLM:er. KAITO tillhandahåller en HTTP-server så att du kan använda ett modellbibliotek som stöds för att utföra slutsatsdragningsanrop.

  • Konfiguration av GPU-maskinvara: KAITO tillhandahåller förinställda konfigurationer som tillämpas automatiskt baserat på modellkrav. Du behöver inte justera distributionsparametrarna manuellt för att passa GPU-maskinvaran.

  • Automatisk etablering av GPU-noder: KAITO etablerar automatiskt GPU-noder baserat på modellkrav och rekommenderar GPU VM-storlekar med lägre kostnad för att konfigurera distribuerad slutsatsdragning.

  • Integrering med Microsofts artefaktregister: Om din LLM-licens tillåter kan KAITO vara värd för modellbilder i det offentliga Artefaktregistret. Den här metoden förenklar åtkomsten till och distributionen av modeller som stöds. För modeller med öppen källkod med MIT- eller Apache2-licenser som KAITO-lagringsplatsen inte stöder kan du skicka en begäran om ny modellregistrering.

Mer information om KAITO 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 din maskininlärningsmodell bör du överväga att använda GPU-beräkning som är utformad för djupinlärning och parallellisering av AI-beräkningar. Träning kräver ofta gradvis skalning och distribution av stora mängder data över GPU:er för att uppnå hög noggrannhet med dataparallellitet.

Modellsharding är en vanlig avancerad teknik som du kan använda för att dela upp faser av modellträning. Du kan tilldela GPU:er till distinkta uppgifter och maximera deras användning. 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 endast för slutsatsdragning. Kom igång med populära modeller som Llama, Falcon eller Mistral som ett snabbare och mer kostnadseffektivt alternativ jämfört med att bygga och träna en LLM från grunden. Mer information finns i Språkmodeller på AKS.

När du använder förtränad modeller för slutsatsdragning kan du uppleva dynamisk och fluktuerande resursanvändning, beroende på mängden data som du bearbetar. När du kör livedata via den valda modellen uppstår ibland trafiktoppar beroende på modellens storlek och krav. Du måste upprätthålla en acceptabel, låg svarstidsnivå under hela inferensprocessen. För att effektivt använda dina GPU:er för höga prestanda och låg svarstid kan du utföra distribuerad slutsatsdragning med de modeller som KAITO 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.

Kostnadshantering för GPU-arbetsbelastning

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

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. Du bör undvika dem om inte din arbetsbelastning har specifika krav. AKS-kostnadsanalys visar den dagliga kostnaden för var och en av dina virtuella datorer och delar upp 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 korrekt 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. Den här kostnaden ökar snabbt om du har flera oanvända noder. För att undvika höga inaktiva kostnader skapar du bara nodpooler när du kör arbetsbelastningen och använder metoder som funktionen för klusterstopp när du inte kör arbetsbelastningen. 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. Överskottsresurser förblir reserverade för noden även om du 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 GPU-delning och partitionering. I stället för att använda flera noder kan du använda en enskild nod med partitionering för att maximera GPU-användningen. De här teknikerna kan hjälpa 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 en NVIDIA A100 GPU 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 implementering av flera processer. Om du vill tillämpa dessa konfigurationer manuellt använder du NVIDIA GPU-operatorn.

För avancerade scenarier kan du förbättra packning av resurslager på noderna. Du kan ange scheduler-konfigurationer och köra en andra schemaläggare. Konfigurera och underhålla en sekundär schemaläggare för att använda strategier för arbetsbelastningsplacering som skiljer sig från AKS-standardschemaläggaren. Mer information finns i Konfigurera flera schemaläggare på Kubernetes.

Deltagare

Den här artikeln underhålls av Microsoft. Det har ursprungligen skrivits av följande medarbetare.

Huvudförfattare:

Övriga medarbetare:

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

Nästa steg