Overvåking av maskinlæringsspådommer (ML) kan bidra til å forbedre kvaliteten på distribuerte modeller. Å fange data fra slutninger gjort i produksjonen kan gjøre deg i stand til å overvåke de distribuerte modellene dine og oppdage avvik i modellkvalitet. Tidlig og proaktiv oppdagelse av disse avvikene gjør at du kan iverksette korrigerende handlinger, for eksempel omskoleringsmodeller, revisjon av oppstrømssystemer eller fikse kvalitetsproblemer.
AWS Lambda er en serverløs databehandlingstjeneste som kan gi sanntids ML-slutning i stor skala. I dette innlegget demonstrerer vi en eksempeldatafangstfunksjon som kan distribueres til en Lambda ML-inferensarbeidsbelastning.
I desember 2020 introduserte Lambda støtte for beholderbilder som pakkeformat. Denne funksjonen økte størrelsesgrensen for distribusjonspakke fra 500 MB til 10 GB. Før denne funksjonslanseringen gjorde pakkestørrelsesbegrensningen det vanskelig å distribuere ML-rammeverk som TensorFlow eller PyTorch til Lambda-funksjoner. Etter lanseringen gjorde den økte pakkestørrelsesgrensen ML til en levedyktig og attraktiv arbeidsmengde å distribuere til Lambda. I 2021 var ML-inferens en av de raskest voksende arbeidsbelastningstypene i Lambda-tjenesten.
Amazon SageMaker, Amazons fullt administrerte ML-tjeneste, inneholder sin egen modellovervåkingsfunksjon. Eksempelprosjektet i dette innlegget viser imidlertid hvordan man utfører datafangst for bruk i modellovervåking for kunder som bruker Lambda for ML-inferens. Prosjektet bruker Lambda-utvidelser for å fange slutningsdata for å minimere innvirkningen på ytelsen og latensen til slutningsfunksjonen. Bruk av Lambda-utvidelser minimerer også innvirkningen på funksjonsutviklere. Ved å integrere via en utvidelse kan overvåkingsfunksjonen brukes på flere funksjoner og vedlikeholdes av et sentralisert team.
Oversikt over løsning
Dette prosjektet inneholder kildekode og støttefiler for en serverløs applikasjon som gir sanntidsslutning ved bruk av en distilbert-basert, forhåndsopplært spørsmålssvarsmodell. Prosjektet bruker modellen Hugging Face spørsmål og svar naturlig språkbehandling (NLP) med PyTorch å utføre naturlig språkslutningsoppgaver. Prosjektet inneholder også en løsning for å utføre inferensdatafangst for modellprediksjonene. Lambdafunksjonsskriveren kan bestemme nøyaktig hvilke data fra slutningsforespørselinngangen og prediksjonsresultatet som skal sendes til utvidelsen. I denne løsningen sender vi innspillet og svaret fra modellen til utvidelsen. Utvidelsen sender deretter med jevne mellomrom dataene til en Amazon enkel lagringstjeneste (Amazon S3) bøtte. Vi bygger datafangst-utvidelsen som et beholderbilde ved hjelp av en makefile
. Vi bygger deretter Lambda-inferensfunksjonen som et beholderbilde og legger til utvidelsesbeholderbildet som et beholderbildelag. Følgende diagram viser en oversikt over arkitekturen.
Lambda-utvidelser er en måte å utvide Lambda-funksjonene på. I dette prosjektet bruker vi en ekstern Lambda-utvidelse for å logge slutningsforespørselen og prediksjonen fra slutningen. Den eksterne utvidelsen kjører som en egen prosess i Lambda-kjøringsmiljøet, noe som reduserer innvirkningen på inferensfunksjonen. Imidlertid deler funksjonen ressurser som CPU, minne og lagring med Lambda-funksjonen. Vi anbefaler å allokere nok minne til Lambda-funksjonen for å sikre optimal ressurstilgjengelighet. (I vår testing allokerte vi 5 GB minne til inferens Lambda-funksjonen og så optimal ressurstilgjengelighet og inferenslatens). Når en slutning er fullført, returnerer Lambda-tjenesten svaret umiddelbart og venter ikke på at utvidelsen er ferdig med å logge forespørselen og svaret til S3-bøtten. Med dette mønsteret påvirker ikke overvåkingsutvidelsen inferensforsinkelsen. For å lære mer om Lambda-utvidelser sjekk ut disse videoseriene.
Prosjektets innhold
Dette prosjektet bruker AWS-serverløs applikasjonsmodell (AWS SAM) kommandolinjegrensesnitt (CLI). Dette kommandolinjeverktøyet lar utviklere initialisere og konfigurere applikasjoner; pakke, bygg og test lokalt; og distribuere til AWS Cloud.
Du kan laste ned kildekoden for dette prosjektet fra GitHub-depotet.
Dette prosjektet inkluderer følgende filer og mapper:
- app/app.py – Kode for applikasjonens Lambda-funksjon, inkludert koden for ML-slutning.
- app/Dockerfile – Dockerfilen for å bygge containerbildet som pakker inferensfunksjonen, modellen lastet ned fra Hugging Face, og Lambda-utvidelsen bygget som et lag. I motsetning til .zip-funksjoner, kan ikke lag festes til containerpakkede Lambda-funksjoner når funksjonen oppretter. I stedet bygger vi laget og kopierer innholdet til beholderbildet.
- utvidelser – Utvidelsesfilene for modellskjermen. Denne Lambda-utvidelsen brukes til å logge inndata til slutningsfunksjonen og den tilsvarende prediksjonen til en S3-bøtte.
- app/modell – Modellen lastet ned fra Hugging Face.
- app/requirements.txt – Python-avhengighetene som skal installeres i beholderen.
- hendelser – Invokasjonshendelser som du kan bruke til å teste funksjonen.
- template.yaml – En beskrivelsesfil som definerer applikasjonens AWS-ressurser.
Applikasjonen bruker flere AWS-ressurser, inkludert Lambda-funksjoner og en Amazon API-gateway API. Disse ressursene er definert i template.yaml
fil i dette prosjektet. Du kan oppdatere malen for å legge til AWS-ressurser gjennom den samme distribusjonsprosessen som oppdaterer applikasjonskoden din.
Forutsetninger
For dette gjennomgangen bør du ha følgende forutsetninger:
Distribuer eksempelapplikasjonen
For å bygge applikasjonen din for første gang, fullfør følgende trinn:
- Kjør følgende kode i skallet ditt. (Dette vil også bygge utvidelsen):
- Bygg et Docker-bilde av modellmonitorapplikasjonen. Byggeinnholdet ligger i
.aws-sam
katalog
- Logg på Amazon ECR:
- Opprett et depot i Amazon ECR:
aws ecr create-repository
repository-name serverless-ml-model-monitor
--image-scanning-configuration scanOnPush=true
--region us-east-1
- Skyv beholderbildet til Amazon ECR:
- Fjern kommentaren til linje #1 app/Dockerfile og rediger den slik at den peker til det riktige ECR-depotbildet, og fjern deretter kommentarene til linje #6 og #7 i app/dockerfil:
- Bygg applikasjonen på nytt:
Vi bygger på nytt fordi Lambda ikke støtter Lambda-lag direkte for emballasjetypen for beholderbilde. Vi må først bygge modellovervåkingskomponenten som et beholderbilde, laste det opp til Amazon ECR, og deretter bruke det bildet i modellovervåkingsapplikasjonen som et beholderlag.
- Til slutt, distribuer Lambda-funksjonen, API-gatewayen og utvidelsen:
Denne kommandoen pakker og distribuerer applikasjonen din til AWS med en rekke ledetekster:
- Stabelnavn : Navnet på den utplasserte AWS skyformasjon stable. Dette bør være unikt for kontoen din og regionen din, og et godt utgangspunkt ville være noe som samsvarer med prosjektnavnet ditt.
- AWS-regionen : AWS-regionen du distribuerer applikasjonen til.
- Bekreft endringer før distribusjon : Hvis satt til
yes
, vises eventuelle endringssett før du kjører for manuell gjennomgang. Hvis satt til nei, distribuerer AWS SAM CLI automatisk applikasjonsendringer. - Tillat AWS SAM CLI IAM-rolleoppretting : Mange AWS SAM-maler, inkludert dette eksemplet, opprettes AWS identitets- og tilgangsadministrasjon (IAM)-roller som kreves for Lambda-funksjonen(e) inkludert for å få tilgang til AWS-tjenester. Som standard er disse begrenset til minimum nødvendige tillatelser. For å distribuere en CloudFormation-stabel som oppretter eller endrer IAM-roller,
CAPABILITY_IAM
verdi forcapabilities
må gis. Hvis tillatelse ikke er gitt gjennom denne ledeteksten, må du eksplisitt bestå for å distribuere dette eksemplet--capabilities CAPABILITY_IAM
tilsam deploy
kommando. - Lagre argumenter til samconfig.toml : Hvis satt til
yes
, dine valg lagres i en konfigurasjonsfil inne i prosjektet slik at du i fremtiden bare kan kjøresam deploy
uten parametere for å distribuere endringer i applikasjonen din.
Du kan finne API Gateway-endepunkt-URLen i utdataverdiene som vises etter distribusjon.
Test applikasjonen
For å teste applikasjonen, bruk Postman eller curl for å sende en forespørsel til API Gateway-endepunktet. For eksempel:
Du bør se utdata som følgende kode. ML-modellen utledet fra konteksten og returnerte svaret på spørsmålet vårt.
Etter noen minutter skal du se en fil i S3-bøtta nlp-qamodel-model-monitoring-modelmonitorbucket-
med inndata og inferens logget.
Rydd opp
For å slette eksempelapplikasjonen du opprettet, bruk AWS CLI:
konklusjonen
I dette innlegget implementerte vi en modellovervåkingsfunksjon som en Lambda-utvidelse og distribuerte den til en Lambda ML-inferensarbeidsbelastning. Vi viste hvordan du bygger og distribuerer denne løsningen til din egen AWS-konto. Til slutt viste vi hvordan du kjører en test for å verifisere funksjonaliteten til skjermen.
Kom gjerne med tanker eller spørsmål i kommentarfeltet. For mer serverløse læringsressurser, besøk Serverløst land.
Om forfatterne
Dan Fox er en hovedspesialistløsningsarkitekt i den verdensomspennende spesialistorganisasjonen for serverløse. Dan jobber med kunder for å hjelpe dem med å utnytte serverløse tjenester for å bygge skalerbare, feiltolerante, høyytende og kostnadseffektive applikasjoner. Dan er takknemlig for å kunne bo og jobbe i vakre Boulder, Colorado.
Newton Jain er en senior produktsjef med ansvar for å bygge nye opplevelser for maskinlæring, høyytelsesdatabehandling (HPC) og mediebehandlingskunder på AWS Lambda. Han leder utviklingen av nye muligheter for å øke ytelsen, redusere ventetiden, forbedre skalerbarheten, forbedre påliteligheten og redusere kostnadene. Han bistår også AWS-kunder med å definere en effektiv serverløs strategi for deres dataintensive applikasjoner.
Diksha Sharma er løsningsarkitekt og maskinlæringsspesialist hos AWS. Hun hjelper kunder med å akselerere sin skyadopsjon, spesielt innen maskinlæring og serverløs teknologi. Diksha distribuerer tilpassede proof of concept som viser kundene verdien av AWS for å møte deres forretnings- og IT-utfordringer. Hun setter kundene i stand i deres kunnskap om AWS og jobber sammen med kundene for å bygge ut deres ønskede løsning.
Veda Raman er en senior spesialistløsningsarkitekt for maskinlæring basert i Maryland. Veda samarbeider med kunder for å hjelpe dem med å bygge effektive, sikre og skalerbare maskinlæringsapplikasjoner. Veda er interessert i å hjelpe kunder med å utnytte serverløse teknologier for maskinlæring.
Josh Kahn er verdensomspennende teknologileder for serverløs og en hovedløsningsarkitekt. Han leder et globalt fellesskap av serverløse eksperter hos AWS som hjelper kunder i alle størrelser, fra oppstartsbedrifter til verdens største bedrifter, med å effektivt bruke AWS serverløse teknologier.
- AI
- ai kunst
- ai art generator
- du har en robot
- kunstig intelligens
- sertifisering av kunstig intelligens
- kunstig intelligens i bankvirksomhet
- kunstig intelligens robot
- kunstig intelligens roboter
- programvare for kunstig intelligens
- AWS Lambda
- AWS maskinlæring
- blockchain
- blockchain konferanse ai
- coingenius
- samtale kunstig intelligens
- kryptokonferanse ai
- dall sin
- dyp læring
- google det
- maskinlæring
- plato
- plato ai
- Platon Data Intelligence
- Platon spill
- PlatonData
- platogaming
- skala ai
- syntaks
- Teknisk fremgangsmåte
- zephyrnet