Med det växande antagandet av maskininlärning (ML) över branscher finns det en ökande efterfrågan på snabbare och enklare sätt att köra ML-inferens i stor skala. Användningsfall för ML, såsom upptäckt av tillverkningsfel, efterfrågeprognoser, bedrägeriövervakning och många andra, involverar tiotals eller tusentals datauppsättningar, inklusive bilder, videor, filer, dokument och andra artefakter. Dessa slutledningsanvändningsfall kräver vanligtvis att arbetsbelastningen skalas till tiotusentals parallella bearbetningsenheter. Enkelheten och automatiserade skalningen som erbjuds av AWS-serverlösa lösningar gör det till ett utmärkt val för att köra ML-inferens i stor skala. Genom att använda serverlös kan slutledningar köras utan provisionering eller hantering av servrar och samtidigt som man bara betalar för den tid det tar att köra. ML-utövare kan enkelt ta med sina egna ML-modeller och slutledningskod till AWS genom att använda behållare.
Det här inlägget visar hur du kör och skalar ML-inferens med AWS-serverlösa lösningar: AWS Lambda och AWS Fargate.
Lösningsöversikt
Följande diagram illustrerar lösningsarkitekturen för både batch- och realtidsinferensalternativ. Lösningen demonstreras med hjälp av ett exempel på bildklassificering. Källkoden för detta exempel är tillgänglig på GitHub.
AWS Fargate: Låter dig köra batch-inferens i skala med serverlösa behållare. Fargate-uppgiften laddar behållarbilden med slutledningskoden för bildklassificering.
AWS-batch: Tillhandahåller jobborkestrering för partislutledning genom att dynamiskt tillhandahålla Fargate-behållare enligt jobbkraven.
AWS Lambda: Låter dig köra ML-inferens i realtid i skala. Lambdafunktionen laddar inferenskoden för bildklassificering. Lambdafunktionen används också för att skicka in satsvis slutledningsjobb.
Amazon API Gateway: Tillhandahåller en REST API-slutpunkt för inferens Lambda-funktionen.
Amazon Simple Storage Service (S3): Lagrar indatabilder och slutledningsresultat för batch slutledning.
Amazon Elastic Container Registry (ECR): Lagrar behållarbilden med slutledningskod för Fargate-behållare.
Distribuera lösningen
Vi har skapat en AWS Cloud Development Kit (CDK) mall för att definiera och konfigurera resurserna för exempellösningen. CDK låter dig tillhandahålla infrastrukturen och bygga distributionspaket för både Lambda Function och Fargate-behållaren. Paketen innehåller vanliga ML-bibliotek, som t.ex Apache MX Net och Python, tillsammans med deras beroenden. Lösningen kör slutledningskoden med hjälp av en ResNet-50-modell tränad på IMAGEnet dataset för att känna igen objekt i en bild. Modellen kan klassificera bilder i 1000 objektkategorier, såsom tangentbord, pekare, penna och många djur. Slutledningskoden laddar ner den ingående bilden och utför prediktionen med de fem klasser som bilden mest relaterar med respektive sannolikhet.
För att följa med och köra lösningen behöver du tillgång till:
För att distribuera lösningen, öppna ditt terminalfönster och slutför följande steg.
- Klona GitHub repo
- Navigera till projektkatalogen och distribuera CDK-applikationen.
Ange Y för att fortsätta med distributionen.
Detta utför följande steg för att distribuera och konfigurera de nödvändiga resurserna i ditt AWS-konto. Det kan ta cirka 30 minuter för den första distributionen, eftersom den bygger Docker-bilden och andra artefakter. Efterföljande distributioner slutförs vanligtvis inom några minuter.
- Skapar en CloudFormation-stack ("MLServerlessStack").
- Skapar en containerbild från Dockerfilen och slutledningskoden för batch-inferens.
- Skapar ett ECR-förråd och publicerar behållarbilden till detta arkiv.
- Skapar en lambdafunktion med slutledningskoden för realtidsinferens.
- Skapar en batch-jobbkonfiguration med Fargate-beräkningsmiljön i AWS Batch.
- Skapar en S3-hink för att lagra slutledningsbilder och resultat.
- Skapar en lambdafunktion för att skicka batchjobb som svar på bilduppladdningar till S3-bucket.
Löpningsinferens
Exempellösningen låter dig få förutsägelser för antingen en uppsättning bilder med batch-inferens eller för en enskild bild åt gången med hjälp av realtids-API-slutpunkt. Slutför följande steg för att köra slutsatser för varje scenario.
Batchavledning
Få batch-förutsägelser genom att ladda upp bildfiler till Amazon S3.
- Använda Amazon S3-konsol Eller använda AWS CLI, ladda upp en eller flera bildfiler till S3 bucket-sökvägen ml-serverlös-hink--/inmatning.
- Detta kommer att utlösa batchjobbet, vilket kommer att spin-off Fargate-uppgifter för att köra slutsatsen. Du kan övervaka jobbstatusen i AWS Batch-konsol.
- När jobbet är klart (detta kan ta några minuter), kan slutledningsresultaten nås från ml-serverlös-hink--/produktion väg.
Inferens i realtid
Få realtidsförutsägelser genom att anropa REST API-slutpunkten med en bildnyttolast.
- Navigera till CloudFormation-konsol och hitta API-slutpunkts-URL (httpAPIUrl) från stackutgången.
- Använd en API-klient, som Postman or curl kommando för att skicka en POST-begäran till
/predict
API-slutpunkt med bildfilens nyttolast. - Slutledningsresultat returneras i API-svaret.
Ytterligare rekommendationer och tips
Här är några ytterligare rekommendationer och alternativ att överväga för att finjustera provet för att uppfylla dina specifika krav:
- Skalning – Uppdatera AWS tjänstekvoter i ditt konto och region enligt din skalning och samtidighetsbehov för att köra lösningen i skala. Till exempel, om ditt användningsfall kräver skalning utöver standardgräns för samtidiga körningar av lambda, då måste du öka denna gräns för att nå önskad samtidighet. Du behöver också storlek på din VPC och undernät med ett tillräckligt brett IP-adressintervall för att tillåta den nödvändiga samtidigheten för Fargate-uppgifter.
- Prestanda – Utför belastningstester och finjustera prestanda över varje lager för att möta dina behov.
- Använd behållarbilder med Lambda – Detta låter dig använda behållare med både AWS Lambda och AWS Fargate, och du kan förenkla källkodshantering och paketering.
- Använda AWS Lambda för satsslutledningar – Du kan använda Lambda-funktioner för satsslutledningar också om slutledningslagrings- och bearbetningstiderna ligger inom Lambdagränser.
- Använda Fargate Spot – Detta låter dig köra avbrottstoleranta uppgifter till ett rabatterat pris jämfört med Fargate-priset och minska kostnaden för beräkningsresurser.
- Använda Amazon ECS-containerinstanser med Amazon EC2 – För användningsfall som behöver en specifik typ av beräkning kan du använda EC2-instanser istället för Fargate.
Städar upp
Navigera till projektkatalogen från terminalfönstret och kör följande kommando för att förstöra alla resurser och undvika framtida avgifter.
Slutsats
Det här inlägget demonstrerade hur du tar med dina egna ML-modeller och slutledningskod och kör dem i skala med serverlösa lösningar i AWS. Lösningen gjorde det möjligt att distribuera din slutledningskod i AWS Fargate och AWS Lambda. Dessutom distribuerade den också en API-slutpunkt med hjälp av Amazon API Gateway för realtids slutsatser och batch-jobb orkestrering med hjälp av AWS-batch för batch slutsatser. Effektivt låter den här lösningen dig fokusera på att bygga ML-modeller genom att tillhandahålla ett effektivt och kostnadseffektivt sätt att tjäna förutsägelser i stor skala.
Prova det idag, och vi ser fram emot att se de spännande maskininlärningsapplikationer som du tar med dig till AWS Serverless!
Ytterligare läsning:
Om författarna
Poornima Chand är Senior Solutions Architect i Strategic Accounts Solutions Architecture-teamet på AWS. Hon arbetar med kunder för att hjälpa till att lösa deras unika utmaningar med hjälp av AWS-tekniklösningar. Hon fokuserar på serverlösa teknologier och tycker om att arkitektur och bygga skalbara lösningar.
Greg Medard är en lösningsarkitekt med AWS affärsutveckling och strategiska industrier. Han hjälper kunder med arkitektur, design och utveckling av molnoptimerade infrastrukturlösningar. Hans passion är att påverka kulturella uppfattningar genom att anta DevOps-koncept som klarar organisatoriska utmaningar på vägen. Utanför jobbet kanske du upptäcker att han spenderar tid med sin familj, leker med en ny pryl eller reser för att utforska nya platser och smaker.
Mani Khanuja är en specialist på artificiell intelligens och maskininlärning SA på Amazon Web Services (AWS). Hon hjälper kunder som använder maskininlärning för att lösa sina affärsutmaningar med hjälp av AWS. Hon ägnar det mesta av sin tid åt att dyka djupt och lära kunder om AI/ML-projekt relaterade till datorseende, naturlig språkbehandling, prognoser, ML vid kanten och mer. Hon brinner för ML på kanten, därför har hon skapat ett eget labb med självkörande kit och produktionslinje för prototyptillverkning, där hon tillbringar mycket av sin fritid.
Vasu Sankhavaram är Senior Manager of Solutions Architecture i Amazon Web Services (AWS). Han leder Solutions Architects dedikerade till Hitech-konton. Vasu har en MBA från UC Berkeley och en kandidatexamen i teknik från University of Mysore, Indien. Vasu och hans fru har händerna fulla med en son som är tvåa på Purdue, tvillingdöttrar i tredje klass och en gyllene doodle med gränslös energi.
Chitresh Saxena är Senior Technical Account Manager på Amazon Web Services. Han har en stark bakgrund inom ML, Data Analytics och webbteknologier. Hans passion är att lösa kundproblem, bygga effektiva och effektiva lösningar på molnet med AI, Data Science och Machine Learning.
- '
- "
- 100
- 7
- tillgång
- Konto
- Annat
- Antagande
- AI
- Alla
- amason
- Amazon API Gateway
- Amazon Web Services
- Amazon Web Services (AWS)
- analytics
- djur
- Apache
- api
- Ansökan
- tillämpningar
- arkitektur
- runt
- artificiell intelligens
- Konstgjord intelligens och maskininlärning
- Automatiserad
- AWS
- AWS Lambda
- Berkeley
- Gränslös
- SLUTRESULTAT
- Byggnad
- företag
- fall
- avgifter
- klassificering
- cloud
- koda
- Compute
- Datorsyn
- konfiguration
- Behållare
- Behållare
- Kunder
- datum
- Data Analytics
- datavetenskap
- Efterfrågan
- Förfrågan om efterfrågan
- Designa
- förstöra
- Detektering
- Utveckling
- DevOps
- Hamnarbetare
- dokument
- kant
- Effektiv
- Slutpunkt
- energi
- Teknik
- Miljö
- familj
- änden
- Fokus
- följer
- Framåt
- bedrägeri
- Fri
- full
- fungera
- framtida
- gå
- GitHub
- stor
- Odling
- Hur ser din drömresa ut
- How To
- HTTPS
- bild
- Inklusive
- Öka
- indien
- industrier
- påverka
- Infrastruktur
- Intelligens
- IP
- IP-adress
- IT
- Jobb
- Lediga jobb
- utrustning
- språk
- inlärning
- linje
- läsa in
- maskininlärning
- ledning
- Produktion
- ML
- modell
- Naturligt språk
- Naturlig språkbehandling
- öppet
- Tillbehör
- Övriga
- Övrigt
- förpackning
- prestanda
- förutsägelse
- Förutsägelser
- pris
- Produktion
- projektet
- projekt
- Python
- område
- Läsning
- realtid
- minska
- Krav
- Resurser
- respons
- REST
- Resultat
- Körning
- rinnande
- Skala
- skalning
- Vetenskap
- själv driving
- Server
- Tjänster
- in
- Enkelt
- Lösningar
- LÖSA
- dess
- Spendera
- status
- förvaring
- lagra
- lagrar
- Strategisk
- övervakning
- Undervisning
- Teknisk
- Tekniken
- Teknologi
- tester
- tid
- universitet
- Uppdatering
- Video
- syn
- webb
- webbservice
- inom
- Arbete
- fungerar