Detta är del 3 i vår serie där vi designar och implementerar en MLOps-pipeline för visuell kvalitetsinspektion vid kanten. I det här inlägget fokuserar vi på hur man automatiserar edge-deployment-delen av end-to-end MLOps-pipeline. Vi visar dig hur du använder AWS IoT Greengrass att hantera modellinferens vid kanten och hur man automatiserar processen med hjälp av AWS stegfunktioner och andra AWS-tjänster.
Lösningsöversikt
In del 1 i den här serien har vi lagt ut en arkitektur för vår end-to-end MLOps-pipeline som automatiserar hela processen för maskininlärning (ML), från datamärkning till modellträning och implementering vid kanten. I del 2, visade vi hur man automatiserar märknings- och modellutbildningsdelarna i pipelinen.
Användningsexemplet som används för den här serien är en visuell kvalitetsinspektionslösning som kan upptäcka defekter på metalletiketter, som du kan använda som en del av en tillverkningsprocess. Följande diagram visar högnivåarkitekturen för MLOps-pipelinen som vi definierade i början av denna serie. Om du inte har läst den än rekommenderar vi att du kollar in del 1.
Automatisera edge-distributionen av en ML-modell
Efter att en ML-modell har tränats och utvärderats måste den distribueras till ett produktionssystem för att skapa affärsvärde genom att göra förutsägelser om inkommande data. Denna process kan snabbt bli komplex i en kantmiljö där modeller måste distribueras och köras på enheter som ofta är placerade långt borta från molnmiljön där modellerna har tränats. Följande är några av utmaningarna som är unika för maskininlärning vid kanten:
- ML-modeller behöver ofta optimeras på grund av resursbegränsningar på edge-enheter
- Edge-enheter kan inte omdistribueras eller ens ersättas som en server i molnet, så du behöver en robust modelldistribution och enhetshanteringsprocess
- Kommunikation mellan enheter och molnet måste vara effektiv och säker eftersom den ofta korsar opålitliga nätverk med låg bandbredd
Låt oss se hur vi kan tackla dessa utmaningar med AWS-tjänster förutom att exportera modellen i ONNX-formatet, vilket gör att vi till exempel kan tillämpa optimeringar som kvantisering för att minska modellstorleken för begränsningsenheter. ONNX tillhandahåller också optimerade körtider för de vanligaste hårdvaruplattformarna.
För att bryta ner edge-distributionsprocessen kräver vi två komponenter:
- En distributionsmekanism för modellleveransen, som inkluderar själva modellen och viss affärslogik för att hantera och interagera med modellen
- En arbetsflödesmotor som kan orkestrera hela processen för att göra detta robust och repeterbart
I det här exemplet använder vi olika AWS-tjänster för att bygga vår automatiserade edge-distributionsmekanism, som integrerar alla nödvändiga komponenter som vi diskuterade.
Först simulerar vi en kantanordning. För att göra det enkelt för dig att gå igenom arbetsflödet från början till slut använder vi en Amazon Elastic Compute Cloud (Amazon EC2)-instans för att simulera en edge-enhet genom att installera AWS IoT Greengrass Core-programvaran på instansen. Du kan också använda EC2-instanser för att validera de olika komponenterna i en QA-process innan de distribueras till en verklig kantproduktionsenhet. AWS IoT Greengrass är en Internet of Things (IoT) edge runtime- och molntjänst med öppen källkod som hjälper dig att bygga, distribuera och hantera edge-enhetsprogramvara. AWS IoT Greengrass minskar ansträngningen att bygga, distribuera och hantera avancerad enhetsprogramvara på ett säkert och skalbart sätt. När du har installerat AWS IoT Greengrass Core-programvaran på din enhet kan du lägga till eller ta bort funktioner och komponenter och hantera dina IoT-enhetsapplikationer med AWS IoT Greengrass. Den erbjuder många inbyggda komponenter för att göra ditt liv enklare, såsom StreamManager- och MQTT-mäklarkomponenterna, som du kan använda för att säkert kommunicera med molnet och stödja end-to-end-kryptering. Du kan använda dessa funktioner för att ladda upp slutledningsresultat och bilder effektivt.
I en produktionsmiljö skulle du vanligtvis ha en industrikamera som levererar bilder för vilka ML-modellen ska producera förutsägelser. För vår inställning simulerar vi denna bildinmatning genom att ladda upp en förinställning av bilder till en specifik katalog på kantenheten. Vi använder sedan dessa bilder som slutledningsindata för modellen.
Vi delade upp den övergripande implementeringen och slutledningsprocessen i tre på varandra följande steg för att distribuera en molntränad ML-modell till en edge-miljö och använda den för förutsägelser:
- Förbered – Paketera den utbildade modellen för edge-distribution.
- Distribuera – Överföring av modell- och slutledningskomponenter från molnet till edge-enheten.
- Slutledning – Ladda modellen och kör inferenskod för bildförutsägelser.
Följande arkitekturdiagram visar detaljerna i denna trestegsprocess och hur vi implementerade den med AWS-tjänster.
I följande avsnitt diskuterar vi detaljerna för varje steg och visar hur man bäddar in denna process i en automatiserad och repeterbar orkestrering och CI/CD-arbetsflöde för både ML-modellerna och motsvarande slutledningskod.
Förbered
Edge-enheter kommer ofta med begränsad beräkning och minne jämfört med en molnmiljö där kraftfulla CPU:er och GPU:er enkelt kan köra ML-modeller. Olika modelloptimeringstekniker låter dig skräddarsy en modell för en specifik mjukvaru- eller hårdvaruplattform för att öka förutsägelsehastigheten utan att förlora noggrannhet.
I det här exemplet exporterade vi den tränade modellen i träningspipelinen till ONNX-formatet för portabilitet, möjliga optimeringar, samt optimerade kantkörtider, och registrerade modellen inom Amazon SageMaker Model Registry. I det här steget skapar vi en ny Greengrass-modellkomponent inklusive den senast registrerade modellen för efterföljande driftsättning.
Distribuera
En säker och pålitlig distributionsmekanism är nyckeln när man distribuerar en modell från molnet till en edge-enhet. Eftersom AWS IoT Greengrass redan har ett robust och säkert edge-distributionssystem, använder vi detta för våra distributionsändamål. Innan vi tittar på vår distributionsprocess i detalj, låt oss göra en snabb sammanfattning av hur AWS IoT Greengrass-distributioner fungerar. Kärnan i AWS IoT Greengrass distributionssystem är komponenter, som definierar programvarumodulerna som distribueras till en edge-enhet som kör AWS IoT Greengrass Core. Dessa kan antingen vara privata komponenter som du bygger eller offentliga komponenter som tillhandahålls antingen av AWS eller det bredare Greengrass samhälle. Flera komponenter kan buntas ihop som en del av en distribution. En distributionskonfiguration definierar komponenterna som ingår i en distribution och distributionens målenheter. Det kan antingen definieras i en distributionskonfigurationsfil (JSON) eller via AWS IoT Greengrass-konsolen när du skapar en ny distribution.
Vi skapar följande två Greengrass-komponenter, som sedan distribueras till edge-enheten via distributionsprocessen:
- Förpackad modell (privat komponent) – Den här komponenten innehåller den utbildade och ML-modellen i ONNX-format.
- Slutledningskod (privat komponent) – Bortsett från själva ML-modellen behöver vi implementera lite applikationslogik för att hantera uppgifter som dataförberedelse, kommunikation med modellen för slutledning och efterbearbetning av slutledningsresultat. I vårt exempel har vi utvecklat en Python-baserad privat komponent för att hantera följande uppgifter:
- Installera de nödvändiga runtime-komponenterna som Ultralytics YOLOv8 Python-paketet.
- Istället för att ta bilder från en kamera liveström, simulerar vi detta genom att ladda förberedda bilder från en specifik katalog och förbereda bilddata enligt modellens indatakrav.
- Gör slutledningsanrop mot den laddade modellen med förberedda bilddata.
- Kontrollera förutsägelserna och ladda upp slutledningsresultat tillbaka till molnet.
Om du vill ha en djupare titt på slutledningskoden vi byggde, se GitHub repo.
Slutledning
Modellinferensprocessen på kantanordningen startar automatiskt efter att de ovannämnda komponenterna har distribuerats. Den anpassade slutledningskomponenten kör med jämna mellanrum ML-modellen med bilder från en lokal katalog. Slutledningsresultatet per bild som returneras från modellen är en tensor med följande innehåll:
- Självförtroende poäng – Hur säker modellen är när det gäller upptäckterna
- Objektkoordinater – Scratch-objektets koordinater (x, y, bredd, höjd) detekteras av modellen i bilden
I vårt fall tar slutledningskomponenten hand om att skicka slutledningsresultat till ett specifikt MQTT-ämne på AWS IoT där det kan läsas för vidare bearbetning. Dessa meddelanden kan ses via MQTT-testklienten på AWS IoT-konsolen för felsökning. I en produktionsinställning kan du välja att automatiskt meddela ett annat system som tar hand om att ta bort felaktiga metalletiketter från produktionslinjen.
orkestrering
Som framgår av de föregående avsnitten krävs flera steg för att förbereda och distribuera en ML-modell, motsvarande slutledningskod och den nödvändiga körtiden eller agenten till en kantenhet. Step Functions är en helt hanterad tjänst som låter dig orkestrera dessa dedikerade steg och designa arbetsflödet i form av en tillståndsmaskin. Den här tjänstens serverlösa karaktär och inbyggda Step Functions-funktioner som AWS service API-integrationer gör att du snabbt kan konfigurera detta arbetsflöde. Inbyggda funktioner som omförsök eller loggning är viktiga punkter för att bygga robusta orkestrationer. För mer information om själva statens maskindefinition, se GitHub repository eller kolla tillståndsmaskinens graf på Step Functions-konsolen efter att du har implementerat det här exemplet i ditt konto.
Infrastrukturinstallation och integration i CI/CD
CI/CD-pipelinen för att integrera och bygga alla nödvändiga infrastrukturkomponenter följer samma mönster som illustreras i del 1 av denna serie. Vi använder AWS Cloud Development Kit (AWS CDK) för att distribuera de nödvändiga pipelines från AWS CodePipeline.
Lärande
Det finns flera sätt att bygga en arkitektur för ett automatiserat, robust och säkert ML-modell edge-distributionssystem, som ofta är mycket beroende av användningsfallet och andra krav. Men här är några lärdomar som vi skulle vilja dela med dig:
- Utvärdera i förväg om ytterligare AWS IoT Greengrass beräkningsresurskrav passa ditt fodral, speciellt med enheter med begränsad kant.
- Etablera en distributionsmekanism som integrerar ett verifieringssteg av de distribuerade artefakterna innan de körs på kantenheten för att säkerställa att ingen manipulering inträffade under överföringen.
- Det är god praxis att hålla distributionskomponenterna på AWS IoT Greengrass så modulära och fristående som möjligt för att kunna distribuera dem självständigt. Till exempel, om du har en relativt liten inferenskodmodul men en stor ML-modell vad gäller storlek, vill du inte alltid distribuera dem båda om bara inferenskoden har ändrats. Detta är särskilt viktigt när du har begränsad bandbredd eller högkostnadsanslutningsmöjligheter för enheter.
Slutsats
Detta avslutar vår tredelade serie om att bygga en heltäckande MLOps-pipeline för visuell kvalitetsinspektion vid kanten. Vi tittade på de ytterligare utmaningarna som följer med att implementera en ML-modell vid kanten som modellpaketering eller komplex implementeringsorkestrering. Vi implementerade pipelinen på ett helautomatiskt sätt så att vi kan sätta våra modeller i produktion på ett robust, säkert, repeterbart och spårbart sätt. Använd gärna arkitekturen och implementeringen som utvecklats i denna serie som utgångspunkt för ditt nästa ML-aktiverade projekt. Om du har några frågor om hur man konstruerar och bygger ett sådant system för din miljö, vänligen nå ut. För andra ämnen och användningsfall, se vår Maskininlärning och IoT bloggar.
Om författarna
Michael Roth är en Senior Solutions Architect på AWS som stödjer tillverkningskunder i Tyskland för att lösa deras affärsutmaningar genom AWS-teknik. Förutom arbete och familj är han intresserad av sportbilar och tycker om italienskt kaffe.
Jörg Wöhrle är lösningsarkitekt på AWS och arbetar med tillverkande kunder i Tyskland. Med en passion för automation har Joerg arbetat som mjukvaruutvecklare, DevOps-ingenjör och Site Reliability Engineer i sitt liv före AWS. Bortom molnet är han en ambitiös löpare och tycker om kvalitetstid med sin familj. Så om du har en DevOps-utmaning eller vill springa: låt honom veta.
Johannes Langer är Senior Solutions Architect på AWS och arbetar med företagskunder i Tyskland. Johannes brinner för att tillämpa maskininlärning för att lösa verkliga affärsproblem. I sitt personliga liv tycker Johannes om att arbeta med hemförbättringsprojekt och spendera tid utomhus med sin familj.
- SEO-drivet innehåll och PR-distribution. Bli förstärkt idag.
- PlatoData.Network Vertical Generative Ai. Styrka dig själv. Tillgång här.
- PlatoAiStream. Web3 Intelligence. Kunskap förstärkt. Tillgång här.
- Platoesg. Kol, CleanTech, Energi, Miljö, Sol, Avfallshantering. Tillgång här.
- PlatoHealth. Biotech och kliniska prövningar Intelligence. Tillgång här.
- Källa: https://aws.amazon.com/blogs/machine-learning/build-an-end-to-end-mlops-pipeline-for-visual-quality-inspection-at-the-edge-part-3/
- : har
- :är
- :var
- $UPP
- 150
- 7
- a
- Able
- Om oss
- Enligt
- Konto
- noggrannhet
- faktiska
- lägga till
- Dessutom
- Annat
- avancera
- Efter
- mot
- Recensioner
- Alla
- tillåter
- tillåter
- redan
- också
- alltid
- amason
- Amazon EC2
- Amazon Web Services
- ambitiösa
- an
- och
- Annan
- vilken som helst
- api
- Ansökan
- tillämpningar
- Ansök
- Tillämpa
- arkitektur
- ÄR
- AS
- åt sidan
- At
- automatisera
- Automatiserad
- automatiserar
- automatiskt
- Automation
- bort
- AWS
- AWS IoT Greengrass
- tillbaka
- Bandbredd
- BE
- därför att
- blir
- varit
- innan
- Börjar
- förutom
- mellan
- Bortom
- Stor
- bloggar
- båda
- bredare
- mäklare
- SLUTRESULTAT
- Byggnad
- byggt
- inbyggd
- bundled
- företag
- men
- by
- Samtal
- rum
- KAN
- kapacitet
- vilken
- bilar
- Vid
- fall
- utmanar
- utmaningar
- ändrats
- ta
- kontroll
- klient
- cloud
- koda
- Kaffe
- komma
- Gemensam
- kommunicera
- Kommunikation
- jämfört
- komplex
- komponent
- komponenter
- Compute
- säker
- konfiguration
- Anslutningar
- i följd
- Konsol
- begränsningar
- innehåller
- innehåll
- Kärna
- kärnprogramvara
- Motsvarande
- Pris
- skapa
- Skapa
- beställnings
- Kunder
- datum
- Förberedelse av data
- beslutar
- dedicerad
- djupare
- definiera
- definierade
- definierar
- definition
- leverera
- leverans
- beroende
- distribuera
- utplacerade
- utplacera
- utplacering
- distributioner
- Designa
- detalj
- detaljer
- upptäcka
- detekterad
- utvecklade
- Utvecklare
- Utveckling
- anordning
- enheter
- olika
- diskutera
- diskuteras
- dividerat
- do
- inte
- ner
- grund
- under
- varje
- lättare
- lätt
- kant
- effektiv
- effektivt
- ansträngning
- antingen
- embed
- kryptering
- början till slut
- Motor
- ingenjör
- säkerställa
- Företag
- Hela
- Miljö
- speciellt
- utvärderade
- Även
- exempel
- familj
- långt
- Mode
- defekt
- Funktioner
- känna
- få
- Fil
- passa
- Fokus
- efter
- följer
- För
- formen
- format
- Fri
- från
- fullständigt
- funktioner
- ytterligare
- generera
- Tyskland
- Go
- god
- GPUs
- diagram
- hantera
- hänt
- hårdvara
- Har
- höjd
- hjälper
- här.
- Hög
- högnivå
- honom
- hans
- Hem
- Hur ser din drömresa ut
- How To
- Men
- html
- http
- HTTPS
- if
- bild
- bilder
- genomföra
- genomförande
- genomföras
- med Esport
- förbättring
- in
- ingår
- innefattar
- Inklusive
- Inkommande
- Öka
- oberoende av
- industriell
- Infrastruktur
- ingång
- installera
- installera
- exempel
- integrera
- integrerar
- integrering
- integrationer
- interagera
- intresserad
- Internet
- sakernas Internet
- in
- iot
- IoT-enhet
- IT
- italienska
- sig
- jpg
- json
- bara
- Ha kvar
- Nyckel
- Vet
- märkning
- senaste
- inlärning
- Låt
- livet
- tycka om
- Begränsad
- linje
- lever
- läsa in
- läser in
- lokal
- belägen
- skogsavverkning
- Logiken
- se
- såg
- förlora
- Lot
- Maskinen
- maskininlärning
- göra
- Framställning
- hantera
- förvaltade
- ledning
- Produktion
- mekanism
- Minne
- meddelanden
- metall
- Michael
- ML
- MLOps
- modell
- modeller
- modulära
- Modulerna
- Moduler
- mer
- mest
- multipel
- nativ
- Natur
- Behöver
- behov
- Nya
- Nästa
- Nej
- objektet
- of
- Erbjudanden
- Ofta
- on
- öppen källkod
- optimerad
- or
- orkestrering
- Övriga
- vår
- ut
- utomhus
- övergripande
- paket
- förpackning
- del
- reservdelar till din klassiker
- brinner
- brinner
- Mönster
- för
- personlig
- rörledning
- plattform
- Plattformar
- plato
- Platon Data Intelligence
- PlatonData
- snälla du
- Punkt
- poäng
- bärbarhet
- möjlig
- Inlägg
- den mäktigaste
- praktiken
- förutsägelse
- Förutsägelser
- beredning
- Förbered
- beredd
- förbereda
- privat
- problem
- process
- bearbetning
- producera
- Produktion
- projektet
- projekt
- förutsatt
- ger
- allmän
- syfte
- sätta
- Python
- Frågor och svar
- kvalitet
- frågor
- Snabbt
- snabbt
- Läsa
- verklig
- resumé
- rekommenderar
- minska
- minskar
- hänvisa
- om
- registrerat
- relativt
- tillförlitlighet
- pålitlig
- ta bort
- bort
- repeterbar
- ersättas
- kräver
- Obligatorisk
- Krav
- resurs
- resultera
- Resultat
- robusta
- Körning
- runner
- rinnande
- kör
- sagemaker
- Samma
- skalbar
- repa
- sektioner
- säkra
- säkert
- se
- sett
- skicka
- senior
- Serier
- server
- Server
- service
- Tjänster
- in
- inställning
- inställning
- Dela
- skall
- show
- visade
- Visar
- webbplats
- Storlek
- Small
- So
- Mjukvara
- lösning
- Lösningar
- LÖSA
- några
- specifik
- fart
- Spendera
- Sporter
- Starta
- startar
- Ange
- Steg
- Steg
- okomplicerad
- ström
- senare
- sådana
- Stödjande
- system
- tackla
- tar
- tar
- Målet
- uppgifter
- tekniker
- Teknologi
- villkor
- testa
- den där
- Smakämnen
- Staten
- deras
- Dem
- sedan
- Dessa
- saker
- detta
- de
- tre
- tre steg
- Genom
- tid
- till
- tillsammans
- ämne
- ämnen
- spårbar
- tränad
- Utbildning
- överföring
- två
- typiskt
- unika
- uppladdning
- us
- användning
- användningsfall
- Begagnade
- med hjälp av
- BEKRÄFTA
- värde
- Verifiering
- mycket
- via
- vill
- Sätt..
- sätt
- we
- webb
- webbservice
- VÄL
- när
- som
- Hela
- bredd
- med
- inom
- utan
- Arbete
- arbetade
- arbetsflöde
- arbetssätt
- skulle
- X
- ännu
- Om er
- Din
- zephyrnet