Azure Well-Architected Framework-perspektiv på Azure OpenAI Service
Azure OpenAI-tjänsten ger REST API-åtkomst till OpenAI-modeller med stora språk (LLM) och lägger till Azure-nätverks- och säkerhetsfunktioner. Den här artikeln innehåller arkitekturrekommendationer som hjälper dig att fatta välgrundade beslut när du använder Azure OpenAI som en del av arbetsbelastningens arkitektur. Vägledningen baseras på grundpelarna i Azure Well-Architected Framework.
Viktigt!
Så här använder du den här guiden
Varje avsnitt har en checklista för design som presenterar arkitekturområden som är viktiga tillsammans med designstrategier som är lokaliserade till teknikomfånget.
Dessutom ingår rekommendationer om de teknikfunktioner som kan hjälpa till att materialisera dessa strategier. Rekommendationerna representerar inte en fullständig lista över alla konfigurationer som är tillgängliga för Azure OpenAI och dess beroenden. I stället listar de de viktigaste rekommendationerna som mappats till designperspektiven. Använd rekommendationerna för att skapa ditt konceptbevis eller optimera dina befintliga miljöer.
Grundläggande arkitektur som visar de viktigaste rekommendationerna: Referensarkitektur för OpenAI från slutpunkt till slutpunkt.
Teknikomfång
Den här granskningen fokuserar enbart på Azure OpenAI.
Tillförlitlighet
Syftet med grundpelarna för tillförlitlighet är att tillhandahålla fortsatt funktionalitet genom att skapa tillräckligt med motståndskraft och möjlighet att snabbt återhämta sig från fel.
Designprinciperna för tillförlitlighet ger en övergripande designstrategi som tillämpas för enskilda komponenter, systemflöden och systemet som helhet.
Checklista för design
Starta din designstrategi baserat på checklistan för designgranskning för tillförlitlighet. Fastställ dess relevans för dina affärskrav. Utöka strategin till att omfatta fler metoder efter behov.
Återhämtning: Välj lämpligt distributionsalternativ för antingen betala per användning eller etablerat dataflöde baserat på ditt användningsfall. Eftersom reserverad kapacitet ökar återhämtningsförmågan väljer du etablerat dataflöde för produktionslösningar. Metoden betala per användning är perfekt för utvecklings-/testmiljöer.
Redundans: Lägg till lämpliga gatewayer framför dina Azure OpenAI-distributioner. Gatewayen måste ha möjlighet att motstå tillfälliga fel som begränsning och även dirigera till flera Azure OpenAI-instanser. Överväg att dirigera till instanser i olika regioner för att skapa regional redundans.
Återhämtning: Om du använder etablerat dataflöde bör du även distribuera en betala per användning-instans för att hantera spill. Du kan dirigera anrop till instansen betala per användning via din gateway när din etablerade dataflödesmodell begränsas.
Återhämtning: Övervaka kapacitetsanvändningen för att säkerställa att du inte överskrider dataflödesgränserna. Granska regelbundet kapacitetsanvändningen för att få mer exakta prognoser och förhindra avbrott i tjänsten på grund av kapacitetsbegränsningar.
Återhämtning: Följ riktlinjerna för finjustering med stora datafiler och importera data från ett Azure-bloblager. Stora filer, 100 MB eller större, kan bli instabila när de laddas upp via formulär med flera delar eftersom begäranden är atomiska och inte kan försökas igen eller återupptas.
Återställning: Definiera en återställningsstrategi som innehåller en återställningsplan för modeller som är finjusterade och för träningsdata som laddats upp till Azure OpenAI. Eftersom Azure OpenAI inte har automatisk redundans måste du utforma en strategi som omfattar hela tjänsten och alla beroenden, till exempel lagring som innehåller träningsdata.
Rekommendationer
Rekommendation | Förmån |
---|---|
Övervaka hastighetsgränser för betala per användning: Om du använder metoden betala per användning hanterar du prisgränser för dina modelldistributioner och övervakar användningen av token per minut (TPM) och begäranden per minut (RPM). | Den här viktiga dataflödesinformationen innehåller information som krävs för att säkerställa att du tilldelar tillräckligt med TPM från din kvot för att möta efterfrågan på dina distributioner. Om du tilldelar tillräckligt med kvot förhindras begränsning av anrop till dina distribuerade modeller. |
Övervaka etableringshanterad användning för etablerat dataflöde: Övervaka etableringshanterad användning om du använder den etablerade dataflödesbetalningsmodellen. | Det är viktigt att övervaka etableringshanterad användning för att säkerställa att den inte överskrider 100 %, för att förhindra begränsning av anrop till dina distribuerade modeller. |
Aktivera funktionen för dynamisk kvot: Om din arbetsbelastningsbudget stöder den utför du överetablering genom att aktivera dynamisk kvot för modelldistributioner. | Med dynamisk kvot kan distributionen förbruka mer kapacitet än vad din kvot normalt gör, så länge det finns tillgänglig kapacitet ur ett Azure-perspektiv. Extra kvotkapacitet kan potentiellt förhindra oönskade begränsningar. |
Justera innehållsfilter: Justera innehållsfilter för att minimera falska positiva identifieringar från alltför aggressiva filter. | Innehållsfilter blockerar uppmaningar eller slutföranden baserat på en ogenomskinlig riskanalys. Se till att innehållsfilter är inställda för att tillåta förväntad användning för din arbetsbelastning. |
Säkerhet
Syftet med säkerhetspelare är att tillhandahålla garantier för konfidentialitet, integritet och tillgänglighet för arbetsbelastningen.
Principerna för säkerhetsdesign ger en övergripande designstrategi för att uppnå dessa mål genom att tillämpa metoder för den tekniska designen kring Azure OpenAI.
Checklista för design
Starta din designstrategi baserat på checklistan för designgranskning för Säkerhet och identifiera sårbarheter och kontroller för att förbättra säkerhetsstatusen. Granska sedan Azure-säkerhetsbaslinjen för Azure OpenAI. Slutligen utökar du strategin till att omfatta fler metoder efter behov.
Skydda konfidentialitet: Om du laddar upp träningsdata till Azure OpenAI använder du kundhanterade nycklar för datakryptering, implementerar en strategi för nyckelrotation och tar bort tränings-, validerings- och träningsresultatdata. Om du använder ett externt datalager för träningsdata följer du rekommenderade säkerhetsmetoder för det lagret. För Azure Blob Storage använder du till exempel kundhanterade nycklar för kryptering och implementerar en strategi för nyckelrotation. Använd hanterad identitetsbaserad åtkomst, implementera en nätverksperimeter med hjälp av privata slutpunkter och aktivera åtkomstloggar.
Skydda konfidentialitet: Skydda mot dataexfiltrering genom att begränsa de utgående URL:er som Azure OpenAI-resurser kan komma åt.
Skydda integritet: Implementera åtkomstkontroller för att autentisera och auktorisera användaråtkomst till systemet med hjälp av principen med lägsta behörighet och genom att använda enskilda identiteter i stället för nycklar.
Skydda integriteten: Implementera riskidentifiering för jailbreak för att skydda distributioner av språkmodeller mot snabba inmatningsattacker.
Skydda tillgänglighet: Använd säkerhetskontroller för att förhindra attacker som kan uttömma modellanvändningskvoter. Du kan konfigurera kontroller för att isolera tjänsten i ett nätverk. Om tjänsten måste vara tillgänglig från Internet kan du överväga att använda en gateway för att blockera misstänkt missbruk med hjälp av routning eller begränsning.
Rekommendationer
Rekommendation | Förmån |
---|---|
Säkra nycklar: Om din arkitektur kräver Azure OpenAI-nyckelbaserad autentisering lagrar du nycklarna i Azure Key Vault, inte i programkoden. | Om du separerar hemligheter från kod genom att lagra dem i Key Vault minskar risken för att hemligheter läcker. Separation underlättar också central hantering av hemligheter, vilket underlättar ansvarsområden som nyckelrotation. |
Begränsa åtkomst: Inaktivera offentlig åtkomst till Azure OpenAI om inte din arbetsbelastning kräver det. Skapa privata slutpunkter om du ansluter från konsumenter i ett virtuellt Azure-nätverk. | Genom att kontrollera åtkomsten till Azure OpenAI kan du förhindra attacker från obehöriga användare. Att använda privata slutpunkter säkerställer att nätverkstrafiken förblir privat mellan programmet och plattformen. |
Microsoft Entra-ID: Använd Microsoft Entra-ID för autentisering och för att auktorisera åtkomst till Azure OpenAI med hjälp av rollbaserad åtkomstkontroll (RBAC). Inaktivera lokal autentisering i Azure AI Services och ange disableLocalAuth till true . Bevilja identiteter som utför slutföranden eller bildgenerering av Cognitive Services OpenAI-användarrollen . Bevilja modellautomatiseringspipelines och ad hoc-datavetenskap åtkomst till en roll som Cognitive Services OpenAI-deltagare. |
Med Microsoft Entra ID centraliseras identitetshanteringskomponenten och användningen av API-nycklar elimineras. Om du använder RBAC med Microsoft Entra ID ser du till att användare eller grupper har exakt de behörigheter de behöver för att utföra sitt jobb. Den här typen av detaljerad åtkomstkontroll är inte möjlig med Azure OpenAI API-nycklar. |
Använd kundhanterade nycklar: Använd kundhanterade nycklar för finjusterade modeller och träningsdata som laddas upp till Azure OpenAI. | Med hjälp av kundhanterade nycklar får du större flexibilitet att skapa, rotera, inaktivera och återkalla åtkomstkontroller. |
Skydda mot jailbreak-attacker: Använd Azure AI Content Safety Studio för att identifiera jailbreak-risker. | Identifiera jailbreak-försök att identifiera och blockera uppmaningar som försöker kringgå säkerhetsmekanismerna för dina Azure OpenAI-distributioner. |
Kostnadsoptimering
Kostnadsoptimering fokuserar på att identifiera utgiftsmönster, prioritera investeringar inom kritiska områden och optimera i andra för att uppfylla organisationens budget samtidigt som affärskraven uppfylls.
Läs designprinciperna för kostnadsoptimering för att lära dig mer om metoder för att uppnå dessa mål och de kompromisser som krävs i tekniska designval relaterade till Azure OpenAI.
Checklista för design
Starta din designstrategi baserat på checklistan för designgranskning för kostnadsoptimering för investeringar. Finjustera designen så att arbetsbelastningen överensstämmer med den allokerade budgeten. Din design bör använda lämpliga Azure-funktioner, övervaka investeringar och hitta möjligheter att optimera över tid.
Kostnadshantering: Utveckla din kostnadsmodell med tanke på snabbstorlekar. Genom att förstå storlekarna för snabbinmatning och svar och hur text översätts till token kan du skapa en fungerande kostnadsmodell.
Användningsoptimering: Börja med betala per användning-priser för Azure OpenAI tills din tokenanvändning är förutsägbar.
Frekvensoptimering: När din tokenanvändning är tillräckligt hög och förutsägbar under en viss tidsperiod använder du prismodellen för etablerat dataflöde för bättre kostnadsoptimering.
Användningsoptimering: Överväg modellpriser och funktioner när du väljer modeller. Börja med mindre kostsamma modeller för mindre komplexa uppgifter som textgenerering eller slutförandeaktiviteter. Överväg att använda mer avancerade modeller för mer komplexa uppgifter som språköversättning eller innehållstolkning. Överväg olika modellfunktioner och maximala gränser för tokenanvändning när du väljer en modell som är lämplig för användningsfall som textinbäddning, bildgenerering eller transkriptionsscenarier. Genom att noggrant välja den modell som bäst passar dina behov kan du optimera kostnaderna samtidigt som du uppnår önskad programprestanda.
Användningsoptimering: Använd de tokenbegränsningsbegränsningar som erbjuds av API-anropen, till exempel
max_tokens
ochn
, som anger antalet slutföranden som ska genereras.Användningsoptimering: Maximera prisbrytpunkter i Azure OpenAI, till exempel finjustering och modellbrytpunkter som bildgenerering. Eftersom finjustering debiteras per timme kan du använda så mycket tid som du har tillgängligt per timme för att förbättra finjusteringsresultatet samtidigt som du undviker att glida in i nästa faktureringsperiod. På samma sätt är kostnaden för att generera 100 bilder samma som kostnaden för 1 bild. Maximera pris brytpunkter till din fördel.
Användningsoptimering: Ta bort oanvända finjusterade modeller när de inte längre används för att undvika löpande värdavgifter.
Justera användningen: Optimera promptens indata och svarslängd. Längre uppmaningar ökar kostnaderna genom att använda fler token. Uppmaningar som saknar tillräcklig kontext hjälper dock inte modellerna att ge bra resultat. Skapa koncisa frågor som ger tillräckligt med kontext för modellen för att generera ett användbart svar. Se också till att du optimerar gränsen för svarslängden.
Kostnadseffektivitet: Batch-begäranden där det är möjligt för att minimera kostnaderna per anrop, vilket kan minska de totala kostnaderna. Se till att du optimerar batchstorleken.
Kostnadseffektivitet: Eftersom modeller har olika finjusteringskostnader bör du överväga dessa kostnader om lösningen kräver finjustering.
Övervaka och optimera: Konfigurera ett kostnadsspårningssystem som övervakar modellanvändningen. Använd den informationen för att informera modellval och promptstorlekar.
Rekommendationer
Rekommendation | Förmån |
---|---|
Utforma klientkod för att ange gränser: Dina anpassade klienter bör använda gränsfunktionerna i API:et för Azure OpenAI-slutföranden, till exempel maximal gräns för antalet token per modell (max_tokens ) eller antalet slutföranden till generering (n ). Om du anger gränser ser du till att servern inte genererar mer än vad klienten behöver. |
Användning av API-funktioner för att begränsa användningen justerar tjänstförbrukningen med klientens behov. Detta sparar pengar genom att se till att modellen inte genererar ett alltför långt svar som förbrukar fler token än nödvändigt. |
Övervaka användningsbaserad användning: Om du använder metoden betala per användning övervakar du användningen av TPM och RPM. Använd den informationen för att informera arkitekturens designbeslut, till exempel vilka modeller som ska användas och för att optimera promptstorlekar. | Kontinuerlig övervakning av TPM och RPM ger dig relevanta mått för att optimera kostnaden för Azure OpenAI-modeller. Du kan koppla den här övervakningen till modellfunktioner och modellpriser för att optimera modellanvändningen. Du kan också använda den här övervakningen för att optimera promptstorlekarna. |
Övervaka användning av etablerat dataflöde: Om du använder etablerat dataflöde övervakar du etableringshanterad användning för att säkerställa att du inte underutnyttjar det etablerade dataflödet som du har köpt. | Kontinuerlig övervakning av etableringshanterad användning ger dig den information du behöver för att förstå om du underutnyttjar ditt etablerade dataflöde. |
Kostnadshantering: Använd kostnadshanteringsfunktioner med OpenAI för att övervaka kostnader, ange budgetar för att hantera kostnader och skapa aviseringar för att meddela intressenter om risker eller avvikelser. | Kostnadsövervakning, budgetinställning och inställning av aviseringar ger styrning med lämpliga ansvarsskyldighetsprocesser. |
Driftseffektivitet
Operational Excellence fokuserar främst på procedurer för utvecklingsmetoder, observerbarhet och versionshantering.
Designprinciperna för operational excellence tillhandahåller en övergripande designstrategi för att uppnå dessa mål mot arbetsbelastningens driftskrav.
Checklista för design
Starta din designstrategi baserat på checklistan för designgranskning för operational excellence. Den här checklistan definierar processer för observerbarhet, testning och distribution som är relaterade till Azure OpenAI.
Azure DevOps-kultur: Se till att Azure OpenAI-instanser distribueras i olika miljöer, till exempel utveckling, testning och produktion. Se till att du har miljöer som stöder kontinuerlig inlärning och experimentering under hela utvecklingscykeln.
Observerbarhet: Övervaka, aggregera och visualisera lämpliga mått.
Observerbarhet: Om Azure OpenAI-diagnostiken inte är tillräcklig för dina behov bör du överväga att använda en gateway som Azure API Management framför Azure OpenAI för att logga både inkommande och utgående svar där det är tillåtet. Den här informationen kan hjälpa dig att förstå modellens effektivitet för inkommande frågor.
Distribuera med säkerhet: Använd infrastruktur som kod (IaC) för att distribuera Azure OpenAI, modelldistributioner och annan infrastruktur som krävs för finjusteringsmodeller.
Distribuera med säkerhet: Följ LLMOps-metoder (large language model operations) för att operationalisera hanteringen av dina Azure OpenAI LLMs, inklusive distribution, finjustering och promptteknik.
Automatisera för effektivitet: Om du använder nyckelbaserad autentisering implementerar du en automatiserad strategi för nyckelrotation.
Rekommendationer
Rekommendation | Förmån |
---|---|
Aktivera och konfigurera Azure Diagnostics: Aktivera och konfigurera diagnostik för Azure OpenAI-tjänsten. | Diagnostik samlar in och analyserar mått och loggar som hjälper dig att övervaka tillgänglighet, prestanda och drift av Azure OpenAI. |
Prestandaeffektivitet
Prestandaeffektivitet handlar om att upprätthålla användarupplevelsen även när belastningen ökar genom att hantera kapaciteten. Strategin omfattar skalning av resurser, identifiering och optimering av potentiella flaskhalsar och optimering för högsta prestanda.
Designprinciperna för prestandaeffektivitet ger en designstrategi på hög nivå för att uppnå dessa kapacitetsmål mot den förväntade användningen.
Checklista för design
Starta din designstrategi baserat på checklistan för designgranskning för prestandaeffektivitet för att definiera en baslinje baserat på viktiga prestandaindikatorer för Azure OpenAI-arbetsbelastningar.
Kapacitet: Uppskatta konsumenternas elasticitetskrav. Identifiera trafik med hög prioritet som kräver synkrona svar och trafik med låg prioritet som kan vara asynkron och batchbaserad.
Kapacitet: Prestandakrav för tokenförbrukning baserat på uppskattade krav från konsumenter. Överväg att använda Benchmarking-verktyget för Azure OpenAI för att hjälpa dig att verifiera dataflödet om du använder distributioner av etablerade dataflödesenheter (PTU).
Kapacitet: Använd etablerat dataflöde för produktionsarbetsbelastningar. Etablerat dataflöde erbjuder dedikerat minne och beräkning, reserverad kapacitet och konsekvent maximal svarstid för den angivna modellversionen. Erbjudandet betala per användning kan drabbas av bullriga grannproblem som ökad svarstid och begränsning i regioner som används hårt. Metoden betala per användning erbjuder inte heller garanterad kapacitet.
Kapacitet: Lägg till lämpliga gatewayer framför dina Azure OpenAI-distributioner. Kontrollera att gatewayen kan dirigeras till flera instanser i samma eller olika regioner.
Kapacitet: Allokera PTUs för att täcka din förväntade användning och komplettera dessa PTU:er med en TPM-distribution för att hantera elasticitet över den gränsen. Den här metoden kombinerar basdataflöde med elastiskt dataflöde för effektivitet. Precis som andra överväganden kräver den här metoden en anpassad gatewayimplementering för att dirigera begäranden till TPM-distributionen när PTU-gränserna nås.
Kapacitet: Skicka begäranden med hög prioritet synkront. Köa begäranden med låg prioritet och skicka dem i batchar när efterfrågan är låg.
Kapacitet: Välj en modell som överensstämmer med dina prestandakrav med tanke på kompromissen mellan hastighets- och utdatakomplexitet. Modellprestanda kan variera avsevärt beroende på den valda modelltypen. Modeller utformade för hastighet erbjuder snabbare svarstider, vilket kan vara fördelaktigt för program som kräver snabba interaktioner. Omvänt kan mer avancerade modeller leverera utdata av högre kvalitet på bekostnad av ökad svarstid.
Uppnå prestanda: För program som chattrobotar eller konversationsgränssnitt bör du överväga att implementera strömning. Direktuppspelning kan förbättra den upplevda prestandan för Azure OpenAI-program genom att leverera svar till användare på ett inkrementellt sätt, vilket förbättrar användarupplevelsen.
Uppnå prestanda: Bestäm när du ska använda finjustering innan du checkar in på finjustering. Även om det finns bra användningsfall för finjustering, till exempel när den information som behövs för att styra modellen är för lång eller komplex för att passa in i prompten, se till att snabbteknik och hämtningsförhöjda genereringsmetoder (RAG) inte fungerar eller bevisligen är dyrare.
Uppnå prestanda: Överväg att använda dedikerade modelldistributioner per konsumentgrupp för att tillhandahålla användningsisolering per modell som kan bidra till att förhindra störningar mellan dina konsumentgrupper.
Rekommendationer
Det finns inga rekommenderade konfigurationer för prestandaeffektivitet för Azure OpenAI.
Azure Policy
Azure tillhandahåller en omfattande uppsättning inbyggda principer som rör Azure OpenAI och dess beroenden. Några av föregående rekommendationer kan granskas via Azure Policy. Överväg följande principdefinitioner:
- Inaktivera nyckelåtkomst
- Begränsa nätverksåtkomst
- Inaktivera åtkomst till offentligt nätverk
- Använda Azure Private Link
- Aktivera datakryptering med kundhanterade nycklar
Dessa Azure Policy-definitioner är också rekommenderade säkerhetsmetoder för Azure OpenAI i Azure Advisor .
Nästa steg
Tänk på följande artiklar som resurser som visar de rekommendationer som markeras i den här artikeln.
- Använd den här referensarkitekturen som ett exempel på hur du kan använda den här artikelns vägledning för en arbetsbelastning: Referensarkitektur för OpenAI från slutpunkt till slutpunkt.
- Skapa implementeringsexpertis med hjälp av Azure Mašinsko učenje produktdokumentation.