Implementer en maskinlæringsløsning for datafangst på AWS Lambda PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Implementer en maskinlæringsløsning for datafangst på AWS Lambda

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
docker build -t serverless-ml-model-monitor:latest .

docker tag serverless-ml-model-monitor:latest .dkr.ecr.us-east-1.amazonaws.com/serverless-ml-model-monitor:latest

  • Logg på Amazon ECR:
aws ecr get-login-password --region us-east-1 docker login --username AWS --password-stdin .dkr.ecr.us-east-1.amazonaws.com

  • Opprett et depot i Amazon ECR:

aws ecr create-repositoryrepository-name serverless-ml-model-monitor--image-scanning-configuration scanOnPush=true--region us-east-1

  • Skyv beholderbildet til Amazon ECR:
docker push .dkr.ecr.us-east-1.amazonaws.com/serverless-ml-model-monitor:latest

  • 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:
WORKDIR /opt
COPY --from=layer /opt/ .

  • 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:
sam deploy --guided

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 for capabilities må gis. Hvis tillatelse ikke er gitt gjennom denne ledeteksten, må du eksplisitt bestå for å distribuere dette eksemplet --capabilities CAPABILITY_IAM til sam 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øre sam 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:

curl -X POST -H "Content-Type: text/plain" https://.execute-api.us-east-1.amazonaws.com/Prod/nlp-qa -d '{"question": "Where do you live?", "context": "My name is Clara and I live in Berkeley."}'

Du bør se utdata som følgende kode. ML-modellen utledet fra konteksten og returnerte svaret på spørsmålet vårt.

{
    "Question": "Where do you live?",
    "Answer": "Berkeley",
    "score": 0.9113729596138
}

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:

aws cloudformation delete-stack --stack-name 

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

Implementer en maskinlæringsløsning for datafangst på AWS Lambda PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.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.

Implementer en maskinlæringsløsning for datafangst på AWS Lambda PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.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.

Implementer en maskinlæringsløsning for datafangst på AWS Lambda PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.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.

Implementer en maskinlæringsløsning for datafangst på AWS Lambda PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.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.

Implementer en maskinlæringsløsning for datafangst på AWS Lambda PlatoBlockchain Data Intelligence. Vertikalt søk. Ai. 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.

Tidstempel:

Mer fra AWS maskinlæring