Delen via


Ontwerpprincipes voor AI-workloads in Azure

Dit artikel bevat een overzicht van de belangrijkste principes voor AI-workloads in Azure, met een focus op de AI-aspecten van een architectuur. Het is essentieel om alle pijlers van Azure Well-Architected Framework gezamenlijk te overwegen, inclusief hun compromissen. Pas elke pijler toe op de functionele en niet-functionele vereisten van de workload.

Betrouwbaarheid

Wanneer u AI-workloads uitvoert in Azure, moet u rekening houden met veel van dezelfde betrouwbaarheidsvereisten die u voor andere typen workloads in overweging neemt. Specifieke overwegingen voor modeltraining, hosting en deductie zijn echter bijzonder belangrijk en zijn de focus van dit artikel. Het is belangrijk deze procedures te integreren met standaard aanbevolen procedures voor het ontwerpen van cloudtoepassingen, die ook van toepassing zijn op AI-workloads.

Bekijk de ontwerpbeginselen van betrouwbaarheid om een basisinzicht te krijgen in de concepten die hier worden beschreven.

Ontwerpbeginsel Overwegingen
Los single points of failure op. Het vertrouwen op één exemplaar voor kritieke onderdelen kan leiden tot aanzienlijke problemen. Om dit soort problemen te voorkomen, moet u redundantie in alle kritieke onderdelen inbouwen. Gebruik platforms met ingebouwde fouttolerantie en functies voor hoge beschikbaarheid en implementeer redundantie door meerdere exemplaren of knooppunten te implementeren.
Voer analyse van foutmodus uit.

Profiteer van bekende ontwerppatronen.
Analyseer regelmatig mogelijke foutmodi in uw systeemonderdelen en bouw tolerantie tegen deze fouten. Gebruik bekende ontwerppatronen om onderdelen van uw systeem te isoleren en trapsgewijze fouten te voorkomen. Het bulkhead-patroon kan bijvoorbeeld helpen bij het isoleren van fouten en mechanismen voor opnieuw proberen en circuitonderbrekers kunnen tijdelijke fouten afhandelen, zoals beperkingsaanvragen.
Balans tussen betrouwbaarheidsdoelstellingen voor afhankelijke onderdelen. Zorg ervoor dat het deductie-eindpunt of -model en het gegevensarchief zijn afgestemd op betrouwbaarheid. Toepassingsonderdelen moeten beschikbaar blijven, zelfs onder onverwachte omstandigheden, zoals een piek in gelijktijdige gebruikers. Daarnaast moet de workload een failover naar back-upsystemen kunnen uitvoeren in geval van storingen. Als het ene onderdeel mislukt, is dit van invloed op de betrouwbaarheid van het andere onderdeel.

Op dezelfde manier moeten servicelaag-API's, die kritieke productieresources zijn, voldoen aan dezelfde betrouwbaarheidsstandaarden als andere workloadstromen met hoge kritiek. Als voor deze API's hoge beschikbaarheid is vereist, moet het hostingplatform beschikbaarheidszones of een ontwerp voor meerdere regio's ondersteunen om continue werking en tolerantie te garanderen.
Ontwerp voor operationele betrouwbaarheid. Behoud de betrouwbaarheid van modelreacties door ervoor te zorgen dat updates regelmatig en tijdig worden bijgewerkt. Bepaal of u recente gegevens of iets oudere gegevens wilt gebruiken, waarbij u de noodzaak van up-to-datumgegevens in balans brengt met de praktische ervaring van de updatefrequentie. U moet onlinetraining automatiseren vanwege de frequentie- en betrouwbaarheidsvereisten. Offlinetraining kan worden gerechtvaardigd via een kosten-batenanalyse. U kunt goedkopere resources gebruiken voor offlinetraining.
Ontwerpen voor een betrouwbare gebruikerservaring. Gebruik belastingstests om te evalueren hoe uw workload stress verwerkt en ontwerp uw gebruikersinterface om de verwachtingen van gebruikers voor reactietijden te beheren. Implementeer UI-elementen die gebruikers informeren over mogelijke wachttijden en asynchrone principes voor cloudontwerp gebruiken om intermittentie, latentie of fouten aan te pakken.

Beveiliging

Modellen gebruiken vaak gevoelige productiegegevens om relevante resultaten te produceren. Daarom moet u robuuste beveiligingsmaatregelen implementeren in alle lagen van de architectuur. Deze maatregelen omvatten het implementeren van veilig toepassingsontwerp vroeg in de levenscyclus, het versleutelen van gegevens zowel at-rest als in transit, en het voldoen aan industrienalevingsstandaarden. Regelmatige beveiligingsevaluaties zijn van cruciaal belang voor het identificeren en beperken van beveiligingsproblemen. Geavanceerde dreigingsdetectiemechanismen helpen ervoor te zorgen dat er snel kan worden gereageerd op mogelijke bedreigingen.

beveiligingsprincipes zijn fundamenteel voor het beschermen van gegevensintegriteit, ontwerpintegriteit en gebruikersprivacy in AI-oplossingen. Als eigenaar van een workload bent u verantwoordelijk voor het bouwen van vertrouwen en het beveiligen van gevoelige informatie om een veilige gebruikerservaring te garanderen.

Ontwerpbeginsel Overwegingen
Verdien een vertrouwensrelatie van de gebruiker. Integreer inhoudsveiligheid in elke fase van de levenscyclus met behulp van aangepaste code, hulpprogramma's en effectieve beveiligingscontroles.

Verwijder overbodige persoonlijke en vertrouwelijke informatie op alle gegevensopslagpunten, waaronder geaggregeerde gegevensarchieven, zoekindexen, caches en toepassingen. Houd dit beveiligingsniveau consistent in de hele architectuur.

Zorg ervoor dat u grondige inhoudsbeheer implementeert die gegevens in beide richtingen inspecteert en ongepaste en aanstootgevende inhoud filtert.
Beveilig gegevens die rusten, onderweg zijn en worden gebruikt in overeenstemming met de gevoeligheidsvereisten van de werkbelasting. Gebruik minimaal versleuteling op platformniveau met door Microsoft beheerde of door de klant beheerde sleutels op alle gegevensarchieven in de architectuur. Bepaal waar u hogere versleutelingsniveaus nodig hebt en gebruik indien nodig dubbele versleuteling.

Zorg ervoor dat al het verkeer HTTPS gebruikt voor versleuteling. Bepaal de TLS-beëindigingspunten bij elke hop.

Het model zelf moet worden beveiligd om te voorkomen dat aanvallers gevoelige informatie extraheren die tijdens de training wordt gebruikt. Voor het model is het hoogste beveiligingsniveau vereist. Overweeg het gebruik van homomorfische versleuteling waarmee deductie op versleutelde gegevens mogelijk is.
Investeer in robuust toegangsbeheer voor identiteiten (gebruiker en systeem) die toegang hebben tot het systeem. Implementeer op rollen gebaseerd toegangsbeheer (RBAC) en/of op kenmerken gebaseerd toegangsbeheer (ABAC) voor zowel besturings- als gegevensvlakken.

Behoud de juiste identiteitssegmentatie om de privacy te beschermen. Alleen toegang tot inhoud toestaan die identiteiten mogen bekijken.
Bescherm de integriteit van het ontwerp door segmentatie te implementeren. Geef privénetwerken voor toegang tot gecentraliseerde opslagplaatsen voor containerinstallatiekopieën, gegevens en codeassets.

Wanneer u infrastructuur deelt met andere workloads, maakt u bijvoorbeeld segmentatie wanneer u uw deductieserver in Azure Kubernetes Service host, de knooppuntgroep isoleren van andere API's en workloads.
Voer beveiligingstests uit. Ontwikkel een gedetailleerd testplan met tests voor het detecteren van onethisch gedrag wanneer er wijzigingen in het systeem worden geïntroduceerd.

INTEGREER AI-onderdelen in uw bestaande beveiligingstests. Neem bijvoorbeeld het deductie-eindpunt op in uw routinetests naast andere openbare eindpunten.

Overweeg tests uit te voeren op het livesysteem, zoals penetratietests of rode teamoefeningen, om potentiële beveiligingsproblemen effectief te identificeren en aan te pakken.
Verminder het kwetsbaarheid voor aanvallen door strikte gebruikerstoegang en API-ontwerp af te dwingen. Verificatie vereisen voor alle deductie-eindpunten, inclusief systeem-naar-systeem-aanroepen. Vermijd anonieme eindpunten.

Geef de voorkeur aan beperkt API-ontwerp ten koste van flexibiliteit aan de clientzijde.

trade-off. Het implementeren van de hoogste beveiligingsniveaus gaat gepaard met afwegingen op het gebied van kosten en nauwkeurigheid, omdat de mogelijkheden om de versleutelde gegevens te analyseren, te inspecteren of te registreren beperkt zijn. Veiligheidscontroles voor inhoud en het bereiken van uitleg kunnen ook lastig zijn in zeer beveiligde omgevingen.

In de volgende ontwerpgebieden vindt u meer informatie over de voorgaande principes en overwegingen:

Kostenoptimalisatie

Het doel van de pijler Kostenoptimalisatie is om investeringen te maximaliseren, niet noodzakelijkerwijs om de kosten te verlagen. Elke architectuurkeuze creëert zowel directe als indirecte financiële gevolgen. Inzicht in de kosten die zijn gekoppeld aan verschillende opties, waaronder beslissingen voor bouwen versus kopen, technologieselecties, factureringsmodellen, licenties, training en operationele uitgaven. Het is belangrijk om uw investering in de geselecteerde laag te maximaliseren en continu factureringsmodellen opnieuw te evalueren. Evalueer continu de kosten die zijn gekoppeld aan wijzigingen in architectuur, bedrijfsbehoeften, processen en teamstructuur.

Bekijk de principes van Kostenoptimalisatie, gericht op snelheids- en gebruiksoptimalisatie.

Ontwerpbeginsel Overwegingen
Bepaal de kostenfactoren door een uitgebreide oefening voor kostenmodellering uit te voeren. Houd rekening met de belangrijkste factoren van het gegevens- en toepassingsplatform:
- Volume aan gegevens. Schat de hoeveelheid gegevens die u gaat indexeren en verwerken. Grotere volumes kunnen de opslag- en verwerkingskosten verhogen.
- Aantal query's. De frequentie en complexiteit van query's voorspellen. Hogere queryvolumes kunnen de kosten verhogen, met name als voor de query's aanzienlijke rekenbronnen nodig zijn.
- Doorvoer. Evalueer de verwachte doorvoer om te bepalen welke prestatielaag u nodig hebt. Hogere doorvoervereisten kunnen leiden tot hogere kosten.
- Afhankelijkheidskosten. Begrijp dat er mogelijk verborgen kosten in afhankelijkheden zijn. Wanneer u bijvoorbeeld de kosten van indexeren berekent, neemt u de kosten van de vaardighedenset op, die deel uitmaakt van gegevensverwerking, maar buiten het indexbereik valt.
Betaal voor wat u wilt gebruiken. Kies een technologieoplossing die aan uw behoeften voldoet zonder onnodige kosten. Als u geen geavanceerde functies nodig hebt, kunt u minder dure opties en opensource-hulpprogramma's overwegen.

Factor in de frequentie van het gebruik. Geef de voorkeur aan elastische rekenopties voor orchestratietools om de gebruikskosten te minimaliseren, omdat ze altijd-aanzijn. Vermijd serverloze berekeningen voor fulltime-bewerkingen, omdat deze kosten kunnen escaleren.

Betaal niet voor hogere lagen zonder hun volledige capaciteit te gebruiken. Zorg ervoor dat de gekozen laag overeenkomt met uw productiegebruikspatronen om de uitgaven te optimaliseren. Gebruik standaardprijzen voor normale taken en spotprijzen voor zeer onderbrekende training. Als u de kosten wilt verlagen, gebruikt u op GPU gebaseerde berekeningen alleen voor AI-workloadfuncties.

Test en benchmark uw training en verfijning uitgebreid om de SKU te vinden die de beste balans biedt tussen prestaties en kosten.
Gebruik waarvoor u betaalt. Minimaliseer afval. Bewaak de metrische gegevens over het gebruik nauwkeurig. AI-workloads kunnen duur zijn en de kosten kunnen snel oplopen als de resources niet worden afgesloten, verkleind of vrijgegeven wanneer ze niet worden gebruikt.

Optimaliseer het systeem voor één keer schrijven, lees veel om te voorkomen dat gegevensopslag te veel wordt gebruikt. Trainingsgegevens vereisen niet de onmiddellijke reactiesnelheid van een productiedatabase.

Stresstests voor een deductie-eindpunt van de Azure OpenAI-service kunnen duur zijn omdat voor elke aanroep kosten in rekening worden gebracht. Als u de kosten wilt verlagen, gebruikt u ongebruikte PTU's van de OpenAI-service in een testomgeving of simuleert u in plaats daarvan het deductie-eindpunt.

Taken zoals experimentele gegevensanalyse (EDA), modeltraining en fine-tuning worden doorgaans niet fulltime uitgevoerd. Voor deze taken geeft u de voorkeur aan een platform dat kan worden gestopt wanneer het niet in gebruik is. EDA-taken zijn bijvoorbeeld doorgaans interactief, dus gebruikers moeten vm's kunnen starten en stoppen terwijl ze taken uitvoeren.

Wijs kostenaccountabiliteiten toe aan operationele teams. Deze teams moeten ervoor zorgen dat de kosten binnen de verwachte parameters blijven door het resourcegebruik actief te bewaken en te beheren.
Operationele kosten optimaliseren. Online training kan duur zijn vanwege de frequentievereisten. Het automatiseren van dit proces helpt consistentie te behouden en de kosten van menselijke fouten te minimaliseren. Bovendien kan het gebruik van iets oudere gegevens voor training en het uitstellen van updates, indien mogelijk, de kosten verder verminderen zonder de nauwkeurigheid van het model aanzienlijk te beïnvloeden.

Evalueer voor offlinetraining of goedkopere resources kunnen worden gebruikt, zoals offlinehardware.

Over het algemeen verwijdert u gegevens uit functiearchieven om de kosten voor onbelangrijke e-mail en opslag voor functies te verminderen.

trade-off: Kostenoptimalisatie en prestatie-efficiëntie. Kosten in balans brengen met prestaties in databasebeheer omvat afwegingen. Efficiënt indexontwerp versnelt query's, maar kan de kosten verhogen vanwege metagegevensbeheer en indexgrootte. Op dezelfde manier kan het partitioneren van grote tabellen de prestaties van query's verbeteren en de opslagbelasting verminderen, maar er worden extra kosten in rekening gebracht. Omgekeerd kunnen technieken die overmatige indexering voorkomen kosten verlagen, maar de prestaties kunnen beïnvloeden als ze niet goed worden beheerd.

Trade-off: kostenoptimalisatie en operationele uitmuntendheid. Er zijn compromissen waarmee u rekening moet houden wanneer u besluit welke van de twee primaire benaderingen u wilt gebruiken voor modeltraining. Training in de ontwikkelomgeving met volledige productiegegevens kan de rekenkosten verlagen omdat het model slechts eenmaal wordt getraind en alleen het artefact wordt gepromoveerd. Deze aanpak vereist echter strenge beveiligingsmaatregelen voor het verwerken van productiegegevens in lagere omgevingen, wat complex en resource-intensief kan zijn. Omgekeerd verbetert het trainen van het model in elke omgeving de stabiliteit en betrouwbaarheid vanwege grondige codebeoordeling en -tests, maar dit model verhoogt de rekenkosten omdat trainingsuitvoeringen meerdere keren plaatsvinden.

Operationele topprestaties

Het primaire doel van Operational Excellence is het efficiënt leveren van mogelijkheden gedurende de ontwikkelingslevenscyclus. Het bereiken van dit doel omvat het opzetten van herhaalbare processen die ondersteuning bieden voor de ontwerpmethodologie van experimenten en resultaten opleveren om de modelprestaties te verbeteren. Operational Excellence gaat ook over het handhaven van de nauwkeurigheid van modellen in de loop van de tijd, het implementeren van effectieve bewakingsprocedures en governance om risico's te minimaliseren en wijzigingsbeheerprocessen te ontwikkelen om zich aan te passen aan modeldrift.

Hoewel alle Operational Excellence-principes van toepassing zijn op AI-workloads, kunt u automatisering en bewaking prioriteren als uw fundamentele operationele strategieën.

Ontwerpbeginsel Overwegingen
Zorg voor een continue leer- en experimentenmentaliteit gedurende de levenscyclus van toepassingsontwikkeling, gegevensverwerking en AI-modelbeheer. Workloadbewerkingen moeten voortbouwen op beproefde methodologieën zoals DevOps, DataOps, MLOps en GenAIOps.

Vroege samenwerking tussen bewerkingen, toepassingsontwikkeling en gegevensteams is essentieel om een wederzijds begrip van acceptabele modelprestaties tot stand te brengen. Operationele teams bieden kwaliteitssignalen en bruikbare waarschuwingen. Toepassings- en gegevensteams helpen problemen efficiënt te diagnosticeren en op te lossen.
Kies technologieën die de operationele belasting minimaliseren. Wanneer u platformoplossingen kiest, geeft u de voorkeur aan PaaS (Platform as a Service) boven zelf-hostende opties om het ontwerp te vereenvoudigen, werkstroomindeling te automatiseren en dagelijkse 2 bewerkingen eenvoudiger te maken.
Maak een geautomatiseerd bewakingssysteem dat waarschuwingsfunctionaliteit ondersteunt, waaronder logboekregistratie en controlebaarheid. Gezien de niet-deterministische aard van AI is het belangrijk om in het begin van de levenscyclus kwaliteitsmetingen vast te stellen. Werk samen met gegevenswetenschappers om metrische kwaliteitsgegevens te definiëren. Visualiseer doorlopende inzichten in uitgebreide dashboards.

Volg experimenten met behulp van hulpprogramma's die details kunnen vastleggen, zoals codeversies, omgevingen, parameters, uitvoeringen en resultaten.

Implementeer bruikbare waarschuwingen die net voldoende informatie bieden om operators in staat te stellen snel te reageren.
Automatiseer de detectie en beperking van modelverval. Gebruik geautomatiseerde tests om drift in de loop van de tijd te evalueren. Zorg ervoor dat uw bewakingssysteem waarschuwingen verzendt wanneer reacties beginnen af te wijken van de verwachte resultaten en dit regelmatig doen. Gebruik hulpprogramma's waarmee nieuwe modellen automatisch kunnen worden gedetecteerd en bijgewerkt.

Pas zo nodig aan nieuwe use cases aan door de logica voor gegevensverwerking en modeltraining aan te passen.
Implementeer veilige implementaties. Kies tussen side-by-side implementaties of in-place updates om downtime te minimaliseren. Implementeer grondig testen voordat het model wordt geïmplementeerd om ervoor te zorgen dat het model correct is geconfigureerd en voldoet aan doelen, gebruikers verwachtingen en kwaliteitsnormen. Plan altijd noodoperaties, ongeacht de implementatiestrategie.
Evalueer continu de gebruikerservaring in productie. Stel workloadgebruikers in staat feedback te geven over hun ervaring. Vraag toestemming om deel- of al hun gesprekken te delen in een gekoppeld logboek voor probleemoplossing. Overweeg hoeveel van een gebruikersinteractie levensvatbaar, compatibel, veilig en nuttig is om de gegevens zorgvuldig vast te leggen en te gebruiken om de prestaties van uw workload te evalueren met echte gebruikersinteracties.

In de volgende ontwerpgebieden vindt u meer informatie over de voorgaande principes en overwegingen:

Prestatie-efficiëntie

Het doel van de evaluatie van ai-modelprestaties is om te bepalen hoe effectief een model de beoogde taken uitvoert. Het bereiken van dit doel omvat het beoordelen van verschillende metrische gegevens, zoals nauwkeurigheid, precisie en billijkheid. Daarnaast is de prestaties van het platform en de toepassingsonderdelen die ondersteuning bieden voor het model cruciaal.

Modelprestaties worden ook beïnvloed door de efficiëntie van bewerkingen zoals het bijhouden van experimenten en gegevensverwerking. Het toepassen van principes voor prestatie-efficiëntie helpt de prestaties te meten tegen een acceptabele kwaliteitsbalk. Deze vergelijking is essentieel voor het detecteren van degradatie of verval. Voor het onderhouden van de workload, inclusief AI-onderdelen, hebt u geautomatiseerde processen nodig voor continue bewaking en evaluatie.

Ontwerpbeginsel Overwegingen
Prestatiebenchmarks vaststellen. Voer strenge prestatietests uit op verschillende architectuurgebieden en stel acceptabele doelen in. Deze doorlopende evaluatie moet deel uitmaken van uw operationele processen, niet een eenmalige test.

Benchmarking is van toepassing op voorspellingsprestaties. Begin met een basislijn om de initiële modelprestaties te begrijpen en continu de prestaties opnieuw te evalueren om ervoor te zorgen dat deze voldoet aan de verwachtingen.
Evalueer de resourcebehoeften voor het voldoen aan prestatiedoelen. Begrijp de kenmerken van de belasting om het juiste platform te kiezen en de middelen op de juiste schaal toe te passen. Houd rekening met deze gegevens voor capaciteitsplanning op schaal.

Gebruik bijvoorbeeld belastingstests om het optimale rekenplatform en de SKU te bepalen. Krachtige GPU-geoptimaliseerde rekenkracht is vaak nodig voor modeltraining en fine-tuning, maar producteenheden voor algemeen gebruik zijn geschikt voor orchestratietools.

Kies op dezelfde manier een gegevensplatform dat efficiënt gegevensopname afhandelt, gelijktijdige schrijfbewerkingen beheert en de prestaties van afzonderlijke schrijfbewerkingen onderhoudt zonder degradatie.

Verschillende deductieservers hebben verschillende prestatiekenmerken. Deze kenmerken zijn van invloed op modelprestaties tijdens runtime. Selecteer een server die voldoet aan de verwachtingen van de basislijn.
Verzamel en analyseer prestatiegegevens en identificeer knelpunten.

Evalueer telemetrie van de gegevenspijplijn om ervoor te zorgen dat aan prestatiedoelen voor doorvoer- en lees-/schrijfbewerkingen wordt voldaan.

Bekijk voor de zoekindex metrische gegevens, zoals querylatentie, doorvoer en de nauwkeurigheid van de resultaten. Naarmate het gegevensvolume toeneemt, mogen foutpercentages niet toenemen.

Analyseer telemetrie van codeonderdelen, zoals de orchestrator, waarmee gegevens van serviceoproepen worden verzameld. Door deze gegevens te analyseren, kunt u inzicht krijgen in de tijd die is besteed aan lokale verwerking versus netwerkoproepen en potentiële latentie in andere onderdelen identificeren.

Evalueer de gebruikersinterface-ervaring met behulp van metrische gegevens voor betrokkenheid om te bepalen of gebruikers positief betrokken of gefrustreerd zijn. Verhoogde tijd op een pagina kan een van beide aangeven. Multimodale mogelijkheden, zoals spraak- of videoreacties, kunnen aanzienlijke latentie veroorzaken, wat leidt tot langere reactietijden.
Verbeter continu de benchmarkprestaties door kwaliteitsmetingen uit productie te gebruiken. Implementeer geautomatiseerde verzameling en analyse van metrische prestatiegegevens, waarschuwingen en het opnieuw trainen van modellen om de effectiviteit van het model te behouden.

afweging. Wanneer u rekening houdt met platformmogelijkheden, moet u kosten en prestaties verdelen. GPU-SKU's zijn bijvoorbeeld duur, dus controleer indien nodig continu op ondergebruik en juiste grootte resources. Na aanpassingen test u het resourcegebruik om een evenwicht te garanderen tussen de kosten van platformresources en hun bewerkingen en de verwachte prestaties, zoals aangegeven door de basislijn. Zie Aanbevelingen voor het optimaliseren van de kosten van onderdelenvoor strategieën voor kostenoptimalisatie.

In de volgende ontwerpgebieden vindt u meer informatie over de voorgaande principes en overwegingen:

Volgende stap