Med tillkomsten av höghastighets 5G-mobilnätverk är företag lättare positionerade än någonsin med möjligheten att utnyttja konvergensen av telekommunikationsnätverk och molnet. Som ett av de mest framträdande användningsfallen hittills har maskininlärning (ML) vid kanten gjort det möjligt för företag att distribuera ML-modeller närmare sina slutkunder för att minska latensen och öka lyhördheten för sina applikationer. Som ett exempel, smarta lokallösningar kan använda datorseende nästan i realtid för publikanalys över 5G-nätverk, allt samtidigt som investeringar i lokal hårdvarunätverksutrustning minimeras. Återförsäljare kan leverera mer friktionsfria upplevelser på språng med naturlig språkbehandling (NLP), rekommendationssystem i realtid och bedrägeriupptäckt. Även mark- och luftrobotik kan använda ML för att låsa upp säkrare, mer autonoma operationer.
För att minska hindret för inträde av ML vid kanten, ville vi demonstrera ett exempel på att implementera en förtränad modell från Amazon SageMaker till AWS våglängd, allt på mindre än 100 rader kod. I det här inlägget visar vi hur man distribuerar en SageMaker-modell till AWS Wavelength för att minska modellinferensfördröjningen för 5G-nätverksbaserade applikationer.
Lösningsöversikt
Över AWS:s snabbt växande globala infrastruktur, tar AWS Wavelength kraften i molnberäkning och lagring till kanten av 5G-nätverk, vilket låser upp mer presterande mobila upplevelser. Med AWS Wavelength kan du utöka ditt virtuella privata moln (VPC) till våglängdszoner som motsvarar teleoperatörens nätverkskant i 29 städer över hela jorden. Följande diagram visar ett exempel på denna arkitektur.
Du kan välja att delta i våglängdszonerna inom en viss region via AWS Management Console eller AWS-kommandoradsgränssnitt (AWS CLI). För att lära dig mer om att distribuera geodistribuerade applikationer på AWS Wavelength, se Distribuera geodistribuerade Amazon EKS-kluster på AWS Wavelength.
Med utgångspunkt i grunderna som diskuteras i det här inlägget ser vi till ML vid kanten som ett exempel på arbetsbelastning för att distribuera till AWS Wavelength. Som vårt exempel på arbetsbelastning distribuerar vi en förutbildad modell från Amazon SageMaker JumpStart.
SageMaker är en helt hanterad ML-tjänst som låter utvecklare enkelt distribuera ML-modeller i sina AWS-miljöer. Även om AWS erbjuder ett antal alternativ för modellträning—från AWS Marketplace modeller och SageMaker inbyggda algoritmer – det finns ett antal tekniker för att distribuera ML-modeller med öppen källkod.
JumpStart ger tillgång till hundratals inbyggda algoritmer med förtränade modeller som sömlöst kan distribueras till SageMaker-slutpunkter. Från förutsägande underhåll och datorseende till autonom körning och bedrägeriupptäckt, stöder JumpStart en mängd populära användningsfall med ett klick-distribution på konsolen.
Eftersom SageMaker inte stöds i våglängdszoner, visar vi hur man extraherar modellartefakter från regionen och distribuerar om till kanten. För att göra det använder du Amazon Elastic Kubernetes-tjänst (Amazon EKS)-kluster och nodgrupper i våglängdszoner, följt av att skapa ett distributionsmanifest med behållarbilden som genereras av JumpStart. Följande diagram illustrerar denna arkitektur.
Förutsättningar
För att göra detta så enkelt som möjligt, se till att ditt AWS-konto har våglängdszoner aktiverade. Observera att denna integration endast är tillgänglig i us-east-1
och us-west-2
, och du kommer att använda us-east-1
under hela demot.
För att välja AWS Wavelength, slutför följande steg:
- Välj på Amazon VPC-konsolen Zoner under Inställningar Och välj US East (Verizon) / us-east-1-wl1.
- Välja hantera.
- Välja Valt in.
- Välja Uppdatera zoner.
Skapa AWS Wavelength-infrastruktur
Innan vi konverterar den lokala SageMaker-modellens slutpunkt till en Kubernetes-distribution kan du skapa ett EKS-kluster i en våglängdszon. För att göra det, distribuera ett Amazon EKS-kluster med en AWS Wavelength-nodgrupp. Om du vill veta mer kan du besöka den här guiden på AWS Containers-bloggen or Verizons 5GEdgeTutorials-förråd för ett sådant exempel.
Därefter använder du en AWS Cloud9 miljö eller interaktiv utvecklingsmiljö (IDE) efter eget val, ladda ner de nödvändiga SageMaker-paketen och Docker komponera, ett nyckelberoende för JumpStart.
Skapa modellartefakter med JumpStart
Se först till att du har en AWS identitets- och åtkomsthantering (IAM) exekveringsroll för SageMaker. Om du vill veta mer, besök SageMaker roller.
- Använda detta exempel, skapa en fil som heter train_model.py som använder SageMaker Software Development Kit (SDK) för att hämta en förbyggd modell (ersätt med Amazon Resource Name (ARN) för din SageMaker-exekveringsroll). I den här filen distribuerar du en modell lokalt med hjälp av
instance_type
attribut imodel.deploy()
funktion, som startar en Docker-behållare i din IDE med alla nödvändiga modellartefakter som du definierat:
- Nästa, ställ in
infer_model_id
till ID:t för SageMaker-modellen som du vill använda.
För en fullständig lista, se Inbyggda algoritmer med förtränad modellbord. I vårt exempel använder vi BERT-modellen (Bidirectional Encoder Representations from Transformers), som vanligtvis används för naturlig språkbehandling.
- Kör
train_model.py
skript för att hämta JumpStart-modellens artefakter och distribuera den förtränade modellen till din lokala dator:
Om det här steget skulle lyckas kan din utdata likna följande:
I utgången kommer du att se tre artefakter i ordning: basbilden för TensorFlow-inferens, inferensskriptet som tjänar modellen och artefakterna som innehåller den tränade modellen. Även om du kan skapa en anpassad Docker-bild med dessa artefakter, är ett annat tillvägagångssätt att låta SageMaker lokalt läge skapa Docker-bilden åt dig. I de efterföljande stegen extraherar vi behållaravbildningen som körs lokalt och distribuerar till Amazon Elastic Container Registry (Amazon ECR) samt skjuta modellartefakten separat till Amazon enkel lagringstjänst (Amazon S3).
Konvertera lokallägesartefakter till fjärrdistribution av Kubernetes
Nu när du har bekräftat att SageMaker fungerar lokalt, låt oss extrahera distributionsmanifestet från den körande behållaren. Slutför följande steg:
Identifiera platsen för SageMakers lokallägesimplementeringsmanifest: För att göra det, sök i vår rotkatalog efter filer med namn docker-compose.yaml
.
docker_manifest=$( find /tmp/tmp* -name "docker-compose.yaml" -printf '%T+ %pn' | sort | tail -n 1 | cut -d' ' -f2-)
echo $docker_manifest
Identifiera platsen för SageMakers lokallägesmodellartefakter: Hitta sedan den underliggande volymen monterad på den lokala SageMaker-inferensbehållaren, som kommer att användas i varje EKS-arbetarnod efter att vi laddat upp artefakten till Amazon s3.
model_local_volume = $(grep -A1 -w "volumes:" $docker_manifest | tail -n 1 | tr -d ' ' | awk -F: '{print $1}' | cut -c 2-) # Returns something like: /tmp/tmpcr4bu_a7</p>
Skapa lokal kopia av att köra SageMaker-inferensbehållaren: Därefter hittar vi den aktuella behållarbilden som kör vår maskininlärningsmodell och gör en kopia av behållaren lokalt. Detta kommer att säkerställa att vi har en egen kopia av behållarbilden att hämta från Amazon ECR.
# Find container ID of running SageMaker Local container
mkdir sagemaker-container
container_id=$(docker ps --format "{{.ID}} {{.Image}}" | grep "tensorflow" | awk '{print $1}')
# Retrieve the files of the container locally
docker cp $my_container_id:/ sagemaker-container/
Innan du agerar på model_local_volume
, som vi skickar till Amazon S3, tryck en kopia av den pågående Docker-bilden, nu i sagemaker-container
katalog, till Amazon Elastic Container Registry. Se till att byta ut region
, aws_account_id
, docker_image_id
och my-repository:tag
eller följ Amazon ECR användarhandbok. Se också till att notera den slutliga ECR-bildadressen (aws_account_id.dkr.ecr.region.amazonaws.com/my-repository:tag
), som vi kommer att använda i vår EKS-distribution.
Nu när vi har en ECR-bild som motsvarar slutpunktens slutpunkt, skapa en ny Amazon S3-hink och kopiera SageMaker Local-artefakterna (model_local_volume
) till denna hink. Parallellt, skapa en Identity Access Management (IAM) som ger Amazon EC2-instanser åtkomst till att läsa objekt i hinken. Se till att byta ut med ett globalt unikt namn för din Amazon S3 hink.
Sedan, för att säkerställa att varje EC2-instans hämtar en kopia av modellartefakten vid lansering, redigera användardata för dina EKS-arbetarnoder. I ditt användardataskript, se till att varje nod hämtar modellartefakterna med hjälp av S3 API vid lanseringen. Se till att byta ut med ett globalt unikt namn för din Amazon S3 hink. Med tanke på att nodens användardata även kommer att inkludera EKS bootstrap-skriptet, kan den fullständiga användardatan se ut ungefär så här.
Nu kan du inspektera det befintliga dockermanifestet och översätta det till Kubernetes-vänliga manifestfiler med hjälp av Komponera, ett välkänt konverteringsverktyg. Obs: om du får ett versionskompatibilitetsfel, ändra version
attribut i rad 27 i docker-compose.yml till “2”
.
Efter att ha kört Kompose kommer du att se fyra nya filer: a Deployment
objekt, Service
objekt, PersistentVolumeClaim
objekt, och NetworkPolicy
objekt. Du har nu allt du behöver för att börja ditt utflykt till Kubernetes vid kanten!
Distribuera SageMaker-modellartefakter
Se till att du har kubectl och aws-iam-authenticator nedladdade till din AWS Cloud9 IDE. Om inte, följ installationsguiderna:
Slutför nu följande steg:
modifiera service/algo-1-ow3nv
objekt att byta tjänstetyp från ClusterIP
till NodePort
. I vårt exempel har vi valt port 30,007 XNUMX som vår NodePort
:
Därefter måste du tillåta NodePort i säkerhetsgruppen för din nod. För att göra det, hämta säkerhetsgrupp-ID och tillåt NodePort:
Ändra sedan algo-1-ow3nv-deployment.yaml
manifest för att montera /tmp/model hostPath
katalogen till behållaren. Byta ut med ECR-bilden du skapade tidigare:
Med manifestfilerna du skapade från Kompose, använd kubectl för att tillämpa konfigurationerna på ditt kluster:
Anslut till 5G-kantmodellen
Utför följande steg för att ansluta till din modell:
På Amazon EC2-konsolen, hämta operatörens IP-adress för EKS-arbetarnoden eller använd AWS CLI för att fråga operatörens IP-adress direkt:
Nu, med transportörens IP-adress extraherad, kan du ansluta till modellen direkt med hjälp av NodePort. Skapa en fil som heter invoke.py
att anropa BERT-modellen direkt genom att tillhandahålla en textbaserad indata som kommer att köras mot en sentimentanalysator för att avgöra om tonen var positiv eller negativ:
Din utdata bör likna följande:
Städa upp
För att förstöra alla skapade programresurser, ta bort AWS Wavelength-arbetsnoderna, EKS-kontrollplanet och alla resurser som skapats inom VPC:n. Ta dessutom bort ECR-repo som används för att vara värd för behållarbilden, S3-hinkarna som används för att vara värd för SageMaker-modellartefakterna och sagemaker-demo-app-s3 IAM
politik.
Slutsats
I det här inlägget visade vi ett nytt tillvägagångssätt för att distribuera SageMaker-modeller till nätverkskanten med hjälp av Amazon EKS och AWS Wavelength. För att lära dig mer om Amazon EKS bästa praxis för AWS Wavelength, se Distribuera geodistribuerade Amazon EKS-kluster på AWS Wavelength. För att lära dig mer om Jumpstart, besök också Amazon SageMaker JumpStart Developer Guide eller JumpStart Tillgänglig modelltabell.
Om författarna
Robert Belson är en Developer Advocate i AWS Worldwide Telecom Business Unit, specialiserad på AWS Edge Computing. Han fokuserar på att arbeta med utvecklargemenskapen och stora företagskunder för att lösa deras affärsutmaningar med hjälp av automation, hybridnätverk och kantmolnet.
Mohammed Al-Mehdar är Senior Solutions Architect i Worldwide Telecom Business Unit på AWS. Hans huvudsakliga fokus är att hjälpa kunder att bygga och distribuera Telco- och Enterprise IT-arbetsbelastningar på AWS. Innan han började på AWS har Mohammed arbetat i telekombranschen i över 13 år och har en mängd erfarenheter inom områdena LTE Packet Core, 5G, IMS och WebRTC. Mohammed har en kandidatexamen i telekommunikationsteknik från Concordia University.
Evan Kravitz är en mjukvaruingenjör på Amazon Web Services och arbetar på SageMaker JumpStart. Han tycker om att laga mat och springa i New York City.
Justin St. Arnauld är Associate Director – Solution Architects på Verizon för den offentliga sektorn med över 15 års erfarenhet inom IT-branschen. Han är en passionerad förespråkare för kraften i edge computing och 5G-nätverk och är expert på att utveckla innovativa tekniska lösningar som utnyttjar dessa teknologier. Justin är särskilt entusiastisk över de möjligheter som erbjuds av Amazon Web Services (AWS) för att leverera banbrytande lösningar för sina kunder. På sin fritid tycker Justin om att hålla sig uppdaterad med de senaste tekniktrenderna och dela sina kunskaper och insikter med andra i branschen.
- SEO-drivet innehåll och PR-distribution. Bli förstärkt idag.
- Platoblockchain. Web3 Metaverse Intelligence. Kunskap förstärkt. Tillgång här.
- Källa: https://aws.amazon.com/blogs/machine-learning/deploy-pre-trained-models-on-aws-wavelength-with-5g-edge-using-amazon-sagemaker-jumpstart/
- :är
- 1
- 10
- 100
- 11
- 15 år
- 5G
- 7
- 8
- 9
- a
- Om Oss
- Acceptera
- tillgång
- Konto
- tvärs
- Handling
- Dessutom
- adress
- första advent
- förespråkare
- Efter
- mot
- algoritmer
- Alla
- tillåter
- Även
- alltid
- amason
- Amazon EC2
- Amazon SageMaker
- Amazon SageMaker JumpStart
- Amazon Web Services
- Amazon Web Services (AWS)
- analytics
- och
- Annan
- api
- Ansökan
- tillämpningar
- Ansök
- tillvägagångssätt
- arkitektur
- ÄR
- områden
- AS
- Associate
- Förening
- At
- Automation
- autonom
- tillgänglig
- AWS
- AWS Cloud9
- barriär
- bas
- BE
- börja
- BÄST
- bästa praxis
- Bootstrap
- Bringar
- SLUTRESULTAT
- inbyggd
- företag
- by
- kallas
- KAN
- kapacitet
- fall
- KATT
- CD
- utmaningar
- byta
- val
- Välja
- Stad
- klienter
- närmare
- cloud
- Cloud9
- kluster
- koda
- COM
- vanligen
- samfundet
- kompatibilitet
- fullborda
- Compute
- dator
- Datorsyn
- databehandling
- BEKRÄFTAT
- Kontakta
- Konsol
- Behållare
- Behållare
- kontroll
- Konvergens
- Konvertering
- konvertera
- Kärna
- Motsvarande
- kunde
- skapa
- skapas
- Skapa
- folkmassa
- För närvarande
- beställnings
- Kunder
- Klipp
- allra senaste
- datum
- Datum
- definierade
- Examen
- leverera
- leverera
- demonstrera
- demonstreras
- Dependency
- distribuera
- utplacerade
- utplacera
- utplacering
- förstöra
- Detektering
- Bestämma
- Utvecklare
- utvecklare
- utveckla
- Utveckling
- direkt
- Direktör
- diskuteras
- Hamnarbetare
- ladda ner
- drivande
- varje
- Tidigare
- lätt
- öster
- missar
- kant
- kanten beräkning
- effekt
- möjliggöra
- aktiverad
- Slutpunkt
- ingenjör
- Teknik
- säkerställa
- Företag
- företag
- entusiastiska
- inträde
- Miljö
- miljöer
- Utrustning
- fel
- Även
- NÅGONSIN
- allt
- exempel
- utförande
- befintliga
- expanderande
- erfarenhet
- Erfarenheter
- expert
- förlänga
- extrahera
- Fil
- Filer
- slutlig
- hitta
- Fokus
- fokuserar
- följer
- följt
- efter
- För
- Plundringståg
- bedrägeri
- spårning av bedrägerier
- Fri
- friktionsfri
- från
- fullständigt
- fungera
- Fundamentals
- genereras
- skaffa sig
- ges
- Välgörenhet
- Globalt
- globen
- Go
- kommer
- Grupp
- Gruppens
- styra
- Guider
- hårdvara
- sele
- Har
- hjälpa
- innehar
- värd
- Hur ser din drömresa ut
- How To
- html
- http
- HTTPS
- Hundratals
- Hybrid
- ID
- Identitet
- bild
- importera
- in
- innefattar
- Öka
- industrin
- Infrastruktur
- innovativa
- innovativ teknik
- ingång
- insikter
- installera
- exempel
- integrering
- interaktiva
- investering
- IP
- IP-adress
- IT
- IT-branschen
- sammanfogning
- jpg
- json
- Justin
- hålla
- Nyckel
- Snäll
- Kit (SDK)
- kunskap
- Etiketter
- språk
- Large
- Latens
- senaste
- lansera
- LÄRA SIG
- inlärning
- Hävstång
- tycka om
- linje
- rader
- Lista
- lokal
- lokalt
- läge
- se
- Maskinen
- maskininlärning
- Huvudsida
- underhåll
- göra
- förvaltade
- ledning
- metadata
- minimerande
- ML
- Mobil
- mobila nätverk
- Mode
- modell
- modeller
- modifiera
- mer
- mest
- MONTERA
- namn
- Som heter
- Natural
- Naturlig språkbehandling
- Behöver
- negativ
- nät
- nätverksbaserade
- nätverk
- nätverk
- Nya
- New York
- new york city
- Nästa
- nlp
- nod
- noder
- roman
- antal
- objektet
- objekt
- of
- erbjuds
- Erbjudanden
- on
- ONE
- öppen källkod
- Verksamhet
- Möjlighet
- Tillbehör
- beställa
- Övrigt
- produktion
- egen
- paket
- Parallell
- särskilt
- brinner
- bana
- plato
- Platon Data Intelligence
- PlatonData
- policy
- Populära
- placerad
- positiv
- möjlig
- Inlägg
- kraft
- praxis
- Predictor
- Innan
- privat
- bearbetning
- framträdande
- ger
- tillhandahålla
- allmän
- Drar
- Tryck
- snabbt
- Läsa
- realtid
- Rekommendation
- minska
- region
- register
- avlägsen
- ersätta
- förfrågningar
- erforderlig
- resurs
- Resurser
- detaljister
- återgår
- Roll
- rot
- Körning
- rinnande
- säkrare
- sagemaker
- SageMaker Inference
- sDK
- sömlöst
- Sök
- sektor
- säkerhet
- vald
- senior
- tjänar
- serverar
- service
- Tjänster
- in
- delning
- skall
- Visar
- Enkelt
- helt enkelt
- So
- Mjukvara
- mjukvaruutveckling
- Programvara ingenjör
- lösning
- Lösningar
- LÖSA
- något
- specialiserat
- startar
- .
- status
- Steg
- Steg
- förvaring
- Strategi
- senare
- lyckas
- sådana
- Som stöds
- Stöder
- Växla
- System
- MÄRKA
- Ta
- tekniker
- Tekniken
- Teknologi
- Telco
- telecom
- telekommunikationer
- Telekommunikationsteknik
- mall
- tensorflow
- den där
- Smakämnen
- deras
- Dessa
- tre
- tid
- till
- TON
- verktyg
- tränad
- transformatorer
- Översätt
- Trender
- sann
- under
- underliggande
- unika
- enhet
- universitet
- låsa
- upplåsning
- TIDSENLIG
- URL
- användning
- Användare
- v1
- värde
- mängd
- Mötesplats
- verizon
- version
- via
- Virtuell
- syn
- Besök
- volym
- volymer
- ville
- Rikedom
- webb
- webbservice
- VÄL
- ALLBEKANT
- om
- som
- medan
- kommer
- med
- inom
- arbetstagaren
- arbetssätt
- inom hela sverige
- skulle
- jaml
- år
- Om er
- Din
- Youtube
- zephyrnet
- zoner