AWS-kunder er avhengige av Infrastructure as Code (IaC) for å designe, utvikle og administrere skyinfrastrukturen deres. IaC sikrer at kundeinfrastruktur og tjenester er konsistente, skalerbare og reproduserbare, samtidig som de kan følge beste praksis innen utviklingsoperasjoner (DevOps).
En mulig tilnærming til å administrere AWS-infrastruktur og tjenester med IaC er terra, som lar utviklere organisere sin infrastruktur i gjenbrukbare kodemoduler. Dette aspektet får stadig større betydning innen maskinlæring (ML). Å utvikle og administrere ML-pipelines, inkludert opplæring og inferens med Terraform som IaC, lar deg enkelt skalere for flere ML-brukstilfeller eller regioner uten å måtte utvikle infrastrukturen fra bunnen av. Videre gir det konsistens for infrastrukturen (for eksempel instanstype og størrelse) for opplæring og slutning på tvers av ulike implementeringer av ML-rørledningen. Dette lar deg rute forespørsler og innkommende trafikk til forskjellige Amazon SageMaker endepunkter.
I dette innlegget viser vi deg hvordan du distribuerer og administrerer ML-rørledninger ved å bruke Terraform og Amazon SageMaker.
Løsningsoversikt
Dette innlegget gir deg kode og leder deg gjennom trinnene som er nødvendige for å distribuere AWS-infrastruktur for ML-rørledninger med Terraform for modelltrening og slutning ved bruk av Amazon SageMaker. ML-rørledningen administreres via AWS trinnfunksjoner å orkestrere de forskjellige trinnene implementert i ML-pipelinen, som illustrert i følgende figur.
Step Functions starter en AWS Lambda funksjon, genererer en unik jobb-ID, som deretter brukes når du starter en SageMaker-treningsjobb. Step Functions oppretter også en modell, endepunktkonfigurasjon og endepunkt som brukes for slutning. Ytterligere ressurser inkluderer følgende:
- AWS identitets- og tilgangsadministrasjon (IAM) roller og retningslinjer knyttet til ressursene for å muliggjøre interaksjon med andre ressurser
- Amazon enkel lagringstjeneste (Amazon S3) bøtter for treningsdata og modellutgang
- An Amazon Elastic Container Registry (Amazon ECR) depot for Docker bilde som inneholder trenings- og slutningslogikken
Den ML-relaterte koden for opplæring og slutning med et Docker-bilde er hovedsakelig avhengig av eksisterende arbeid i det følgende GitHub repository.
Følgende diagram illustrerer løsningsarkitekturen:
Vi går gjennom følgende trinn på høyt nivå:
- Distribuer AWS-infrastrukturen din med Terraform.
- Skyv Docker-bildet ditt til Amazon ECR.
- Kjør ML-rørledningen.
- Påkall endepunktet ditt.
Depotstruktur
Du kan finne depotet som inneholder koden og dataene som ble brukt for dette innlegget i det følgende GitHub repository.
Depotet inkluderer følgende kataloger:
/terraform
– Består av følgende undermapper:./infrastructure
– Inneholder main.tf-filen som kaller ML pipeline-modulen, i tillegg til variable deklarasjoner som vi bruker til å distribuere infrastrukturen./ml-pipeline-module
– Inneholder Terraform ML-rørledningsmodulen, som vi kan gjenbruke
/src
– Består av følgende undermapper:./container
– Inneholder eksempelkode for opplæring og slutning med definisjonene for Docker-bildet./lambda_function
– Inneholder Python-koden for Lambda-funksjonen som genererer konfigurasjoner, for eksempel en unik jobb-ID for SageMaker-treningsjobben
/data
– Inneholder følgende fil:./iris.csv
– Inneholder data for opplæring av ML-modellen
Forutsetninger
For dette gjennomgangen bør du ha følgende forutsetninger:
- En AWS-konto
- terra versjon 0.13.5 eller nyere
- AWS kommandolinjegrensesnitt (AWS CLI) v2
- Python 3.7 eller høyere
- Docker
Distribuer AWS-infrastrukturen din med Terraform
For å distribuere ML-rørledningen må du justere noen få variabler og navn i henhold til dine behov. Koden for dette trinnet er i /terraform
katalogen.
Når du initialiserer for første gang, åpner du filen terraform/infrastructure/terraform.tfvars
og juster variabelen prosjektnavn til navnet på prosjektet ditt, i tillegg til variabelen region hvis du ønsker å distribuere i en annen region. Du kan også endre tilleggsvariabler som forekomsttyper for trening og inferens.
Bruk deretter følgende kommandoer for å distribuere infrastrukturen med Terraform:
Sjekk utdataene og sørg for at de planlagte ressursene vises riktig, og bekreft med ja i søknadsfasen om alt er riktig. Gå deretter til Amazon ECR-konsollen (eller sjekk utdataene til Terraform i terminalen) og få URL-en til ECR-depotet ditt som du opprettet via Terraform.
Utdataene skal se ut som følgende viste utdata, inkludert URL-adressen til ECR-depotet:
Skyv Docker-bildet ditt til Amazon ECR
For at ML-rørledningen og SageMaker skal trene opp og klargjøre et SageMaker-endepunkt for slutninger, må du oppgi et Docker-bilde og lagre det i Amazon ECR. Du finner et eksempel i katalogen src/container
. Hvis du allerede har brukt AWS-infrastrukturen fra det tidligere trinnet, kan du skyve Docker-bildet som beskrevet. Etter at Docker-bildet ditt er utviklet, kan du utføre følgende handlinger og skyve det til Amazon ECR (juster Amazon ECR-URL-en i henhold til dine behov):
Hvis du allerede har brukt AWS-infrastrukturen med Terraform, kan du sende endringene av koden og Docker-bildet direkte til Amazon ECR uten å distribuere via Terraform igjen.
Kjør ML-rørledningen
For å trene og kjøre ML-rørledningen, gå til Step Functions-konsollen og start implementeringen. Du kan sjekke fremdriften for hvert trinn i visualiseringen av tilstandsmaskinen. Du kan også sjekke fremdriften for SageMaker-treningsjobben og statusen til SageMaker-endepunktet.
Etter at du har kjørt tilstandsmaskinen i Step Functions, kan du se at SageMaker-endepunktet er opprettet. Velg på SageMaker-konsollen slutning i navigasjonsruten, da endepunkter. Sørg for å vente på at statusen endres til InService.
Påkall endepunktet ditt
For å påkalle endepunktet ditt (i dette eksemplet, for iris-datasettet), kan du bruke følgende Python-skript med AWS SDK for Python (Boto3). Du kan gjøre dette fra en SageMaker-notisbok, eller legge inn følgende kodebit i en Lambda-funksjon:
Rydd opp
Du kan ødelegge infrastrukturen opprettet av Terraform med kommandoen terraform destroy, men du må slette dataene og filene i S3-bøttene først. Videre er SageMaker-endepunktet (eller flere SageMaker-endepunkter hvis det kjøres flere ganger) opprettet via Step Functions og ikke administrert via Terraform. Dette betyr at utrullingen skjer når du kjører ML-rørledningen med trinnfunksjoner. Sørg derfor for at du sletter SageMaker-endepunktet eller -endepunktene som er opprettet via Step Functions ML-pipeline også for å unngå unødvendige kostnader. Fullfør følgende trinn:
- På Amazon S3-konsollen sletter du datasettet i S3-treningsbøtten.
- Slett alle modellene du trente via ML-rørledningen i S3-modellbøtta, enten via Amazon S3-konsollen eller AWS CLI.
- Ødelegg infrastrukturen opprettet via Terraform:
- Slett SageMaker-endepunktene, endepunktkonfigurasjonen og modellene opprettet via Step Functions, enten på SageMaker-konsollen eller via AWS CLI.
konklusjonen
Gratulerer! Du har distribuert en ML-pipeline ved hjelp av SageMaker med Terraform. Denne eksempelløsningen viser hvordan du enkelt kan distribuere AWS-infrastruktur og tjenester for ML-rørledninger på en gjenbrukbar måte. Dette lar deg skalere for flere brukstilfeller eller regioner, og muliggjør opplæring og distribusjon av ML-modeller med ett klikk på en konsistent måte. Videre kan du kjøre ML-pipelinen flere ganger, for eksempel når nye data er tilgjengelige eller du ønsker å endre algoritmekoden. Du kan også velge å rute forespørsler eller trafikk til forskjellige SageMaker-endepunkter.
Jeg oppfordrer deg til å utforske å legge til sikkerhetsfunksjoner og ta i bruk beste fremgangsmåter for sikkerhet i henhold til dine behov og potensielle bedriftsstandarder. I tillegg vil innbygging av denne løsningen i CI/CD-pipelines gi deg ytterligere muligheter til å ta i bruk og etablere DevOps beste praksis og standarder i henhold til dine krav.
om forfatteren
Oliver Zollikofer er dataforsker hos Amazon Web Services. Han gjør det mulig for globale bedriftskunder å bygge, trene og distribuere maskinlæringsmodeller, i tillegg til å administrere ML-modellens livssyklus med MLOps. Videre bygger og arkitekter han relaterte skyløsninger.
- Myntsmart. Europas beste Bitcoin og Crypto Exchange.
- Platoblokkkjede. Web3 Metaverse Intelligence. Kunnskap forsterket. FRI TILGANG.
- CryptoHawk. Altcoin Radar. Gratis prøveperiode.
- Kilde: https://aws.amazon.com/blogs/machine-learning/deploy-and-manage-machine-learning-pipelines-with-terraform-using-amazon-sagemaker/
- "
- 100
- 7
- adgang
- Ifølge
- tvers
- handlinger
- tillegg
- Ytterligere
- algoritme
- Alle
- allerede
- Amazon
- Amazon Web Services
- En annen
- tilnærming
- arkitektur
- AREA
- tilgjengelig
- AWS
- være
- BEST
- beste praksis
- kroppen
- grensen
- bygge
- bygger
- evner
- saker
- CD
- endring
- Velg
- Cloud
- sky infrastruktur
- kode
- Selskapet
- Konfigurasjon
- Konsoll
- Container
- inneholder
- Kostnader
- opprettet
- skaper
- kunde
- Kunder
- dato
- dataforsker
- utplassere
- utplassert
- utplasserings
- distribusjon
- beskrevet
- utforming
- ødelegge
- ødelagt
- utvikle
- utviklet
- utviklere
- utvikle
- Utvikling
- forskjellig
- direkte
- Docker
- lett
- muliggjøre
- oppmuntre
- Endpoint
- Enterprise
- alt
- eksempel
- eksisterende
- utforske
- Mote
- Egenskaper
- Figur
- Først
- første gang
- følge
- etter
- funksjon
- videre
- genererer
- Global
- å ha
- Hvordan
- Hvordan
- HTTPS
- Identitet
- bilde
- gjennomføring
- implementert
- betydning
- inkludere
- inkluderer
- Inkludert
- stadig
- Infrastruktur
- inngang
- interaksjon
- IT
- Jobb
- siste
- læring
- linje
- maskin
- maskinlæring
- administrer
- fikk til
- administrerende
- ML
- modell
- modeller
- flere
- navn
- Navigasjon
- nødvendig
- bærbare
- åpen
- Drift
- rekkefølge
- Annen
- Politikk
- mulig
- potensiell
- prosjekt
- gi
- gir
- Repository
- anmode
- forespørsler
- Krav
- Ressurser
- svar
- Rute
- Kjør
- rennende
- skalerbar
- Skala
- Forsker
- SDK
- sikkerhet
- Tjenester
- lignende
- Enkelt
- Størrelse
- solid
- løsning
- Solutions
- Scene
- standarder
- Begynn
- starter
- Tilstand
- status
- lagring
- oppbevare
- vellykket
- terminal
- derfor
- Gjennom
- tid
- trafikk
- Kurs
- unik
- bruke
- visualisering
- vente
- web
- webtjenester
- mens
- uten
- Arbeid