Väldefinierade överväganden för AI-arbetsbelastningar i Azure-infrastruktur (IaaS)
Väldefinierade överväganden för AI i Azure-infrastrukturen omfattar metodtips som optimerar ai-lösningarnas tillförlitlighet, säkerhet, driftseffektivitet, kostnadshantering och prestanda. Dessa principer säkerställer robust distribution, säker datahantering, effektiv modelldrift och skalbar infrastruktur på Azures IaaS-plattform. Genom att tillämpa dessa principer kan organisationer skapa motståndskraftiga, säkra och kostnadseffektiva AI-modeller som uppfyller affärsbehoven.
Tillförlitlighet
Tillförlitlighet innebär att minimera stilleståndstiden och säkerställa konsekventa prestanda för AI-program i Azure-infrastrukturen. Att säkerställa tillförlitliga åtgärder mellan distribuerade virtuella datorer (VM) och upprätthålla prestanda under infrastrukturändringar förhindrar tjänstavbrott. Dessa metoder är viktiga eftersom de garanterar kontinuerlig modelltillgänglighet och förbättrar användarupplevelsen.
Distribuera virtuella datorer mellan Tillgänglighetszoner. Minimera driftstopp från maskinvarufel eller underhållshändelser med hjälp av Tillgänglighetszoner. De distribuerar virtuella datorer mellan fel- och uppdateringsdomäner för att säkerställa fortsatt programåtgärd.
Konfigurera hälsoövervakning med Azure Monitor. Spåra PROCESSOR-, minnes- och nätverksprestanda på dina virtuella datorer med Hjälp av Azure Monitor och konfigurera aviseringar för att meddela dig om prestandaförsämring eller fel i infrastrukturen som stöder dina modeller. Mer information finns i Azure Monitor VM Insights.
Automatisera korrigeringar och uppdateringar med rullande instanser. Använd Azure Update Management för att tillämpa korrigeringar löpande, vilket gör att en instans kan uppdateras medan andra fortsätter att hantera trafik, vilket förhindrar stilleståndstid under underhåll.
Design för graciös nedbrytning vid partiella fel. Se till att kärnfunktionerna förblir tillgängliga genom att hantera mindre komplexa AI-modeller eller begränsa specifika funktioner när vissa virtuella datorer blir otillgängliga, vilket ger användarna åtkomst till viktiga tjänster även under avbrott.
Implementera regelbundna säkerhetskopior för nyckeltillgångar. Säkerhetskopiera regelbundet modelldata, träningsdatauppsättningar och konfigurationer för att möjliggöra snabb återställning om det uppstod ett fel, vilket skyddar värdefulla förlopp och data.
Säkerhet
Säkerhet omfattar skyddsåtgärder för att skydda AI-modeller, data och infrastruktur mot obehörig åtkomst och hot. Implementera uppdateringar, övervaka modellintegritet och kontrollera åtkomsten för att förhindra sårbarheter som kan kompromettera känslig information. De här stegen är viktiga för att upprätthålla datasekretess och pålitlighet för AI-lösningar i produktionsmiljöer.
Schemalägg uppdateringar för Azure-resurser. Använd underhållskonfigurationer för att ange specifika uppdateringsscheman för virtuella datorer och tillägg, vilket minskar sårbarhetsperioder.
Korrigera virtuella datorer och containeravbildningar regelbundet. Aktivera automatisk gästkorrigering för virtuella datorer och skalningsuppsättningar för att upprätthålla säkerheten mot nya hot. Mer information finns i Översikt över gästuppdateringar och värdunderhåll.
Övervaka modellavvikelsen och säkerställ integriteten. Säkerställ modellintegriteten genom att implementera säkerhetsmekanismer som digitala signaturer eller hash-verifieringar för modellfiler för att förhindra obehöriga ändringar. Använd Azure Monitor för att spåra viktiga prestandamått och identifiera modellavvikelser, vilket kan tyda på potentiella säkerhetsrisker eller dataskift. Du kan definiera anpassade mått (noggrannhet, F1-poäng och datadistribution på dina modeller) i din kod med hjälp av Azure Monitor Metrics SDK. Med Azure Monitor Metrics SDK kan du skicka modellens prestandastatistik och dataavvikelsemätningar till Azure Monitor. Övervakning av prestandaändringar över tid kan hjälpa till att identifiera när en modells beteende avviker, vilket kan signalera en attack eller ett behov av omträning. Den här proaktiva metoden hjälper till att skydda modellens integritet och upprätthålla säkerhetsefterlevnad.
Implementera gransknings- och åtkomstloggar. Använd Azure Monitor och Log Analytics för att logga åtkomst till modeller och virtuella datorer, vilket hjälper till att identifiera obehörig åtkomst eller ovanliga användningsmönster. Mer information finns i Aktivitetsloggar i Azure Monitor.
Använd versionskontroll för modellfiler. Lagra modellfiler i Azure Storage (blob, fil eller disk) med versionshantering för att spåra ändringar, vilket säkerställer en tydlig spårningslogg för att identifiera och återställa skadliga ändringar. Användning av Azure DevOps för versionskontroll förbättrar säkerheten genom att hantera åtkomsten till kodändringar och framtvinga metodtips i kodgranskningar. Den här skiktade metoden minskar risken för obehöriga ändringar och ger ansvarsskyldighet. Mer information finns i Blob-versionshantering i Azure Storage.
Konfigurera avvikelseidentifiering för modellutdata. Använd Azure Monitor för att spåra utdatamåtten för dina modeller och konfigurera aviseringar för ovanligt beteende. Övervakning av API-svar från din modell kan till exempel hjälpa dig att identifiera onormala utdata. Du kan ange avvikelseidentifiering på ett mått som förutsägelsenoggrannhet för att automatiskt identifiera när det sjunker utanför ett förväntat intervall. Mer information finns i Skapa och hantera måttaviseringar med dynamiska tröskelvärden.
Framtvinga principer för modellåtkomst. Använd rollbaserad åtkomstkontroll i Azure (RBAC) och Microsoft Entra-ID för att skydda åtkomsten till virtuella datorer och modellfiler, vilket begränsar åtkomsten till endast behöriga användare.
Återvalidera regelbundet modeller mot uppdaterade data. Genom att implementera regelbunden förlängning av din modell med hjälp av automatiserade skript eller arbetsflöden på dina virtuella datorer ser du till att modellen förblir korrekt och effektiv mot aktuella datauppsättningar, vilket minskar riskerna från inaktuella eller felaktiga förutsägelser. Genom att schemalägga dessa uppgifter med Azure Automation eller Azure Logic Apps kan du upprätthålla efterlevnaden av datastandarder och förbättra den övergripande modellsäkerheten. Den här proaktiva metoden hjälper till att identifiera sårbarheter tidigt, vilket säkerställer kontinuerlig förbättring och skydd mot potentiella hot. Du kan schemalägga dina automatiseringsarbetsflöden för att regelbundet utlösa återvalideringsuppgifter. Börja med en Azure Automation-runbook, kör på den virtuella datorn, skapa ett lämpligt schema för att få valideringsresultat.
Spåra ändringar av data härkomst och modellfil. Aktivera versionshantering i Azure Blob Storage och spåra data som används i träning och slutsatsdragning, så att inga obehöriga data påverkar modellresultat.
Tillämpa resurskvoter och hastighetsgränser. Implementera hastighetsgränser och kvoter för dina modell-API:er via Azure API Management för att förhindra överanvändning eller missbruk, vilket kan leda till systemsårbarheter eller tjänstavbrott. Den här strategin säkerställer att systemet förblir responsivt under hög trafik och minskar riskerna med överbelastningsattacker. Genom att kontrollera åtkomsten kan du upprätthålla prestanda och skydda känsliga data från potentiellt utnyttjande av API Management-kvoter och -gränser.
Utföra regelbundna sårbarhetsgenomsökningar. Använd Microsoft Defender Sårbarhetsgenomsökning för att utföra sårbarhetsbedömningar av dina virtuella datorer och relaterade resurser. Kontrollera regelbundet om det finns säkerhetsproblem eller felkonfigurationer i konfigurationen av den virtuella datorn som kan exponera dina modeller. Microsoft Defender Sårbarhetsgenomsökning.
Kostnadsoptimering
Kostnadsoptimering innebär att anpassa resursanvändningen till arbetsbelastningskrav för att undvika onödiga utgifter. Rätt storlek på virtuella datorer, incheckning till reserverade instanser och konfiguration av automatisk skalning hjälper till att hantera kostnader utan att äventyra prestanda. Att kontrollera kostnaderna för Azure-infrastrukturen är avgörande för långsiktig hållbarhet och skalbarhet för AI-distributioner.
Checka in till reserverade instanser. Spara på kostnader för virtuella datorer (VM) genom att binda dig till en period på ett eller tre år, som erbjuder rabatterade priser.
Använd Skalningsuppsättningar för virtuella Azure-datorer för automatisk skalning.Skala automatiskt Vm-instanser baserade på mått som CPU-användning, betalar bara för det du behöver och förhindrar överetablering.
Ange automatiska avstängningar för inaktiva instanser. Undvik kostnader från oanvända resurser genom att aktivera automatisk avstängning, särskilt för utvecklings- och testmiljöer.
Använd Azure Savings Plans för förutsägbar användning. Minska kostnaderna jämfört med betala per användning-priser genom att åta sig konsekvent användning i vm-storlekar och regioner.
Använd Azure Spot-instanser för feltoleranta arbetsbelastningar. Få betydande rabatter på outnyttjad kapacitet för arbetsbelastningar som kan tolerera avbrott.
Välj rätt lagringslösning. Balansera kostnader och prestanda baserat på arbetsbelastningsbehov. Välj Azure Managed Lustre (AMLFS) för hög dataflöde, storskaliga program och Azure NetApp Files (ANF) för avancerad datahantering och tillförlitlighet.
Driftsäkerhet
Driftseffektivitet innebär att optimera konfigurationen och hanteringen av Azure-resurser för att förbättra funktionerna i AI-program. Effektiv resursallokering, prestandajustering och distribuerad utbildning stöder smidig drift och anpassning till olika krav. Det här fokuset på driftseffektivitet säkerställer att AI-modeller fungerar som avsett, utan överdriven resursanvändning.
Optimera resursallokering. Granska regelbundet storlekar och konfigurationer för virtuella Azure-datorer baserat på den faktiska resursanvändningen för att matcha arbetsbelastningsbehoven. Använd Azure Advisor för rekommendationer om optimal storleksändring och skalning.
Konfigurera automatisk skalning för effektivitet. Konfigurera automatisk skalning för virtuella datorer eller containrar för att hantera arbetsbelastningskrav utan överetablering. Använd Skalningsuppsättningar för virtuella Azure-datorer för att justera resurser dynamiskt baserat på efterfrågan. Mer information finns i Skalningsuppsättningar för virtuella Azure-datorer.
Utför regelbunden prestandajustering. Profilera programmet kontinuerligt för att identifiera och lösa flaskhalsar i prestanda. Använd Application Insights Profiler för att analysera modellkod och resursanvändning.
Implementera distribuerad utbildning för effektivitet. Använd om tillämpligt distribuerade träningstekniker för att minska träningstiden med hjälp av flera virtuella datorer. Ramverk som Horovod och PyTorch stöder distribuerad utbildning i Azure.
Spara kontrollpunkter i Azure Blob Storage. Spara modelltillstånd, vikter och konfigurationer regelbundet till Azure Blob Storage. Du kan använda Azure SDK:er eller bibliotek som är tillgängliga på det programmeringsspråk som du använder för LLM. Lagra kontrollpunkterna i ett strukturerat format, till exempel TensorFlow SavedModel- eller PyTorch-kontrollpunktsfiler. Ändra din tränings- eller slutsatsdragningskod så att den innehåller kontrollpunktslogik. Börja med att ange intervall (efter varje epok eller vissa iterationer) för att spara modellens tillstånd. Använd en konsekvent namngivningskonvention för kontrollpunktsfiler för att enkelt spåra det senaste tillståndet.
Design för tillståndsåterställning. Se till att programmet kan återställas från en sparad kontrollpunkt. Implementera logik för att läsa in modellens tillstånd från Azure Blob Storage när programmet startar. Den innehåller, söker efter befintliga kontrollpunkter och läser in den senaste kontrollpunkten om den är tillgänglig, vilket gör att programmet kan återupptas utan att förloppet går förlorat.
Prestandaeffektivitet
Prestandaeffektivitet syftar på att maximera bearbetningskraften i Azure-infrastrukturen för att uppfylla KRAVEN för AI-modellen. Du bör justera GPU-inställningarna, optimera I/O-processer (input/output) och köra benchmarking-tester för att förbättra beräkningshastigheten och svarstiden. Att säkerställa höga prestanda stöder körning av komplexa AI-modeller i stor skala, vilket förbättrar användarnöjdheten och minskar svarstiden.
GPU-justering
Öka klockfrekvensen för en grafikprocessor (GPU) för att förbättra prestanda, särskilt för uppgifter som kräver hög grafisk bearbetning eller komplexa beräkningar. Med högre klockhastigheter kan GPU:n utföra fler åtgärder under en viss tidsperiod, vilket ökar den övergripande effektiviteten. Använd det här GPU-optimeringsskriptet för att ange GPU-klockfrekvenserna till deras högsta värden.
- Aktivera accelererat nätverk. Accelererat nätverk är en maskinvaruaccelerationsteknik som gör att virtuella datorer kan använda enkel rot-I/O-virtualisering (SR-IOV) på typer av virtuella datorer som stöds. Det ger lägre svarstid, minskad jitter och minskad CPU-användning. Aktivera accelererat nätverk ger betydande förbättringar i frontend-nätverksprestanda.
I/O-justering
Optimera scratch storage. Scratch måste ha högt dataflöde och låg svarstid. Träningsjobbet kräver att du läser data, bearbetar dem och använder den här lagringsplatsen som ledigt utrymme medan jobbet körs. Vi rekommenderar att du använder den lokala SSD:n direkt på varje virtuell dator. Om du behöver ett delat filsystem för scratch kan en kombination av alla NVMe SSD:er för att skapa ett parallellfilsystem (PFS) vara ett bra alternativ när det gäller kostnader och prestanda, förutsatt att det har tillräckligt med kapacitet. En metod är att använda Azure Managed Lustre. Om Azure Managed Lustre inte är lämpligt kan du utforska lagringsalternativ som Azure NetApp Files eller Azure Native Qumulo.
Implementera kontrollpunktslagring. Stora djupinlärningsträningsjobb kan köras i veckor, beroende på antalet virtuella datorer som används. Precis som alla HPC-kluster kan du stöta på fel, till exempel InfiniBand-problem, dubbla dimm-fel (in-line memory module), felkorrigering av ode-fel (ECC) i GPU-minnet. Det är viktigt att ha en kontrollpunktsstrategi. Känna till kontrollpunktsintervallet (när data sparas). Förstå hur mycket data som överförs varje gång. Ha en lagringslösning som uppfyller kapacitets- och prestandakraven. Använd Blob Storage om det uppfyller prestandabehoven.
Benchmarking-tester
Benchmarking-tester hjälper till att utvärdera och förbättra distribuerade träningsprestanda för djupinlärning på GPU:er, särskilt för storskaliga modeller. Dessa tester mäter effektiviteten i GPU-kommunikation mellan noder, vilket syftar till att minska flaskhalsar i dataöverföring under distribuerad träning. De tre tester som beskrivs är:
- Megatron-ramverk: Stöder storskaliga språkmodeller genom att förbättra effektiviteten för distribuerad träning.
- Testerna NVIDIA Collective Communications Library (NCCL) och ROCm Communication Collectives Library (RCCL): Utvärdera prestanda och noggrannhet i kommunikation med flera GPU:er med hjälp av NCCL- eller RCCL-bibliotek, testmönster som all-reduce och punktdiagram.
Dessa tester säkerställer skalbarhet och optimala prestanda för LLM:er, där Megatron fokuserar på modellträning och NCCL/RCCL på GPU-kommunikation.
NVIDIA Megatron-LM-test
NVIDIA Megatron-LM är ett ramverk med öppen källkod för träning av stora språkmodeller. Det gör det möjligt för utvecklare att skapa massiva neurala nätverk för NLP-uppgifter, med funktioner som:
- Parallellitet: Stöder modell-, data- och pipelineparallellitet för miljardparametermodeller.
- Skalbarhet: Skalar över flera GPU:er och noder för effektiv träning av stora modeller.
- Flexibilitet: Tillåter konfiguration av modellarkitektur, datainläsning och träningsstrategier.
- Optimeringar: Använder NVIDIA GPU-optimeringar för prestandavinster.
Megatron-LM distribueras i Azure HPC-infrastrukturen och använder Azures skalbarhet för stora språkmodeller utan att kräva lokal maskinvara.
Megatron-LM-test har konfigurerats
Distribution av Megatron-LM kräver specifik programvara och maskinvara.
Välj rätt distributionsalternativ. Använd CycleCloud-arbetsytan för Slurm för att förenkla distributionen. Välj NC-serien eller SKU:er i ND-serien för GPU-partitionen. För träning med flera noder rekommenderas SKU:er i ND-serien för RDMA-stöd. Azures HPC Marketplace-avbildningar omfattar vanligtvis dessa drivrutiner och bibliotek. Om anpassning behövs kan lagringsplatsen azhpc-images säkerställa kompatibilitet.
Använd rätt bild. Programvarukraven för projektet omfattar ett Linux-baserat operativsystem, vanligtvis Ubuntu. För kommunikation med flera GPU:er och flera noder är det viktigt att ha kommunikationsbibliotek som NCCL och MPI. Dessutom måste lämpliga NVIDIA-drivrutiner installeras för att säkerställa GPU-acceleration. Azures HPC Marketplace-avbildningar levereras med dessa drivrutiner och bibliotek förinstallerade. Men om anpassning krävs kan lagringsplatsen azhpc-images användas för att säkerställa kompatibilitet.
Megatron-LM-testanvändning
Du bör köra Megatron-LM med den senaste versionen av NGC:s PyTorch-container. Om du vill köra containern mot ett traditionellt Slurm-baserat HPC-kluster måste du installera och konfigurera dessa andra komponenter i klustret:
- enroot: ett verktyg som gör det möjligt för användare att köra containerbaserade program på HPC-kluster utan att kräva rotprivilegier eller ändra värdsystemet.
- pyxis: ett plugin-program för Slurm som möjliggör sömlös integrering av enroot med Slurm, vilket gör det möjligt för användare att skicka containerbaserade jobb till Slurm-köer och köra dem på HPC-noder.
Båda dessa komponenter ingår i CycleCloud-arbetsytan för Slurm , men ingår för närvarande inte i Slurm-kluster som skapas via CycleCloud. Du kan introducera dessa extra komponenter via cluster-init med CycleCloud-projekt. Med dessa krav uppfyllda kan du använda Megatron-LM för LLM-utbildning genom att:
- Verifiera prestanda för klustret: Identifiera eventuella maskinvaruproblem innan du kör arbetsbelastningen med Node Health Checks. Använd NCCL-tester för att verifiera klustrets distribuerade prestanda för alla minskningar.
- Välj dina träningsdata: Använd codeParrot-modellen som utgångspunkt för att verifiera arbetsflödet.
- Förbearbetning av dina data: Använd preprocess_data.py-skriptet på Megatron-LM-lagringsplatsen för att konvertera dina data till ett format som är kompatibelt med Megatron-LM.
- Träning med Megatron-LM: Använd exemplen i Megatron-LM som referens för att konfigurera Megatron för träning.
Den här konfigurationen säkerställer effektiv distribution och träning av stora språkmodeller i Azures infrastruktur.
NCCL-bandbreddstest
Kör NCCL-bandbreddstestet för att verifiera och optimera GPU-kommunikation mellan noder. NCCL-bandbreddstestet är ett specialiserat verktyg inom NCCL, ett bibliotek som underlättar snabb kommunikation mellan GPU:er. NCCL stöder kollektiva åtgärder, inklusive all-reduce, all-gather, reduce, broadcast, and reduce-scatter, across single or multi-GPU nodes, and achieves optimal performance on platforms with PCIe, NVLink, NVswitch, or networking setups like InfiniBand or TCP/IP. Mer information finns i NVIDIA/NCCL-tester.
Prestandamått för NCCL
Använd NCCL-bandbreddstestet för att utvärdera viktiga mått, inklusive tid och bandbredd. "Time" (i millisekunder) mäter omkostnaderna eller svarstiden i åtgärder, vilket gör det användbart för att utvärdera åtgärder med små datastorlekar. "Bandbredd" (i GB/s) utvärderar effektiviteten för punkt-till-punkt-åtgärder, till exempel Skicka/ta emot. "Bussbandbredd" återspeglar maskinvaruanvändningseffektiviteten genom att redovisa kommunikationshastighet mellan GPU:er och flaskhalsar i komponenter som NVLink eller PCI. Beräkningar för olika kollektiva åtgärder tillhandahålls, till exempel AllReduce, ReduceScatter, AllGather, Broadcast och Reduce.
NCCL-testinitiering
Om du vill initiera dessa tester i en CycleCloud-distribution ansluter du till scheduler-noden via SSH och får åtkomst till en GPU-utrustad beräkningsnod. Klona Git-lagringsplatsen för NCCL-tester, navigera till nccl-tests
katalogen och skapa en värdfil med noderna för testning. Hämta scheduler-nodens IP-adress från CycleClouds webbapp.
NCCL-testargument
Innan du kör tester anger du olika argument , till exempel antalet GPU:er per tråd (-g
), datastorleksintervall (-b
för minsta byte och -e
för maximalt antal byte), stegsteg (-i
eller -f
), minskningsåtgärdstyp (-o
), datatyp (-d
), rotenhet (-r
), iterationsantal (-n
), uppvärmningsantal (-w
) och CUDA-grafinställningar (-G
). Se NCCL-testdokumentationen för en fullständig lista över justerbara parametrar.
RCCL-tester
ROCm Communication Collectives Library (RCCL) är ett specialiserat bibliotek som är utformat för effektiv kommunikation mellan AMD-GPU:er. Den tillhandahåller kollektiva åtgärder som all-reduce, all-gather, broadcast och reduce, som stöder både GPU-kommunikation mellan noder och intranoder. RCCL är optimerat för plattformar med PCIe- och nätverkstekniker som InfiniBand och garanterar skalbar dataöverföring i miljöer med flera GPU:er. Den stöder integrering i både arbetsflöden med en och flera processer, till exempel de som använder MPI. Mer information finns i ROCm Communication Collectives Library
- Konfigurera miljö. Installera ROCm och se till att RCCL är korrekt installerat på alla noder.
- Skapa RCCL-tester. Klona lagringsplatsen, navigera till katalogen rccl-tests och kompilera testerna.
- Kör bandbreddstester. Använd de angivna körbara testerna (rccl-tests) och ange kommunikationsåtgärder som all-reduce.
- Analysera prestanda. Jämför bandbredds- och svarstidsresultat mellan noder och GPU:er.