Designprinciper för AI-arbetsbelastningar i Azure
Den här artikeln beskriver huvudprinciperna för AI-arbetsbelastningar i Azure, med fokus på AI-aspekterna i en arkitektur. Det är viktigt att beakta alla Azure Well-Architected Framework-pelare tillsammans, inklusive deras kompromisser. Tillämpa varje pelare på de funktionella och icke-funktionella kraven för arbetsbelastningen.
Tillförlitlighet
När du kör AI-arbetsbelastningar i Azure måste du överväga många av de tillförlitlighetskrav som du överväger för andra typer av arbetsbelastningar. Specifika överväganden för modellträning, värdtjänster och slutsatsdragning är dock särskilt viktiga och är fokus i den här artikeln. Det är viktigt att integrera dessa metoder med bästa praxis för standarddesign för molnprogram, som även gäller för AI-arbetsbelastningar.
Granska principer för tillförlitlighetsdesign för att få en grundläggande förståelse för de begrepp som beskrivs här.
Designprincip | Att tänka på |
---|---|
Minimera enskilda felpunkter. | Att förlita sig på en enda instans för kritiska komponenter kan leda till betydande problem. Skapa redundans i alla kritiska komponenter för att förhindra den här typen av problem. Använd plattformar som har inbyggd feltolerans och funktioner med hög tillgänglighet och implementera redundans genom att distribuera flera instanser eller noder. |
Utföra analys av felläge. Dra nytta av välkända designmönster. |
Analysera regelbundet möjliga fellägen i systemkomponenterna och skapa motståndskraft mot dessa fel. Använd välkända designmönster för att isolera delar av systemet och förhindra sammanhängande fel. Mönstret Bulkhead kan till exempel hjälpa till att isolera fel, och återförsöksmekanismer och kretsbrytare kan hantera tillfälliga fel som strypta förfrågningar. |
Balansera tillförlitlighetsmål mellan beroende komponenter. | Se till att slutpunkten eller modellen för slutsatsdragning och datalagret är justerade när det gäller tillförlitlighet. Programkomponenter måste vara tillgängliga även under oväntade förhållanden, till exempel en ökning av samtidiga användare. Dessutom bör systemet kunna växla över till reservsystem vid fel. Om en komponent misslyckas påverkar den andra komponentens tillförlitlighet. På samma sätt bör API:er på tjänstnivå, som är kritiska produktionsresurser, följa samma tillförlitlighetsstandarder som andra högkritiska arbetsbelastningsflöden. Om dessa API:er kräver hög tillgänglighet måste värdplattformen ha stöd för tillgänglighetszoner eller en design för flera regioner för att säkerställa kontinuerlig drift och återhämtning. |
Design för drifttillförlitlighet. | Upprätthålla tillförlitligheten för modellsvar genom att se till att uppdateringarna är frekventa och aktuella. Bestäm om du vill använda nyligen använda data eller något äldre data och balansera behovet av up-to-date-information med den praktiska uppdateringsfrekvensen. Du bör automatisera onlineträningen på grund av dess krav på frekvens och tillförlitlighet. Offlineträning kan motiveras genom en kostnads-nyttoanalys. Du kan använda billigare resurser för offlineträning. |
Design för en tillförlitlig användarupplevelse. | Använd belastningstestning för att utvärdera hur din arbetsbelastning hanterar stress och utforma användargränssnittet för att hantera användarnas förväntningar på svarstider. Implementera gränssnittselement som informerar användarna om potentiella väntetider och anta asynkrona molndesignprinciper för att hantera intermittens, svarstid eller fel. |
Säkerhet
Modeller använder ofta känsliga produktionsdata för att ge relevanta resultat. Därför måste du implementera robusta säkerhetsåtgärder i alla skikt i arkitekturen. Dessa åtgärder omfattar implementering av säker programdesign tidigt i livscykeln, kryptering av data både i vila och under överföring samt efterlevnadsstandarder för branschen. Regelbundna säkerhetsbedömningar är avgörande för att identifiera och minimera sårbarheter. Avancerade mekanismer för hotidentifiering hjälper till att säkerställa snabba svar på potentiella hot.
Säkerhetsprinciper är grundläggande för att skydda dataintegritet, designintegritet och användarsekretess i AI-lösningar. Som arbetsbelastningsägare ansvarar du för att skapa förtroende och skydda känslig information för att säkerställa en säker användarupplevelse.
Designprincip | Att tänka på |
---|---|
Få användarförtroende. | Integrera innehållssäkerhet i varje steg i livscykeln med hjälp av anpassad kod, verktyg och effektiva säkerhetskontroller. Ta bort onödig personlig och konfidentiell information på alla datalagringsplatser, inklusive aggregerade datalager, sökindex, cacheminnen och program. Upprätthålla den här säkerhetsnivån konsekvent i hela arkitekturen. Se till att implementera noggrann innehållsmoderering som inspekterar data i båda riktningarna och filtrerar bort olämpligt och stötande innehåll. |
Skydda data i vila, vid överföring, och i användning enligt arbetsbelastningens känslighetskrav. | Använd åtminstone kryptering på plattformsnivå med Microsoft-hanterade eller kundhanterade nycklar i alla datalager i arkitekturen. Ta reda på var du behöver högre krypteringsnivåer och använd dubbel kryptering om du behöver det. Kontrollera att all trafik använder HTTPS för kryptering. Fastställ TLS-avslutningspunkterna vid varje hopp. Själva modellen måste skyddas för att förhindra att angripare extraherar känslig information som används under träningen. Modellen kräver den högsta nivån av säkerhetsåtgärder. Överväg att använda homomorfisk kryptering som tillåter slutsatsdragning på krypterade data. |
Investera i robust åtkomsthantering för identiteter (användare och system) som har åtkomst till systemet. | Implementera rollbaserad åtkomstkontroll (RBAC) och/eller attributbaserad åtkomstkontroll (ABAC) för både kontroll- och dataplan. Upprätthålla rätt identitetssegmentering för att skydda sekretessen. Tillåt endast åtkomst till innehåll som identiteter har behörighet att visa. |
Skydda designens integritet genom att implementera segmentering. | Ange privata nätverk för åtkomst till centraliserade lagringsplatser för containeravbildningar, data och kodtillgångar. När du delar infrastruktur med andra arbetsbelastningar skapas segmentering, till exempel när du är värd för din slutsatsdragningsserver i Azure Kubernetes Service, isolera nodpoolen från andra API:er och arbetsbelastningar. |
Utför säkerhetstestning. | Utveckla en detaljerad testplan som innehåller tester för att identifiera oetiskt beteende när ändringar introduceras i systemet. Integrera AI-komponenter i din befintliga säkerhetstestning. Införliva till exempel slutpunkten för slutsatsdragning i dina rutintester tillsammans med andra offentliga slutpunkter. Överväg att utföra tester på livesystemet, till exempel intrångstester eller röda teamövningar, för att identifiera och åtgärda potentiella sårbarheter på ett effektivt sätt. |
Minska attackytan genom att tillämpa strikt användaråtkomst och API-design. | Kräv autentisering för alla slutpunkter för slutsatsdragning, inklusive system-till-system-anrop. Undvik anonyma slutpunkter. Föredrar begränsad API-design på bekostnad av flexibilitet på klientsidan. |
kompromiss. Implementering av de högsta säkerhetsnivåerna medför kompromisser i kostnad och noggrannhet eftersom möjligheten att analysera, inspektera eller logga krypterade data är begränsad. Innehållssäkerhetskontroller och att uppnå förklaring kan också vara utmanande i miljöer med hög säkerhet.
Följande designområden innehåller information om de föregående principerna och övervägandena:
Kostnadsoptimering
Målet med grundpelare för kostnadsoptimering är att maximera investeringarna, inte nödvändigtvis att minska kostnaderna. Varje arkitekturval skapar både direkta och indirekta ekonomiska effekter. Förstå de kostnader som är kopplade till olika alternativ, till exempel bygg- och köpbeslut, teknikval, faktureringsmodeller, licensiering, utbildning och driftskostnader. Det är viktigt att maximera din investering på den valda nivån och kontinuerligt utvärdera faktureringsmodellerna på nytt. Utvärdera kontinuerligt kostnader som är associerade med ändringar i arkitektur, affärsbehov, processer och teamstruktur.
Granska principerna för kostnadsoptimering, med fokus på frekvens- och användningsoptimering.
Designprincip | Att tänka på |
---|---|
Fastställa kostnadsdrivande faktorer genom att utföra en omfattande kostnadsmodelleringsövning. | Tänk på de viktigaste faktorerna för data- och programplattformen: - Datavolym. Beräkna mängden data som du ska indexera och bearbeta. Större volymer kan öka kostnaderna för lagring och bearbetning. - Antal frågor. Förutsäga frekvensen och komplexiteten för frågor. Högre frågevolymer kan öka kostnaderna, särskilt om frågorna kräver betydande beräkningsresurser. - Dataflöde. Utvärdera det förväntade dataflödet för att avgöra vilken prestandanivå du behöver. Högre dataflödeskrav kan leda till högre kostnader. - Beroendekostnader. Förstå att det kan finnas dolda kostnader i beroenden. När du till exempel beräknar kostnaden för indexering inkluderar du kostnaden för kunskapsuppsättningen, som är en del av databehandlingen men utanför indexomfånget. |
Betala för det du tänker använda. | Välj en tekniklösning som uppfyller dina behov utan onödiga utgifter. Om du inte behöver avancerade funktioner bör du överväga billigare alternativ och verktyg med öppen källkod. Ta hänsyn till användningsfrekvensen. Föredrar elastiska beräkningsalternativ för orkestreringsverktyg för att minimera användningskostnaderna, eftersom de alltid på. Undvik serverlös beräkning för heltidsåtgärder eftersom det kan eskalera kostnaderna. Betala inte för högre nivåer utan att använda dess fulla kapacitet. Se till att den valda nivån överensstämmer med dina produktionsanvändningsmönster för att optimera utgifterna. Använd standardpriser för vanliga uppgifter och spotpriser för mycket avbrottsbar utbildning. För att minska kostnaderna använder du endast GPU-baserad beräkning för AI-arbetsbelastningsfunktioner. Testa och utvärdera omfattande din träning och finjustering för att hitta den SKU som bäst balanserar prestanda och kostnader. |
Använd det du betalar för. Minimera avfall. | Övervaka användningsstatistik noga. AI-arbetsbelastningar kan vara dyra och kostnaderna kan eskalera snabbt om resurserna inte stängs av, skalas ned eller frigörs när de inte används. Optimera systemet för att skriva en gång, läs många för att undvika överförbrukning på datalagring. Träningsdata kräver inte omedelbar svarstid för en produktionsdatabas. Stresstestning av en slutpunkt för Azure OpenAI-tjänstens slutsatsdragning kan vara dyrt eftersom varje anrop medför avgifter. För att minska kostnaderna använder du oanvända PTUs för OpenAI-tjänsten i en testmiljö eller simulerar slutpunkten för slutsatsdragning i stället. Uppgifter som undersökande dataanalys (EDA), modellträning och finjustering körs vanligtvis inte på heltid. För dessa uppgifter föredrar du en plattform som kan stoppas när den inte används. Till exempel är EDA-jobb vanligtvis interaktiva, så användarna måste kunna starta virtuella datorer och stoppa dem när de kör jobb. Tilldela kostnadsansvar till operationsteam. Dessa team bör se till att kostnaderna håller sig inom förväntade parametrar genom att aktivt övervaka och hantera resursutnyttjande. |
Optimera driftskostnader. | Onlineträning kan vara dyrt på grund av dess frekvenskrav. Att automatisera den här processen hjälper till att upprätthålla konsekvens och minimerar kostnaden för mänskliga fel. Dessutom kan användning av något äldre data för träning och fördröjning av uppdateringar när det är möjligt ytterligare minska kostnaderna utan att avsevärt påverka modellens noggrannhet. För offlineträning utvärderar du om billigare resurser kan användas, till exempel offlinemaskinvara. I allmänhet tar du bort data från funktionslager för att minska oredan och lagringskostnaderna för funktioner. |
kompromiss: Kostnadsoptimering och prestandaeffektivitet. Att balansera kostnader med prestanda i databashantering innebär kompromisser. Effektiv indexdesign påskyndar frågor men kan öka kostnaderna på grund av metadatahantering och indexstorlek. På samma sätt kan partitionering av stora tabeller förbättra frågeprestanda och minska lagringsbelastningen, men det medför ytterligare kostnader. Omvänt kan tekniker som undviker överdriven indexering minska kostnaderna, men som kan påverka prestanda om de inte hanteras korrekt.
Kompromiss: Kostnadsoptimering och driftseffektivitet. Det finns kompromisser att tänka på när du bestämmer vilka av de två primära metoderna som ska användas för modellträning. Träning i utvecklingsmiljön med fullständiga produktionsdata kan minska beräkningskostnaderna eftersom modellen endast tränas en gång och endast artefakten befordras. Den här metoden kräver dock stränga säkerhetsåtgärder för hantering av produktionsdata i lägre miljöer, vilket kan vara komplext och resursintensivt. Omvänt förbättrar träning av modellen i varje miljö stabilitet och tillförlitlighet på grund av noggrann kodgranskning och testning, men den här modellen ökar beräkningskostnaderna eftersom träningskörningar sker flera gånger.
Driftseffektivitet
Det främsta målet med operational excellence är att leverera funktioner effektivt under hela utvecklingslivscykeln. Att uppnå det här målet innebär att upprätta repeterbara processer som stöder designmetoden för experimentering och ger resultat för att förbättra modellens prestanda. Operational Excellence handlar också om att upprätthålla noggrannheten i modeller över tid, implementera effektiva övervakningsmetoder och styrning för att minimera risker och utveckla förändringshanteringsprocesser för att anpassa sig till modellavvikelser.
Även om alla operational excellence-principer tillämpas på AI-arbetsbelastningar, prioriterar du automatisering och övervakning som dina grundläggande operativa strategier.
Designprincip | Att tänka på |
---|---|
Främja ett kontinuerligt tankesätt för inlärning och experiment under hela livscykeln för programutveckling, datahantering och AI-modellhantering. | Arbetsbelastningsåtgärder bör bygga på branschbeprövade metoder som DevOps, DataOps, MLOps och GenAIOps. Tidigt samarbete mellan åtgärder, programutveckling och datateam är viktigt för att skapa en ömsesidig förståelse för godtagbara modellprestanda. Driftteamen tillhandahåller kvalitetssignaler och åtgärdsbara aviseringar. Program- och datateam hjälper till att diagnostisera och lösa problem effektivt. |
Välj tekniker som minimerar driftbelastningen. | När du väljer plattformslösningar föredrar du Plattform som en tjänst (PaaS) framför lokalt installerade alternativ för att förenkla design, automatisera arbetsflödesorkestrering och göra dag-2-åtgärder enklare. |
Skapa ett automatiserat övervakningssystem som stöder aviseringsfunktioner, inklusive loggning och granskning. | Med tanke på AI:s icke-terministiska karaktär är det viktigt att etablera kvalitetsmätningar tidigt i livscykeln. Arbeta med dataexperter för att definiera kvalitetsmått. Visualisera pågående insikter i omfattande dashboards. Spåra experiment med hjälp av verktyg som kan samla in information som kodversioner, miljöer, parametrar, körningar och resultat. Implementera åtgärdsbara aviseringar som ger tillräckligt med information för att operatörerna ska kunna svara snabbt. |
Automatisera identifiering och minskning av modellförfall. | Använd automatiserade tester för att utvärdera drift över tid. Se till att ditt övervakningssystem skickar aviseringar när svar börjar avvika från de förväntade resultaten och börja göra det regelbundet. Använd verktyg som automatiskt kan identifiera och uppdatera nya modeller. Vid behov kan du anpassa dig till nya användningsfall genom att justera databehandling och modellträningslogik. |
Implementera säkra distributioner. | Välj mellan distributioner sida vid sida eller uppdateringar på plats för att minimera stilleståndstiden. Implementera noggrann testning före distribution för att säkerställa att modellen är korrekt konfigurerad och uppfyller mål, användarförväntningar och kvalitetsstandarder. Planera alltid för nödåtgärder, oavsett distributionsstrategi. |
Utvärdera kontinuerligt användarupplevelsen i produktion. | Gör det möjligt för arbetsbelastningsanvändare att ge feedback om sin upplevelse. Få medgivande att dela en del av eller alla deras konversationer i en associerad logg för felsökning. Tänk på hur mycket av en användarinteraktion som är livskraftig, kompatibel, säker och användbar för att samla in och använda data flitigt för att utvärdera arbetsbelastningens prestanda med verkliga användarinteraktioner. |
Följande designområden innehåller information om de föregående principerna och övervägandena:
Prestandaeffektivitet
Målet med prestandautvärdering av AI-modeller är att avgöra hur effektivt en modell utför sina avsedda uppgifter. Att uppnå det här målet handlar om att utvärdera olika mått, till exempel noggrannhet, precision och rättvisa. Dessutom är prestandan för de plattforms- och programkomponenter som stöder modellen avgörande.
Modellprestanda påverkas också av effektiviteten i åtgärder som experimentspårning och databehandling. Genom att tillämpa principer för prestandaeffektivitet kan du mäta prestanda mot en acceptabel kvalitetsindikator. Den här jämförelsen är nyckeln till att identifiera nedbrytning eller sönderfall. För att upprätthålla arbetsbelastningen, inklusive AI-komponenter, behöver du automatiserade processer för kontinuerlig övervakning och utvärdering.
Designprincip | Att tänka på |
---|---|
Upprätta prestandamått. | Utför rigorösa prestandatester inom olika arkitekturområden och ange godtagbara mål. Den här pågående utvärderingen bör vara en del av dina operativa processer, inte ett engångstest. Benchmarking gäller för förutsägelseprestanda. Börja med en baslinje för att förstå den inledande modellprestandan och kontinuerligt omvärdera prestanda för att säkerställa att den uppfyller förväntningarna. |
Utvärdera resursbehov för att uppfylla prestandamål. | Förstå belastningsegenskaper för att välja rätt plattform och rätt storlek på resurser. Ta hänsyn till dessa data för att kapacitetsplaneringen ska fungera i stor skala. Använd till exempel belastningstestning för att fastställa den optimala beräkningsplattformen och SKU:n. GPU-optimerad beräkning med höga prestanda behövs ofta för modellträning och finjustering, men allmänna SKU:er är lämpliga för orkestreringsverktyg. På samma sätt väljer du en dataplattform som effektivt hanterar datainmatning, hanterar samtidiga skrivningar och upprätthåller individuella skrivprestanda utan försämring. Olika slutsatsdragningsservrar har olika prestandaegenskaper. Dessa egenskaper påverkar modellprestanda vid körning. Välj en server som uppfyller baslinjeförväntningarna. |
Samla in och analysera prestandamått och identifiera flaskhalsar. |
Utvärdera telemetri från datapipelinen för att säkerställa att prestandamålen för dataflödes- och läs-/skrivåtgärder uppfylls. För sökindexet bör du överväga mått som frågesvarstid, dataflöde och resultatets noggrannhet. När datavolymen ökar bör felfrekvensen inte öka. Analysera telemetri från kodkomponenter, till exempel orchestrator, som samlar in data från tjänstanrop. Genom att analysera dessa data kan du förstå den tid som ägnas åt lokal bearbetning jämfört med nätverksanrop och identifiera potentiella svarstider i andra komponenter. Utvärdera användargränssnittsupplevelsen med hjälp av engagemangsmått för att avgöra om användarna är positivt engagerade eller frustrerade. Ökad tid på en sida kan indikera något av dem. Multimodala funktioner, till exempel röst- eller videosvar, kan orsaka betydande svarstider, vilket leder till längre svarstider. |
Förbättra prestandan kontinuerligt med hjälp av kvalitetsmätningar från produktion. | Implementera automatiserad insamling och analys av prestandamått, aviseringar och modellträning för att upprätthålla modellens effektivitet. |
Kompromiss. När du överväger plattformsfunktioner måste du balansera kostnader och prestanda. GPU-SKU:er är till exempel dyra, så övervaka kontinuerligt för underutnyttjande och rätt storlek efter behov. Efter justeringar testar du resursutnyttjandet för att säkerställa en balans mellan kostnaden för plattformsresurser och deras åtgärder och den förväntade prestandan, vilket anges av baslinjen. Information om strategier för kostnadsoptimering finns i rekommendationer för att optimera komponentkostnader.
Följande designområden innehåller information om de föregående principerna och övervägandena: