Implementeer een machine learning-oplossing voor het vastleggen van inferentiegegevens op AWS Lambda PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Implementeer een machine learning-oplossing voor het vastleggen van inferentiegegevens op AWS Lambda

Door machine learning-voorspellingen (ML) te bewaken, kan de kwaliteit van geïmplementeerde modellen worden verbeterd. Door de gegevens vast te leggen uit gevolgtrekkingen die in productie zijn gemaakt, kunt u uw geïmplementeerde modellen bewaken en afwijkingen in de modelkwaliteit detecteren. Vroege en proactieve detectie van deze afwijkingen stelt u in staat corrigerende maatregelen te nemen, zoals het bijscholen van modellen, het controleren van upstream-systemen of het oplossen van kwaliteitsproblemen.

AWS Lambda is een serverloze rekenservice die realtime ML-inferentie op schaal kan bieden. In dit bericht demonstreren we een voorbeeldfunctie voor het vastleggen van gegevens die kan worden geïmplementeerd op een Lambda ML-inferentie-workload.

In december 2020 introduceerde Lambda ondersteuning voor containerafbeeldingen als verpakkingsformaat. Deze functie verhoogde de limiet voor de grootte van het implementatiepakket van 500 MB naar 10 GB. Voorafgaand aan de lancering van deze functie maakte de beperking van de pakketgrootte het moeilijk om ML-frameworks zoals TensorFlow of PyTorch te implementeren voor Lambda-functies. Na de lancering maakte de verhoogde limiet voor pakketgrootte ML tot een levensvatbare en aantrekkelijke werklast om in Lambda te implementeren. In 2021 was ML-inferentie een van de snelst groeiende soorten werklast in de Lambda-service.

Amazon Sage Maker, de volledig beheerde ML-service van Amazon, bevat een eigen modelbewakingsfunctie. Het voorbeeldproject in dit bericht laat echter zien hoe u gegevens kunt vastleggen voor gebruik bij modelbewaking voor klanten die Lambda gebruiken voor ML-inferentie. Het project gebruikt Lambda-extensies om inferentiegegevens vast te leggen om de impact op de prestaties en latentie van de inferentiefunctie te minimaliseren. Het gebruik van Lambda-extensies minimaliseert ook de impact op functieontwikkelaars. Door integratie via een extensie kan de bewakingsfunctie worden toegepast op meerdere functies en worden onderhouden door een gecentraliseerd team.

Overzicht van de oplossing

Dit project bevat broncode en ondersteunende bestanden voor een serverloze applicatie die real-time inferentie biedt met behulp van een op distilbert gebaseerd, vooraf getraind vraagbeantwoordingsmodel. Het project maakt gebruik van het Hugging Face-vraag- en antwoordmodel voor natuurlijke taalverwerking (NLP) met PyTorch om natuurlijke taalinferentietaken uit te voeren. Het project bevat ook een oplossing voor het vastleggen van inferentiegegevens voor de modelvoorspellingen. De Lambda-functieschrijver kan precies bepalen welke gegevens van de invoer van het inferentieverzoek en het voorspellingsresultaat naar de extensie moeten worden verzonden. In deze oplossing sturen we de invoer en het antwoord van het model naar de extensie. De extensie stuurt de gegevens vervolgens periodiek naar een Amazon eenvoudige opslagservice (Amazon S3) emmer. We bouwen de extensie voor het vastleggen van gegevens als een containerafbeelding met behulp van a makefile. We bouwen vervolgens de Lambda-inferentiefunctie als een containerafbeelding en voegen de extensiecontainerafbeelding toe als een containerafbeeldingslaag. Het volgende diagram toont een overzicht van de architectuur.

Lambda-extensies zijn een manier om Lambda-functies uit te breiden. In dit project gebruiken we een externe Lambda-extensie om het inferentieverzoek en de voorspelling van de gevolgtrekking te loggen. De externe extensie draait als een apart proces in de Lambda runtime-omgeving, waardoor de impact op de inferentiefunctie wordt verminderd. De functie deelt echter bronnen zoals CPU, geheugen en opslag met de Lambda-functie. We raden aan om voldoende geheugen toe te wijzen aan de Lambda-functie om een ​​optimale beschikbaarheid van bronnen te garanderen. (Tijdens onze tests hebben we 5 GB geheugen toegewezen aan de inferentie-Lambda-functie en zagen we optimale beschikbaarheid van bronnen en inferentielatentie). Wanneer een gevolgtrekking is voltooid, retourneert de Lambda-service het antwoord onmiddellijk en wacht niet tot de extensie klaar is met het loggen van het verzoek en het antwoord naar de S3-bucket. Met dit patroon heeft de bewakings-extensie geen invloed op de latentie van gevolgtrekkingen. Voor meer informatie over Lambda-extensies bekijk deze videoseries.

Inhoud van het project

Dit project maakt gebruik van de AWS serverloos toepassingsmodel (AWS SAM) opdrachtregelinterface (CLI). Met deze opdrachtregeltool kunnen ontwikkelaars applicaties initialiseren en configureren; lokaal inpakken, bouwen en testen; en implementeren in de AWS Cloud.

U kunt de broncode voor dit project downloaden van de GitHub-repository.

Dit project bevat de volgende bestanden en mappen:

  • app/app.py – Code voor de Lambda-functie van de applicatie, inclusief de code voor ML-inferentie.
  • app/dockerbestand – De Dockerfile om de containerafbeelding te bouwen die de inferentiefunctie verpakt, het model dat is gedownload van Hugging Face en de Lambda-extensie die als een laag is gebouwd. In tegenstelling tot .zip-functies kunnen lagen niet worden gekoppeld aan in containers verpakte Lambda-functies tijdens het maken van de functie. In plaats daarvan bouwen we de laag en kopiëren we de inhoud naar de containerafbeelding.
  • uitbreidingen – De extensiebestanden van de modelmonitor. Deze Lambda-extensie wordt gebruikt om de invoer naar de inferentiefunctie en de bijbehorende voorspelling naar een S3-bucket te loggen.
  • app/model – Het model gedownload van Hugging Face.
  • app/vereisten.txt – De Python-afhankelijkheden die in de container moeten worden geïnstalleerd.
  • EVENTS – Aanroepgebeurtenissen die u kunt gebruiken om de functie te testen.
  • sjabloon.yaml – Een descriptorbestand dat de AWS-bronnen van de toepassing definieert.

De applicatie maakt gebruik van verschillende AWS-bronnen, waaronder Lambda-functies en een Amazon API-gateway API. Deze middelen zijn gedefinieerd in de template.yaml bestand in dit project. U kunt de sjabloon bijwerken om AWS-bronnen toe te voegen via hetzelfde implementatieproces dat uw toepassingscode bijwerkt.

Voorwaarden

Voor deze walkthrough moet u aan de volgende vereisten voldoen:

De voorbeeldtoepassing implementeren

Voer de volgende stappen uit om uw toepassing voor de eerste keer te bouwen:

  • Voer de volgende code uit in uw shell. (Hiermee wordt ook de extensie gebouwd):
  • Bouw een Docker-image van de modelmonitortoepassing. De inhoud van de build bevindt zich in de .aws-sam directory
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 in op Amazon ECR:
aws ecr get-login-password --region us-east-1 docker login --username AWS --password-stdin .dkr.ecr.us-east-1.amazonaws.com

  • Maak een opslagplaats in Amazon ECR:

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

  • Duw de containerafbeelding naar Amazon ECR:
docker push .dkr.ecr.us-east-1.amazonaws.com/serverless-ml-model-monitor:latest

  • Uncomment regel #1 in app/dockerbestand en bewerk het zodat het naar de juiste ECR-repository-afbeelding verwijst, en verwijder vervolgens de opmerkingen van regels #6 en #7 in app/dockerbestand:
WORKDIR /opt
COPY --from=layer /opt/ .

  • Bouw de applicatie opnieuw:

We bouwen opnieuw omdat Lambda Lambda-lagen niet rechtstreeks ondersteunt voor het verpakkingstype containerafbeelding. We moeten eerst de modelbewakingscomponent bouwen als een containerafbeelding, deze uploaden naar Amazon ECR en die afbeelding vervolgens gebruiken in de modelbewakingstoepassing als een containerlaag.

  • Implementeer ten slotte de Lambda-functie, API Gateway en extensie:
sam deploy --guided

Deze opdracht verpakt en implementeert uw toepassing naar AWS met een reeks prompts:

  • Stack naam : De naam van de ingezette AWS CloudFormatie stapel. Dit moet uniek zijn voor uw account en regio, en een goed startpunt zou iets zijn dat overeenkomt met uw projectnaam.
  • AWS-regio : De AWS-regio waarin u uw toepassing implementeert.
  • Bevestig de wijzigingen voordat u deze implementeert : Indien ingesteld op yes, worden alle wijzigingssets aan u getoond voordat ze worden uitgevoerd voor handmatige beoordeling. Indien ingesteld op nee, implementeert de AWS SAM CLI automatisch applicatiewijzigingen.
  • Maken van AWS SAM CLI IAM-rollen toestaan : Veel AWS SAM-sjablonen, waaronder dit voorbeeld, maken AWS Identiteits- en toegangsbeheer (IAM)-rollen vereist voor de Lambda-functie(s) inbegrepen om toegang te krijgen tot AWS-services. Standaard zijn deze beperkt tot de minimaal vereiste machtigingen. Om een ​​CloudFormation-stack te implementeren die IAM-rollen creëert of wijzigt, moet de CAPABILITY_IAM waarde voor capabilities moet worden verstrekt. Als er geen toestemming wordt gegeven via deze prompt, moet u om dit voorbeeld te implementeren expliciet doorgeven --capabilities CAPABILITY_IAM aan de sam deploy opdracht.
  • Bewaar argumenten in samconfig.toml : Indien ingesteld op yes, worden uw keuzes opgeslagen in een configuratiebestand in het project, zodat u in de toekomst gewoon kunt uitvoeren sam deploy zonder parameters om wijzigingen in uw toepassing door te voeren.

U kunt uw API Gateway-eindpunt-URL vinden in de uitvoerwaarden die na implementatie worden weergegeven.

Test de applicatie

Om de toepassing te testen, gebruikt u Postman of curl om een ​​aanvraag naar het API Gateway-eindpunt te verzenden. Bijvoorbeeld:

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."}'

U zou de uitvoer moeten zien zoals de volgende code. Het ML-model afgeleid uit de context en gaf het antwoord op onze vraag.

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

Na een paar minuten zou je een bestand in de S3-bucket moeten zien nlp-qamodel-model-monitoring-modelmonitorbucket- met de invoer en de gevolgtrekking vastgelegd.

Opruimen

Gebruik de AWS CLI om de voorbeeldtoepassing die u hebt gemaakt te verwijderen:

aws cloudformation delete-stack --stack-name 

Conclusie

In dit bericht hebben we een functie voor modelbewaking geïmplementeerd als een Lambda-extensie en deze geïmplementeerd in een Lambda ML-inferentie-workload. We hebben laten zien hoe u deze oplossing kunt bouwen en implementeren op uw eigen AWS-account. Ten slotte hebben we laten zien hoe u een test kunt uitvoeren om de functionaliteit van de monitor te verifiëren.

Geef eventuele gedachten of vragen op in het opmerkingengedeelte. Ga voor meer serverloze leermiddelen naar Serverloos land.


Over de auteurs

Implementeer een machine learning-oplossing voor het vastleggen van inferentiegegevens op AWS Lambda PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Dan Vos is een Principal Specialist Solutions Architect in de Worldwide Specialist Organization for Serverless. Dan werkt samen met klanten om hen te helpen serverloze services te gebruiken om schaalbare, fouttolerante, goed presterende, kosteneffectieve applicaties te bouwen. Dan is dankbaar dat hij in het mooie Boulder, Colorado kan wonen en werken.

Implementeer een machine learning-oplossing voor het vastleggen van inferentiegegevens op AWS Lambda PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Newton Jaïn is een Senior Product Manager die verantwoordelijk is voor het bouwen van nieuwe ervaringen voor machine learning, high performance computing (HPC) en mediaverwerkingsklanten op AWS Lambda. Hij leidt de ontwikkeling van nieuwe mogelijkheden om de prestaties te verbeteren, de latentie te verminderen, de schaalbaarheid te verbeteren, de betrouwbaarheid te vergroten en de kosten te verlagen. Hij helpt AWS-klanten ook bij het definiëren van een effectieve serverloze strategie voor hun rekenintensieve applicaties.

Implementeer een machine learning-oplossing voor het vastleggen van inferentiegegevens op AWS Lambda PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Diksha Sharma is Solutions Architect en Machine Learning Specialist bij AWS. Ze helpt klanten hun cloudadoptie te versnellen, met name op het gebied van machine learning en serverloze technologieën. Diksha implementeert op maat gemaakte proofs of concept die klanten de waarde van AWS laten zien bij het aangaan van hun zakelijke en IT-uitdagingen. Ze stelt klanten in hun kennis van AWS en werkt samen met klanten om hun gewenste oplossing uit te bouwen.

Implementeer een machine learning-oplossing voor het vastleggen van inferentiegegevens op AWS Lambda PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Veda Raman is een Senior Specialist Solutions Architect voor machine learning, gevestigd in Maryland. Veda werkt samen met klanten om hen te helpen bij het ontwerpen van efficiënte, veilige en schaalbare machine learning-applicaties. Veda is geïnteresseerd in het helpen van klanten om serverloze technologieën te gebruiken voor machine learning.

Implementeer een machine learning-oplossing voor het vastleggen van inferentiegegevens op AWS Lambda PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai. Josh Kahn is de wereldwijde Tech Leader voor Serverless en een Principal Solutions Architect. Hij leidt een wereldwijde gemeenschap van serverloze experts bij AWS die klanten van elke omvang, van start-ups tot 's werelds grootste ondernemingen, helpen om AWS serverloze technologieën effectief te gebruiken.

Tijdstempel:

Meer van AWS-machine learning