Amazon SageMaker-rørledninger er en fullstendig administrert AWS-tjeneste for å bygge og orkestrere arbeidsflyter for maskinlæring (ML). SageMaker Pipelines tilbyr ML-applikasjonsutviklere muligheten til å orkestrere ulike trinn i ML-arbeidsflyten, inkludert datalasting, datatransformasjon, opplæring, tuning og distribusjon. Du kan bruke SageMaker Pipelines til å orkestrere ML-jobber i SageMaker, og dens integrasjon med det større AWS-økosystemet lar deg også bruke ressurser som AWS Lambda funksjoner, Amazon EMR jobber og mer. Dette lar deg bygge en tilpasset og reproduserbar pipeline for spesifikke krav i ML-arbeidsflytene dine.
I dette innlegget gir vi noen beste fremgangsmåter for å maksimere verdien av SageMaker Pipelines og gjøre utviklingsopplevelsen sømløs. Vi diskuterer også noen vanlige designscenarier og mønstre når vi bygger SageMaker Pipelines og gir eksempler for å håndtere dem.
Beste praksis for SageMaker Pipelines
I denne delen diskuterer vi noen beste fremgangsmåter som kan følges mens du designer arbeidsflyter ved å bruke SageMaker Pipelines. Å ta i bruk dem kan forbedre utviklingsprosessen og effektivisere den operative styringen av SageMaker Pipelines.
Bruk Pipeline Session for lat lasting av rørledningen
Pipeline økt muliggjør lat initialisering av pipeline-ressurser (jobbene startes ikke før pipeline-kjøring). De PipelineSession
konteksten arver SageMaker-økt og implementerer praktiske metoder for å samhandle med andre SageMaker-enheter og ressurser, for eksempel opplæringsjobber, endepunkter, inndatasett i Amazon enkel lagringstjeneste (Amazon S3), og så videre. Når du definerer SageMaker Pipelines, bør du bruke PipelineSession
over den vanlige SageMaker-økten:
Kjør rørledninger i lokal modus for kostnadseffektive og raske iterasjoner under utvikling
Du kan kjøre en rørledning i lokal modus bruker LocalPipelineSession
kontekst. I denne modusen kjøres rørledningen og jobbene lokalt ved å bruke ressurser på den lokale maskinen, i stedet for SageMaker-administrerte ressurser. Lokal modus gir en kostnadseffektiv måte å iterere på rørledningskoden med et mindre delsett av data. Etter at rørledningen er testet lokalt, kan den skaleres til å kjøre ved hjelp av PipelineSession kontekst.
Administrer en SageMaker-pipeline gjennom versjonering
Versjon av artefakter og rørledningsdefinisjoner er et vanlig krav i utviklingslivssyklusen. Du kan lage flere versjoner av rørledningen ved å navngi rørledningsobjekter med et unikt prefiks eller suffiks, den vanligste er et tidsstempel, som vist i følgende kode:
Organiser og spor SageMaker-pipelinekjøringer ved å integrere med SageMaker Experiments
SageMaker Pipelines kan enkelt integreres med SageMaker eksperimenter for organisering og sporing av rørledninger. Dette oppnås ved å spesifisere PipelineExperimentConfig på tidspunktet for opprettelse av en rørledningsobjekt. Med dette konfigurasjonsobjektet kan du spesifisere et eksperimentnavn og et prøvenavn. Kjøringsdetaljene til en SageMaker-pipeline blir organisert under det spesifiserte eksperimentet og prøven. Hvis du ikke eksplisitt spesifiserer et eksperimentnavn, brukes et pipelinenavn for eksperimentnavnet. På samme måte, hvis du ikke eksplisitt spesifiserer et prøvenavn, brukes en pipeline-kjørings-ID for prøve- eller kjøringsgruppenavnet. Se følgende kode:
Kjør SageMaker-rørledninger på en sikker måte i en privat VPC
For å sikre ML-arbeidsbelastningene er det en beste praksis å distribuere jobbene orkestrert av SageMaker Pipelines i en sikker nettverkskonfigurasjon innenfor en privat VPC, private undernett og sikkerhetsgrupper. For å sikre og håndheve bruken av dette sikre miljøet, kan du implementere følgende AWS identitets- og tilgangsadministrasjon (IAM) policy for SageMaker utførelsesrolle (dette er rollen som rørledningen påtar seg under kjøringen). Du kan også legge til policyen for å kjøre jobbene orkestrert av SageMaker Pipelines i nettverksisolasjonsmodus.
For et eksempel på rørledningsimplementering med disse sikkerhetskontrollene på plass, se Orkestrere jobber, modellregistrering og kontinuerlig distribusjon med Amazon SageMaker i et sikkert miljø.
Overvåk kostnadene for rørledningskjøringer ved å bruke tagger
Å bruke SageMaker-rørledninger i seg selv er gratis; du betaler for data- og lagringsressursene du samler opp som en del av de individuelle pipeline-trinnene som prosessering, opplæring og batch-slutning. For å aggregere kostnadene per rørledningskjøring kan du inkludere tags i hvert pipelinetrinn som skaper en ressurs. Disse kodene kan deretter refereres til i kostnadsutforskeren for å filtrere og samle totale kostnader for pipelinekjøring, som vist i følgende eksempel:
Fra kostnadsutforskeren kan du nå få kostnadene filtrert etter taggen:
Design mønstre for noen vanlige scenarier
I denne delen diskuterer vi designmønstre for noen vanlige brukstilfeller med SageMaker Pipelines.
Kjør en lett Python-funksjon ved å bruke et Lambda-trinn
Python-funksjoner er allestedsnærværende i ML-arbeidsflyter; de brukes i forbehandling, etterbehandling, evaluering og mer. Lambda er en serverløs databehandlingstjeneste som lar deg kjøre kode uten å klargjøre eller administrere servere. Med Lambda kan du kjøre kode på ditt foretrukne språk som inkluderer Python. Du kan bruke dette til å kjøre egendefinert Python-kode som en del av rørledningen din. Et Lambda-trinn lar deg kjøre Lambda-funksjoner som en del av din SageMaker-pipeline. Start med følgende kode:
Lag Lambda-funksjonen ved å bruke SageMaker Python SDKs Lambda-hjelper:
Ring Lambda-trinnet:
Send data mellom trinnene
Inndata for et rørledningstrinn er enten en tilgjengelig dataplassering eller data generert av et av de foregående trinnene i rørledningen. Du kan gi denne informasjonen som en ProcessingInput
parameter. La oss se på noen få scenarier for hvordan du kan bruke ProcessingInput.
Scenario 1: Send utdataene (primitive datatyper) fra et Lambda-trinn til et behandlingstrinn
Primitive datatyper refererer til skalardatatyper som streng, heltall, boolsk og flytende.
Følgende kodebit definerer en Lambda-funksjon som returnerer en ordbok med variabler med primitive datatyper. Lambda-funksjonskoden din vil returnere en JSON med nøkkelverdi-par når den påkalles fra Lambda-trinnet i SageMaker-pipelinen.
I pipeline-definisjonen kan du deretter definere SageMaker pipeline-parametere som er av en spesifikk datatype og sette variabelen til utdata fra Lambda-funksjonen:
Scenario 2: Send utdata (ikke-primitive datatyper) fra et Lambda-trinn til et behandlingstrinn
Ikke-primitive datatyper refererer til ikke-skalære datatyper (f.eks. NamedTuple
). Du kan ha et scenario når du må returnere en ikke-primitiv datatype fra en Lambda-funksjon. For å gjøre dette, må du konvertere din ikke-primitive datatype til en streng:
Deretter kan du bruke denne strengen som input til et påfølgende trinn i pipelinen. For å bruke den navngitte tuppelen i koden, bruk eval()
for å analysere Python-uttrykket i strengen:
Scenario 3: Send utdataene fra et trinn gjennom en egenskapsfil
Du kan også lagre utdata fra et behandlingstrinn i en egenskap JSON-fil for nedstrøms forbruk i en ConditionStep
eller en annen ProcessingStep
. Du kan bruke JSONGet funksjon å spørre a eiendomsfil. Se følgende kode:
La oss anta at egenskapsfilens innhold var følgende:
I dette tilfellet kan den spørres etter en bestemt verdi og brukes i påfølgende trinn ved å bruke JsonGet-funksjonen:
Parameteriser en variabel i pipelinedefinisjonen
Parametrisering av variabler slik at de kan brukes under kjøring er ofte ønskelig - for eksempel for å konstruere en S3 URI. Du kan parameterisere en streng slik at den blir evaluert under kjøring ved å bruke Join
funksjon. Følgende kodebit viser hvordan du definerer variabelen ved å bruke Join
funksjon og bruk den til å angi utdataplasseringen i et behandlingstrinn:
Kjør parallell kode over en iterabel
Noen ML-arbeidsflyter kjører kode i parallelle for-løkker over et statisk sett med elementer (en iterabel). Det kan enten være den samme koden som kjøres på forskjellige data eller en annen kodebit som må kjøres for hvert element. For eksempel, hvis du har et veldig stort antall rader i en fil og ønsker å fremskynde behandlingstiden, kan du stole på det tidligere mønsteret. Hvis du vil utføre forskjellige transformasjoner på spesifikke undergrupper i dataene, må du kanskje kjøre en annen kode for hver undergruppe i dataene. De følgende to scenariene illustrerer hvordan du kan designe SageMaker-rørledninger for dette formålet.
Scenario 1: Implementer en behandlingslogikk på forskjellige deler av data
Du kan kjøre en behandlingsjobb med flere forekomster (ved å angi instance_count
til en verdi større enn 1). Dette distribuerer inndataene fra Amazon S3 til alle behandlingsforekomstene. Du kan deretter bruke et skript (process.py) for å arbeide med en bestemt del av dataene basert på forekomstnummeret og det tilsvarende elementet i listen over elementer. Programmeringslogikken i process.py kan skrives slik at en annen modul eller kodebit kjøres avhengig av listen over elementer den behandler. Følgende eksempel definerer en prosessor som kan brukes i et ProcessingStep:
Scenario 2: Kjør en sekvens med trinn
Når du har en sekvens av trinn som må kjøres parallelt, kan du definere hver sekvens som en uavhengig SageMaker-pipeline. Kjøringen av disse SageMaker-rørledningene kan deretter utløses fra en Lambda-funksjon som er en del av en LambdaStep
i overordnet pipeline. Følgende kodestykke illustrerer scenariet der to forskjellige SageMaker-rørledningskjøringer utløses:
konklusjonen
I dette innlegget diskuterte vi noen beste fremgangsmåter for effektiv bruk og vedlikehold av SageMaker-rørledninger. Vi ga også visse mønstre som du kan ta i bruk mens du designer arbeidsflyter med SageMaker Pipelines, enten du skriver nye pipelines eller migrerer ML-arbeidsflyter fra andre orkestreringsverktøy. For å komme i gang med SageMaker Pipelines for ML arbeidsflytorkestrering, se kodeeksempler på GitHub og Amazon SageMaker Model Building Pipelines.
Om forfatterne
Pinak Panigrahi jobber med kunder for å bygge maskinlæringsdrevne løsninger for å løse strategiske forretningsproblemer på AWS. Når han ikke er opptatt med maskinlæring, kan han bli funnet å ta en fottur, lese en bok eller se på sport.
Meenakshisundaram Thandavarayan jobber for AWS som AI/ML-spesialist. Han har en lidenskap for å designe, skape og fremme menneskesentrerte data- og analyseopplevelser. Meena fokuserer på å utvikle bærekraftige systemer som leverer målbare, konkurransefortrinn for strategiske kunder av AWS. Meena er en kobling, designtenker og streber etter å drive virksomheten til nye måter å jobbe på gjennom innovasjon, inkubasjon og demokratisering.
- SEO-drevet innhold og PR-distribusjon. Bli forsterket i dag.
- PlatoData.Network Vertical Generative Ai. Styrk deg selv. Tilgang her.
- PlatoAiStream. Web3 Intelligence. Kunnskap forsterket. Tilgang her.
- PlatoESG. Bil / elbiler, Karbon, CleanTech, Energi, Miljø, Solenergi, Avfallshåndtering. Tilgang her.
- PlatoHelse. Bioteknologisk og klinisk etterretning. Tilgang her.
- ChartPrime. Hev handelsspillet ditt med ChartPrime. Tilgang her.
- BlockOffsets. Modernisering av eierskap for miljøkompensasjon. Tilgang her.
- kilde: https://aws.amazon.com/blogs/machine-learning/best-practices-and-design-patterns-for-building-machine-learning-workflows-with-amazon-sagemaker-pipelines/
- : har
- :er
- :ikke
- :hvor
- $OPP
- 1
- 100
- 11
- 13
- 15%
- 150
- 16
- 17
- 19
- 20
- 22
- 28
- 7
- 8
- 9
- a
- evne
- adgang
- tilgjengelig
- oppnådd
- Handling
- legge til
- adressering
- adoptere
- vedta
- fordeler
- Etter
- aggregat
- Alle
- tillater
- også
- Amazon
- Amazon SageMaker
- Amazon SageMaker-rørledninger
- Amazon Web Services
- an
- analytics
- og
- En annen
- api
- Søknad
- hensiktsmessig
- ER
- AS
- anta
- antatt
- At
- forfatter
- tilgjengelig
- AWS
- basert
- BE
- være
- BEST
- beste praksis
- mellom
- bok
- bygge
- Bygning
- virksomhet
- by
- CAN
- saken
- saker
- viss
- kunde
- kode
- samlinger
- Felles
- konkurranse
- Beregn
- tilstand
- Konfigurasjon
- konstruere
- forbruk
- innhold
- kontekst
- kontinuerlig
- kontroller
- Praktisk
- konvertere
- Tilsvarende
- Kostnad
- kostnadseffektiv
- Kostnader
- skape
- skaper
- Opprette
- skikk
- Kunder
- tilpasset
- dato
- datasett
- dechiffrere
- definere
- definerer
- definere
- definisjon
- definisjoner
- leverer
- demokratisering
- avhengig
- utplassere
- distribusjon
- utforming
- designmønstre
- utforme
- detaljer
- utviklere
- utvikle
- Utvikling
- forskjellig
- dimensjoner
- diskutere
- diskutert
- do
- ikke
- stasjonen
- drevet
- under
- hver enkelt
- lett
- effekt
- effektiv
- enten
- element
- muliggjør
- slutt
- håndheve
- sikre
- enheter
- Miljø
- evaluert
- evaluering
- Event
- Hver
- eksempel
- eksempler
- gjennomføring
- erfaring
- Erfaringer
- eksperiment
- explorer
- uttrykk
- trekke ut
- Noen få
- filet
- filtrere
- Flyte
- fulgt
- etter
- Til
- Tidligere
- funnet
- Gratis
- fra
- fullt
- funksjon
- funksjoner
- generert
- få
- større
- Gruppe
- Gruppens
- Ha
- he
- Fottur
- Hvordan
- Hvordan
- HTML
- http
- HTTPS
- ID
- Identitet
- if
- illustrerer
- iverksette
- gjennomføring
- redskaper
- importere
- forbedre
- in
- inkludere
- inkluderer
- Inkludert
- INKUBASJON
- uavhengig
- individuelt
- informasjon
- Innovasjon
- inngang
- f.eks
- i stedet
- integrert
- Integrering
- samhandler
- inn
- påkalt
- isolasjon
- IT
- varer
- gjentakelser
- DET ER
- selv
- Jobb
- Jobb
- JSON
- nøkkel
- Språk
- stor
- større
- læring
- Lar
- Livssyklus
- lettvekt
- i likhet med
- Liste
- lasting
- lokal
- lokalt
- plassering
- logikk
- Se
- maskin
- maskinlæring
- vedlikehold
- gjøre
- fikk til
- ledelse
- administrerende
- Maksimer
- Kan..
- metoder
- kunne
- Migrere
- ML
- Mote
- modell
- Moduler
- månedlig
- mer
- mest
- flere
- navn
- oppkalt
- navngiving
- Trenger
- behov
- nettverk
- Ny
- nå
- Antall
- objekt
- gjenstander
- få
- of
- Tilbud
- ofte
- on
- ONE
- operasjonell
- or
- orkestrert
- orkestre
- Organisert
- organisering
- Annen
- produksjon
- enn
- par
- Parallel
- parameter
- parametere
- del
- passere
- lidenskap
- Mønster
- mønstre
- Betale
- for
- Utfør
- brikke
- rørledning
- Sted
- plato
- Platon Data Intelligence
- PlatonData
- politikk
- del
- Post
- praksis
- praksis
- trekkes
- forrige
- primitiv
- privat
- problemer
- prosess
- Prosesser
- prosessering
- prosessor
- Programmering
- fremme
- egenskaper
- eiendom
- gi
- forutsatt
- gir
- formål
- Python
- Rask
- Lesning
- referere
- Registrering
- regelmessig
- avhengige
- behov
- Krav
- ressurs
- Ressurser
- svar
- retur
- retur
- avkastning
- Rolle
- Kjør
- går
- s
- sagemaker
- SageMaker-rørledninger
- samme
- scenario
- scenarier
- script
- sømløs
- Seksjon
- sikre
- sikkerhet
- se
- Sequence
- server~~POS=TRUNC
- Servere
- tjeneste
- Tjenester
- Session
- sett
- innstilling
- bør
- vist
- Viser
- på samme måte
- Enkelt
- mindre
- tekstutdrag
- So
- Solutions
- LØSE
- noen
- spesialist
- spesifikk
- spesifisert
- fart
- Snurre rundt
- Sports
- Begynn
- startet
- Uttalelse
- Trinn
- Steps
- lagring
- oppbevare
- Strategisk
- strategisk virksomhet
- effektivisere
- String
- tilstreber
- struktur
- subnett
- senere
- slik
- bærekraftig
- Systemer
- TAG
- ta
- testet
- enn
- Det
- De
- Dem
- deretter
- Der.
- Disse
- de
- thinker
- denne
- Gjennom
- tid
- tidsstempel
- til
- verktøy
- Totalt
- spor
- Tog
- Kurs
- Transformation
- transformasjoner
- prøve
- utløse
- utløst
- sant
- to
- typen
- typer
- etter
- unik
- til
- bruk
- bruke
- brukt
- bruker
- ved hjelp av
- verdi
- Verdier
- variabel
- versjon
- versjoner
- veldig
- ønsker
- se
- Vei..
- måter
- we
- web
- webtjenester
- var
- når
- om
- mens
- vil
- med
- innenfor
- uten
- Arbeid
- arbeidsflyt
- arbeidsflyt
- arbeid
- virker
- verden
- skrevet
- Du
- Din
- zephyrnet