Implementer en maskinlærings-inferensdatafangstløsning på AWS Lambda PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

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

Overvågning af maskinlæringsforudsigelser (ML) kan hjælpe med at forbedre kvaliteten af ​​implementerede modeller. Indsamling af data fra konklusioner lavet i produktionen kan gøre dig i stand til at overvåge dine installerede modeller og opdage afvigelser i modelkvalitet. Tidlig og proaktiv opdagelse af disse afvigelser sætter dig i stand til at tage korrigerende handlinger, såsom genoptræningsmodeller, revision af upstream-systemer eller løsning af kvalitetsproblemer.

AWS Lambda er en serverløs computertjeneste, der kan levere ML-inferens i realtid i skala. I dette indlæg demonstrerer vi en eksempeldatafangstfunktion, der kan implementeres til en Lambda ML-inferensarbejdsbelastning.

I december 2020 introducerede Lambda understøttelse af containerbilleder som pakkeformat. Denne funktion øgede størrelsesgrænsen for implementeringspakke fra 500 MB til 10 GB. Forud for denne funktions lancering gjorde pakkestørrelsesbegrænsningen det vanskeligt at implementere ML-frameworks som TensorFlow eller PyTorch til Lambda-funktioner. Efter lanceringen gjorde den øgede pakkestørrelsesgrænse ML til en levedygtig og attraktiv arbejdsbyrde at implementere på Lambda. I 2021 var ML-inferens en af ​​de hurtigst voksende arbejdsbyrdetyper i Lambda-tjenesten.

Amazon SageMaker, Amazons fuldt administrerede ML-tjeneste, indeholder sin egen modelovervågningsfunktion. Eksempelprojektet i dette indlæg viser dog, hvordan man udfører datafangst til brug i modelovervågning for kunder, der bruger Lambda til ML-inferens. Projektet bruger Lambda-udvidelser til at fange inferensdata for at minimere påvirkningen af ​​inferensfunktionens ydeevne og latens. Brug af Lambda-udvidelser minimerer også indvirkningen på funktionsudviklere. Ved at integrere via en udvidelse kan overvågningsfunktionen anvendes på flere funktioner og vedligeholdes af et centraliseret team.

Oversigt over løsning

Dette projekt indeholder kildekode og understøttende filer til en serverløs applikation, der giver real-time inferencing ved hjælp af en distilbert-baseret, forudtrænet model til besvarelse af spørgsmål. Projektet bruger modellen Hugging Face spørgsmål og svar naturlig sprogbehandling (NLP) med PyTorch at udføre naturlige sproglige inferensopgaver. Projektet indeholder også en løsning til at udføre inferensdatafangst til modelforudsigelserne. Lambda-funktionsskriveren kan bestemme nøjagtigt, hvilke data fra inferensanmodningsinputtet og forudsigelsesresultatet, der skal sendes til udvidelsen. I denne løsning sender vi input og svar fra modellen til udvidelsen. Udvidelsen sender derefter periodisk dataene til en Amazon Simple Storage Service (Amazon S3) spand. Vi bygger datafangstudvidelsen som et containerbillede ved hjælp af en makefile. Vi bygger derefter Lambda-inferensfunktionen som et containerbillede og tilføjer udvidelsesbeholderbilledet som et containerbilledelag. Følgende diagram viser en oversigt over arkitekturen.

Lambda-udvidelser er en måde at udvide Lambda-funktionerne på. I dette projekt bruger vi en ekstern Lambda-udvidelse til at logge slutningsanmodningen og forudsigelsen fra slutningen. Den eksterne udvidelse kører som en separat proces i Lambda-runtime-miljøet, hvilket mindsker indvirkningen på inferensfunktionen. Funktionen deler dog ressourcer som CPU, hukommelse og lager med Lambda-funktionen. Vi anbefaler at allokere nok hukommelse til Lambda-funktionen for at sikre optimal ressourcetilgængelighed. (I vores test tildelte vi 5 GB hukommelse til inferens Lambda-funktionen og så optimal ressourcetilgængelighed og inferensforsinkelse). Når en konklusion er fuldført, returnerer Lambda-tjenesten svaret med det samme og venter ikke på, at forlængelsen er færdig med at logge anmodningen og svaret til S3-bøtten. Med dette mønster påvirker overvågningsudvidelsen ikke inferensforsinkelsen. For at lære mere om Lambda-udvidelser tjek disse videoserier.

Projekt indhold

Dette projekt bruger AWS serverløs applikationsmodel (AWS SAM) kommandolinjegrænseflade (CLI). Dette kommandolinjeværktøj giver udviklere mulighed for at initialisere og konfigurere applikationer; pakke, byg og test lokalt; og implementere til AWS Cloud.

Du kan downloade kildekoden til dette projekt fra GitHub-depotet.

Dette projekt omfatter følgende filer og mapper:

  • app/app.py – Kode til applikationens Lambda-funktion, inklusive koden til ML-inferencing.
  • app/Dockerfil – Dockerfilen til at bygge containerbilledet, der pakker inferensfunktionen, modellen downloadet fra Hugging Face og Lambda-udvidelsen bygget som et lag. I modsætning til .zip-funktioner kan lag ikke knyttes til containerpakkede Lambda-funktioner ved funktionsskabelse. I stedet bygger vi laget og kopierer dets indhold ind i containerbilledet.
  • Udvidelser – Modelskærmens udvidelsesfiler. Denne Lambda-udvidelse bruges til at logge input til inferensfunktionen og den tilsvarende forudsigelse til en S3-spand.
  • app/model – Modellen downloadet fra Hugging Face.
  • app/requirements.txt – Python-afhængighederne, der skal installeres i containeren.
  • begivenheder – Invokationshændelser, som du kan bruge til at teste funktionen.
  • template.yaml – En deskriptorfil, der definerer applikationens AWS-ressourcer.

Applikationen bruger flere AWS-ressourcer, herunder Lambda-funktioner og en Amazon API Gateway API. Disse ressourcer er defineret i template.yaml fil i dette projekt. Du kan opdatere skabelonen for at tilføje AWS-ressourcer gennem den samme implementeringsproces, som opdaterer din applikationskode.

Forudsætninger

For denne gennemgang skal du have følgende forudsætninger:

Implementer eksempelapplikationen

For at bygge din applikation for første gang skal du udføre følgende trin:

  • Kør følgende kode i din shell. (Dette bygger også udvidelsen):
  • Byg et Docker-billede af modelmonitorapplikationen. Byggeindholdet ligger i .aws-sam Vejviser
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

  • Log ind 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

  • Opret et lager i Amazon ECR:

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

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

  • Fjern kommentar linje #1 in app/Dockerfil og rediger det, så det peger på det korrekte ECR-lagerbillede, og fjern så linje #6 og #7 i app/dockerfil:
WORKDIR /opt
COPY --from=layer /opt/ .

  • Byg applikationen igen:

Vi bygger igen, fordi Lambda ikke understøtter Lambda-lag direkte til containerbilledets emballagetype. Vi skal først bygge modelovervågningskomponenten som et containerbillede, uploade det til Amazon ECR og derefter bruge det billede i modelovervågningsapplikationen som et containerlag.

  • Til sidst skal du implementere Lambda-funktionen, API Gateway og udvidelsen:
sam deploy --guided

Denne kommando pakker og implementerer din applikation til AWS med en række meddelelser:

  • Staknavn : Navnet på den udsendte AWS CloudFormation stak. Dette bør være unikt for din konto og region, og et godt udgangspunkt ville være noget, der matcher dit projektnavn.
  • AWS-regionen : AWS-regionen, som du implementerer din applikation til.
  • Bekræft ændringer før implementering : Hvis indstillet til yes, vises eventuelle ændringssæt til dig, før du kører til manuel gennemgang. Hvis indstillet til nej, implementerer AWS SAM CLI automatisk applikationsændringer.
  • Tillad oprettelse af AWS SAM CLI IAM-roller : Mange AWS SAM-skabeloner, inklusive dette eksempel, opretter AWS identitets- og adgangsstyring (IAM)-roller, der kræves til Lambda-funktion(er), der er inkluderet for at få adgang til AWS-tjenester. Som standard er disse omfanget ned til de mindst nødvendige tilladelser. For at implementere en CloudFormation-stak, der opretter eller ændrer IAM-roller, skal CAPABILITY_IAM værdi for capabilities skal stilles til rådighed. Hvis tilladelsen ikke gives via denne prompt, skal du udtrykkeligt bestå for at implementere dette eksempel --capabilities CAPABILITY_IAM til sam deploy kommando.
  • Gem argumenter til samconfig.toml : Hvis indstillet til yes, dine valg gemmes i en konfigurationsfil inde i projektet, så du i fremtiden bare kan køre sam deploy uden parametre til at implementere ændringer til din applikation.

Du kan finde din API Gateway-endepunkts URL i outputværdierne, der vises efter implementeringen.

Test applikationen

For at teste applikationen skal du bruge Postman eller curl til at sende en anmodning til API Gateway-slutpunktet. 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 output som følgende kode. ML-modellen udledte fra konteksten og returnerede svaret på vores spørgsmål.

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

Efter et par minutter skulle du se en fil i S3-bøtten nlp-qamodel-model-monitoring-modelmonitorbucket- med input og inferens logget.

Ryd op

For at slette den prøveapplikation, du har oprettet, skal du bruge AWS CLI:

aws cloudformation delete-stack --stack-name 

Konklusion

I dette indlæg implementerede vi en modelovervågningsfunktion som en Lambda-udvidelse og implementerede den til en Lambda ML-inferensarbejdsbelastning. Vi viste, hvordan du bygger og implementerer denne løsning til din egen AWS-konto. Til sidst viste vi, hvordan man kører en test for at verificere monitorens funktionalitet.

Angiv venligst eventuelle tanker eller spørgsmål i kommentarfeltet. For mere serverløse læringsressourcer, besøg Serverløst land.


Om forfatterne

Implementer en maskinlærings-inferensdatafangstløsning på AWS Lambda PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Dan Fox er en Principal Specialist Solutions Architect i Worldwide Specialist Organization for Serverless. Dan arbejder sammen med kunder for at hjælpe dem med at udnytte serverløse tjenester til at bygge skalerbare, fejltolerante, højtydende og omkostningseffektive applikationer. Dan er taknemmelig for at kunne bo og arbejde i dejlige Boulder, Colorado.

Implementer en maskinlærings-inferensdatafangstløsning på AWS Lambda PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Newton Jain er en Senior Product Manager med ansvar for at opbygge nye oplevelser inden for maskinlæring, high performance computing (HPC) og mediebehandlingskunder på AWS Lambda. Han leder udviklingen af ​​nye muligheder for at øge ydeevnen, reducere latens, forbedre skalerbarheden, forbedre pålideligheden og reducere omkostningerne. Han hjælper også AWS-kunder med at definere en effektiv serverløs strategi for deres computerintensive applikationer.

Implementer en maskinlærings-inferensdatafangstløsning på AWS Lambda PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Diksha Sharma er Solutions Architect og Machine Learning Specialist hos AWS. Hun hjælper kunder med at accelerere deres cloud-adoption, især inden for maskinlæring og serverløse teknologier. Diksha implementerer skræddersyede proofs of concept, der viser kunderne værdien af ​​AWS til at møde deres forretnings- og IT-udfordringer. Hun sætter kunderne i stand i deres viden om AWS og arbejder sammen med kunderne for at bygge deres ønskede løsning ud.

Implementer en maskinlærings-inferensdatafangstløsning på AWS Lambda PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Veda Raman er en Senior Specialist Solutions Architect for machine learning baseret i Maryland. Veda arbejder sammen med kunder for at hjælpe dem med at udvikle effektive, sikre og skalerbare maskinlæringsapplikationer. Veda er interesseret i at hjælpe kunder med at udnytte serverløse teknologier til maskinlæring.

Implementer en maskinlærings-inferensdatafangstløsning på AWS Lambda PlatoBlockchain Data Intelligence. Lodret søgning. Ai. Josh Kahn er verdensomspændende teknologileder for serverløs og en hovedløsningsarkitekt. Han leder et globalt fællesskab af serverløse eksperter hos AWS, som hjælper kunder i alle størrelser, fra nystartede virksomheder til verdens største virksomheder, med effektivt at bruge AWS serverløse teknologier.

Tidsstempel:

Mere fra AWS maskinindlæring