Implementera en lösning för datainsamling av maskininlärning på AWS Lambda PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Implementera en lösning för maskininlärning av slutledningsdatainsamling på AWS Lambda

Övervakning av maskininlärningsförutsägelser (ML) kan bidra till att förbättra kvaliteten på utplacerade modeller. Att fånga in data från slutsatser som gjorts i produktionen kan göra det möjligt för dig att övervaka dina utplacerade modeller och upptäcka avvikelser i modellkvalitet. Tidig och proaktiv upptäckt av dessa avvikelser gör det möjligt för dig att vidta korrigerande åtgärder, såsom omskolningsmodeller, granskning av uppströmssystem eller åtgärda kvalitetsproblem.

AWS Lambda är en serverlös beräkningstjänst som kan ge ML-inferens i realtid i stor skala. I det här inlägget visar vi ett exempel på datafångstfunktion som kan distribueras till en Lambda ML-inferensarbetsbelastning.

I december 2020 introducerade Lambda stöd för behållarbilder som förpackningsformat. Den här funktionen ökade storleksgränsen för distributionspaketet från 500 MB till 10 GB. Innan denna funktion lanserades gjorde paketstorleksbegränsningen det svårt att distribuera ML-ramverk som TensorFlow eller PyTorch till Lambda-funktioner. Efter lanseringen gjorde den ökade paketstorleksgränsen ML till en lönsam och attraktiv arbetsbörda att distribuera till Lambda. 2021 var ML-inferens en av de snabbast växande arbetsbelastningstyperna i Lambda-tjänsten.

Amazon SageMaker, Amazons helt hanterade ML-tjänst, innehåller sin egen modellövervakningsfunktion. Exempelprojektet i det här inlägget visar dock hur man utför datafångst för användning i modellövervakning för kunder som använder Lambda för ML-inferens. Projektet använder Lambda-tillägg för att fånga inferensdata för att minimera påverkan på inferensfunktionens prestanda och latens. Att använda Lambda-tillägg minimerar också påverkan på funktionsutvecklare. Genom att integrera via en förlängning kan övervakningsfunktionen appliceras på flera funktioner och underhållas av ett centraliserat team.

Översikt över lösningen

Det här projektet innehåller källkod och stödfiler för en serverlös applikation som ger realtidsinferencing med hjälp av en distilbert-baserad, förtränad frågesvarsmodell. Projektet använder modellen Hugging Face fråge- och svarsbehandling av naturligt språk (NLP) med PyTorch att utföra naturliga språkinferensuppgifter. Projektet innehåller också en lösning för att utföra inferensdatafångst för modellförutsägelserna. Lambdafunktionsskrivaren kan bestämma exakt vilka data från inferensbegäran och prediktionsresultatet som ska skickas till anknytningen. I denna lösning skickar vi ingången och svaret från modellen till tillägget. Förlängningen skickar sedan periodvis data till en Amazon enkel lagringstjänst (Amazon S3) hink. Vi bygger datainsamlingstillägget som en containerbild med hjälp av en makefile. Vi bygger sedan Lambda-inferensfunktionen som en behållarbild och lägger till förlängningsbehållarbilden som ett behållarbildlager. Följande diagram visar en översikt över arkitekturen.

Lambda-förlängningar är ett sätt att utöka Lambda-funktionerna. I det här projektet använder vi en extern Lambda-tillägg för att logga slutledningsbegäran och förutsägelsen från slutledningen. Den externa tillägget körs som en separat process i Lambda-runtime-miljön, vilket minskar påverkan på slutledningsfunktionen. Funktionen delar dock resurser som CPU, minne och lagring med Lambda-funktionen. Vi rekommenderar att du allokerar tillräckligt med minne till Lambda-funktionen för att säkerställa optimal resurstillgänglighet. (I våra tester allokerade vi 5 GB minne till inferens Lambda-funktionen och såg optimal resurstillgänglighet och inferenslatens). När en slutsats är klar, returnerar Lambda-tjänsten svaret omedelbart och väntar inte på att förlängningen ska slutföra loggning av begäran och svaret till S3-skopan. Med det här mönstret påverkar övervakningsförlängningen inte slutledningsfördröjningen. För att lära dig mer om Lambda-tillägg kolla in dessa videoserier.

Projektinnehåll

Detta projekt använder AWS serverlös applikationsmodell (AWS SAM) kommandoradsgränssnitt (CLI). Detta kommandoradsverktyg låter utvecklare initiera och konfigurera applikationer; paketera, bygga och testa lokalt; och distribuera till AWS-molnet.

Du kan ladda ner källkoden för detta projekt från GitHub-förrådet.

Detta projekt innehåller följande filer och mappar:

  • app/app.py – Kod för applikationens lambdafunktion, inklusive koden för ML-inferencing.
  • app/Dockerfile – Dockerfilen för att bygga behållarbilden som paketerar inferensfunktionen, modellen som laddats ner från Hugging Face och Lambda-tillägget byggt som ett lager. Till skillnad från .zip-funktioner kan lager inte fästas på containerförpackade Lambda-funktioner när funktion skapas. Istället bygger vi lagret och kopierar dess innehåll till behållarbilden.
  • förlängningar – Tilläggsfilerna för modellmonitorn. Denna Lambda-förlängning används för att logga ingången till slutledningsfunktionen och motsvarande förutsägelse till en S3-skopa.
  • app/modell – Modellen laddad ner från Hugging Face.
  • app/requirements.txt – Python-beroendena som ska installeras i behållaren.
  • händelser – Anropshändelser som du kan använda för att testa funktionen.
  • template.yaml – En deskriptorfil som definierar programmets AWS-resurser.

Applikationen använder flera AWS-resurser, inklusive Lambda-funktioner och en Amazon API Gateway API. Dessa resurser definieras i template.yaml fil i detta projekt. Du kan uppdatera mallen för att lägga till AWS-resurser genom samma distributionsprocess som uppdaterar din applikationskod.

Förutsättningar

För detta genomgång bör du ha följande förutsättningar:

Implementera exempelapplikationen

För att skapa din applikation för första gången, slutför följande steg:

  • Kör följande kod i ditt skal. (Detta kommer att bygga tillägget också):
  • Bygg en Docker-bild av modellmonitorapplikationen. Bygginnehållet finns 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

  • Logga in 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

  • Skapa ett arkiv i Amazon ECR:

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

  • Skjut behållarbilden till Amazon ECR:
docker push .dkr.ecr.us-east-1.amazonaws.com/serverless-ml-model-monitor:latest

  • Avkommentera rad #1 in app/Dockerfile och redigera den så att den pekar på den korrekta ECR-förvarsbilden, avkommentera sedan rad #6 och #7 i app/dockerfil:
WORKDIR /opt
COPY --from=layer /opt/ .

  • Bygg applikationen igen:

Vi bygger igen eftersom Lambda inte stöder Lambda-lager direkt för förpackningstypen containerbild. Vi måste först bygga modellövervakningskomponenten som en containerbild, ladda upp den till Amazon ECR och sedan använda den bilden i modellövervakningsapplikationen som ett containerlager.

  • Slutligen, distribuera Lambda-funktionen, API Gateway och tillägget:
sam deploy --guided

Detta kommando paketerar och distribuerar din applikation till AWS med en rad uppmaningar:

  • Stapla namn : Namnet på den utplacerade AWS molnformation stack. Detta bör vara unikt för ditt konto och din region, och en bra utgångspunkt skulle vara något som matchar ditt projektnamn.
  • AWS-regionen : AWS-regionen till vilken du distribuerar din applikation.
  • Bekräfta ändringar före distribution : Om inställt på yes, visas alla ändringsuppsättningar för dig innan du kör för manuell granskning. Om inställt på nej, distribuerar AWS SAM CLI automatiskt applikationsändringar.
  • Tillåt AWS SAM CLI IAM rollskapande : Många AWS SAM-mallar, inklusive detta exempel, skapas AWS identitets- och åtkomsthantering (IAM)-roller som krävs för lambdafunktion(er) som ingår för att få åtkomst till AWS-tjänster. Som standard är dessa begränsade till de minsta nödvändiga behörigheterna. För att distribuera en CloudFormation-stack som skapar eller modifierar IAM-roller, CAPABILITY_IAM värde för capabilities måste bli försedd. Om tillstånd inte ges via den här prompten måste du uttryckligen godkänna detta för att distribuera det här exemplet --capabilities CAPABILITY_IAM till sam deploy kommando.
  • Spara argument till samconfig.toml : Om inställt på yes, dina val sparas i en konfigurationsfil i projektet så att du i framtiden bara kan köra sam deploy utan parametrar för att distribuera ändringar i din applikation.

Du kan hitta din API Gateway-slutpunkts-URL i utdatavärdena som visas efter implementeringen.

Testa applikationen

För att testa applikationen, använd Postman eller curl för att skicka en begäran till API Gateway-slutpunkten. Till exempel:

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öljande kod. ML-modellen härledde från sammanhanget och gav svaret på vår fråga.

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

Efter några minuter bör du se en fil i S3-hinken nlp-qamodel-model-monitoring-modelmonitorbucket- med ingången och slutledningen loggade.

Städa upp

För att ta bort exempelapplikationen som du skapade, använd AWS CLI:

aws cloudformation delete-stack --stack-name 

Slutsats

I det här inlägget implementerade vi en modellövervakningsfunktion som en Lambda-tillägg och distribuerade den till en Lambda ML-inferensarbetsbelastning. Vi visade hur man bygger och distribuerar den här lösningen till ditt eget AWS-konto. Slutligen visade vi hur man kör ett test för att verifiera monitorns funktionalitet.

Vänligen ange eventuella tankar eller frågor i kommentarsfältet. För mer serverlösa lärresurser, besök Serverlöst land.


Om författarna

Implementera en lösning för datainsamling av maskininlärning på AWS Lambda PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Dan Fox är en Principal Specialist Solutions Architect i Worldwide Specialist Organization for Serverless. Dan arbetar med kunder för att hjälpa dem att utnyttja serverlösa tjänster för att bygga skalbara, feltoleranta, högpresterande och kostnadseffektiva applikationer. Dan är tacksam över att kunna bo och arbeta i vackra Boulder, Colorado.

Implementera en lösning för datainsamling av maskininlärning på AWS Lambda PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Newton Jain är en Senior Product Manager med ansvar för att bygga nya upplevelser för maskininlärning, högpresterande beräkningar (HPC) och mediebearbetningskunder på AWS Lambda. Han leder utvecklingen av nya funktioner för att öka prestandan, minska latens, förbättra skalbarheten, förbättra tillförlitligheten och minska kostnaderna. Han hjälper också AWS-kunder att definiera en effektiv serverlös strategi för deras datorintensiva applikationer.

Implementera en lösning för datainsamling av maskininlärning på AWS Lambda PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Diksha Sharma är en lösningsarkitekt och en maskininlärningsspecialist på AWS. Hon hjälper kunder att påskynda sin molnintroduktion, särskilt inom områdena maskininlärning och serverlös teknologi. Diksha använder skräddarsydda proof of concept som visar kunderna värdet av AWS för att möta deras affärs- och IT-utmaningar. Hon möjliggör för kunderna i deras kunskap om AWS och arbetar tillsammans med kunderna för att bygga fram deras önskade lösning.

Implementera en lösning för datainsamling av maskininlärning på AWS Lambda PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Veda Raman är en Senior Specialist Solutions Architect för maskininlärning baserad i Maryland. Veda arbetar med kunder för att hjälpa dem att skapa effektiva, säkra och skalbara maskininlärningsapplikationer. Veda är intresserade av att hjälpa kunder att utnyttja serverlösa teknologier för maskininlärning.

Implementera en lösning för datainsamling av maskininlärning på AWS Lambda PlatoBlockchain Data Intelligence. Vertikal sökning. Ai. Josh Kahn är världsomspännande teknisk ledare för serverlöst och en huvudlösningsarkitekt. Han leder en global community av serverlösa experter på AWS som hjälper kunder av alla storlekar, från nystartade företag till världens största företag, att effektivt använda AWS serverlösa teknologier.

Tidsstämpel:

Mer från AWS maskininlärning