Amazon SageMaker Pipelines er en fuldt administreret AWS-tjeneste til opbygning og orkestrering af maskinlæring (ML) arbejdsgange. SageMaker Pipelines tilbyder ML-applikationsudviklere muligheden for at orkestrere forskellige trin i ML-workflowet, herunder dataindlæsning, datatransformation, træning, tuning og implementering. Du kan bruge SageMaker Pipelines til at orkestrere ML-job i SageMaker, og dets integration med det større AWS-økosystem giver dig også mulighed for at bruge ressourcer som f.eks AWS Lambda funktioner, Amazon EMR job og meget mere. Dette giver dig mulighed for at bygge en tilpasset og reproducerbar pipeline til specifikke krav i dine ML-arbejdsgange.
I dette indlæg giver vi nogle bedste fremgangsmåder til at maksimere værdien af SageMaker Pipelines og gøre udviklingsoplevelsen problemfri. Vi diskuterer også nogle almindelige designscenarier og -mønstre, når vi bygger SageMaker Pipelines og giver eksempler på, hvordan de kan håndteres.
Bedste praksis for SageMaker Pipelines
I dette afsnit diskuterer vi nogle bedste praksisser, der kan følges, når man designer arbejdsgange ved hjælp af SageMaker Pipelines. Ved at vedtage dem kan det forbedre udviklingsprocessen og strømline den operationelle ledelse af SageMaker Pipelines.
Brug Pipeline Session til doven indlæsning af pipelinen
Pipeline session muliggør doven initialisering af pipelineressourcer (jobbene startes ikke før pipeline-runtime). Det PipelineSession
kontekst arver SageMaker Session og implementerer praktiske metoder til at interagere med andre SageMaker-enheder og ressourcer, såsom træningsjob, slutpunkter, inputdatasæt i Amazon Simple Storage Service (Amazon S3) og så videre. Når du definerer SageMaker Pipelines, bør du bruge PipelineSession
over den almindelige SageMaker-session:
Kør pipelines i lokal tilstand for omkostningseffektive og hurtige gentagelser under udvikling
Du kan køre en pipeline i lokal tilstand ved hjælp af LocalPipelineSession
sammenhæng. I denne tilstand køres pipeline og jobs lokalt ved hjælp af ressourcer på den lokale maskine i stedet for SageMaker-administrerede ressourcer. Lokal tilstand giver en omkostningseffektiv måde at iterere på pipelinekoden med en mindre delmængde af data. Efter at rørledningen er testet lokalt, kan den skaleres til at køre ved hjælp af PipelineSession sammenhæng.
Administrer en SageMaker-pipeline gennem versionering
Versionering af artefakter og pipelinedefinitioner er et almindeligt krav i udviklingens livscyklus. Du kan oprette flere versioner af pipelinen ved at navngive pipeline-objekter med et unikt præfiks eller suffiks, hvor den mest almindelige er et tidsstempel, som vist i følgende kode:
Organiser og spor SageMaker-pipelinekørsler ved at integrere med SageMaker Experiments
SageMaker Pipelines kan nemt integreres med SageMaker-eksperimenter til at organisere og sporing af rørledninger. Dette opnås ved at specificere PipelineExperimentConfig på tidspunktet for oprettelse af en rørledningsobjekt. Med dette konfigurationsobjekt kan du angive et eksperimentnavn og et prøvenavn. Kørselsdetaljerne for en SageMaker-pipeline bliver organiseret under det angivne eksperiment og forsøg. Hvis du ikke udtrykkeligt angiver et eksperimentnavn, bruges et pipelinenavn til eksperimentnavnet. På samme måde, hvis du ikke eksplicit angiver et prøvenavn, bruges et pipeline-kørsels-id til prøve- eller kørselsgruppenavnet. Se følgende kode:
Kør sikkert SageMaker-pipelines i en privat VPC
For at sikre ML-arbejdsbelastningerne er det en god praksis at implementere de job, der er orkestreret af SageMaker Pipelines, i en sikker netværkskonfiguration inden for en privat VPC, private undernet og sikkerhedsgrupper. For at sikre og håndhæve brugen af dette sikre miljø kan du implementere følgende AWS identitets- og adgangsstyring (IAM) politik for SageMaker udførelsesrolle (dette er den rolle, som rørledningen påtager sig under dens kørsel). Du kan også tilføje politikken til at køre de job, der er orkestreret af SageMaker Pipelines i netværksisoleringstilstand.
For et eksempel på pipelineimplementering med disse sikkerhedskontroller på plads, se Orkestrering af job, modelregistrering og kontinuerlig implementering med Amazon SageMaker i et sikkert miljø.
Overvåg omkostningerne ved pipeline-kørsler ved hjælp af tags
Det er gratis at bruge SageMaker pipelines i sig selv; du betaler for de beregnings- og lagerressourcer, du samler op som en del af de individuelle pipeline-trin som behandling, træning og batch-inferens. For at aggregere omkostningerne pr. pipelinekørsel kan du inkludere tags i hvert pipelinetrin, der skaber en ressource. Disse tags kan derefter henvises til i cost explorer for at filtrere og aggregere de samlede pipelinekørselsomkostninger, som vist i følgende eksempel:
Fra cost explorer kan du nu få omkostningerne filtreret efter tagget:
Design mønstre til nogle almindelige scenarier
I dette afsnit diskuterer vi designmønstre for nogle almindelige anvendelsestilfælde med SageMaker Pipelines.
Kør en letvægts Python-funktion ved hjælp af et Lambda-trin
Python-funktioner er allestedsnærværende i ML-arbejdsgange; de bruges i forbehandling, efterbehandling, evaluering og mere. Lambda er en serverløs computertjeneste, der lader dig køre kode uden at klargøre eller administrere servere. Med Lambda kan du køre kode på dit foretrukne sprog, der inkluderer Python. Du kan bruge dette til at køre tilpasset Python-kode som en del af din pipeline. Et Lambda-trin giver dig mulighed for at køre Lambda-funktioner som en del af din SageMaker-pipeline. Start med følgende kode:
Opret Lambda-funktionen ved hjælp af SageMaker Python SDK's Lambda-hjælper:
Kald Lambda-trinnet:
Send data mellem trin
Inputdata for et pipelinetrin er enten en tilgængelig dataplacering eller data genereret af et af de foregående trin i pipelinen. Du kan give disse oplysninger som en ProcessingInput
parameter. Lad os se på et par scenarier for, hvordan du kan bruge ProcessingInput.
Scenarie 1: Overfør outputtet (primitive datatyper) fra et Lambda-trin til et behandlingstrin
Primitive datatyper refererer til skalære datatyper som streng, heltal, Boolean og float.
Følgende kodestykke definerer en Lambda-funktion, der returnerer en ordbog over variabler med primitive datatyper. Din Lambda-funktionskode returnerer en JSON af nøgleværdi-par, når den kaldes fra Lambda-trinnet i SageMaker-pipelinen.
I pipeline-definitionen kan du derefter definere SageMaker-pipeline-parametre, der er af en specifik datatype og indstille variablen til output fra Lambda-funktionen:
Scenarie 2: Send output (ikke-primitive datatyper) fra et lambda-trin til et behandlingstrin
Ikke-primitive datatyper henviser til ikke-skalære datatyper (f.eks. NamedTuple
). Du kan have et scenarie, hvor du skal returnere en ikke-primitiv datatype fra en Lambda-funktion. For at gøre dette skal du konvertere din ikke-primitive datatype til en streng:
Så kan du bruge denne streng som input til et efterfølgende trin i pipelinen. For at bruge den navngivne tuple i koden, brug eval()
for at parse Python-udtrykket i strengen:
Scenarie 3: Send output fra et trin gennem en egenskabsfil
Du kan også gemme outputtet fra et behandlingstrin i en ejendom JSON-fil til downstream-forbrug i en ConditionStep
eller en anden ProcessingStep
. Du kan bruge JSONGet funktion at forespørge a ejendomsfil. Se følgende kode:
Lad os antage, at ejendomsfilens indhold var følgende:
I dette tilfælde kan den forespørges for en bestemt værdi og bruges i efterfølgende trin ved hjælp af JsonGet-funktionen:
Parametriser en variabel i pipeline definition
Parametrisering af variabler, så de kan bruges under kørsel, er ofte ønskeligt - for eksempel for at konstruere en S3 URI. Du kan parametrere en streng, således at den evalueres ved kørsel ved hjælp af Join
fungere. Følgende kodestykke viser, hvordan man definerer variablen ved hjælp af Join
funktion og brug den til at indstille outputplaceringen i et behandlingstrin:
Kør parallel kode over en iterabel
Nogle ML-arbejdsgange kører kode i parallelle for-loops over et statisk sæt elementer (en Iterable). Det kan enten være den samme kode, der bliver kørt på forskellige data eller et andet stykke kode, der skal køres for hvert element. For eksempel, hvis du har et meget stort antal rækker i en fil og ønsker at fremskynde behandlingstiden, kan du stole på det tidligere mønster. Hvis du vil udføre forskellige transformationer på specifikke undergrupper i dataene, skal du muligvis køre et andet stykke kode for hver undergruppe i dataene. De følgende to scenarier illustrerer, hvordan du kan designe SageMaker-pipelines til dette formål.
Scenarie 1: Implementer en behandlingslogik på forskellige dele af data
Du kan køre et behandlingsjob med flere forekomster (ved at indstille instance_count
til en værdi større end 1). Dette distribuerer inputdataene fra Amazon S3 til alle behandlingsforekomster. Du kan derefter bruge et script (process.py) til at arbejde på en bestemt del af dataene baseret på instansnummeret og det tilsvarende element på listen over elementer. Programmeringslogikken i process.py kan skrives sådan, at et andet modul eller kodestykke køres afhængigt af listen over elementer, som det behandler. Følgende eksempel definerer en processor, der kan bruges i et ProcessingStep:
Scenarie 2: Kør en række trin
Når du har en sekvens af trin, der skal køres parallelt, kan du definere hver sekvens som en uafhængig SageMaker-pipeline. Kørslen af disse SageMaker-rørledninger kan derefter udløses fra en Lambda-funktion, der er en del af en LambdaStep
i moderrørledningen. Følgende kodestykke illustrerer scenariet, hvor to forskellige SageMaker-pipelinekørsler udløses:
Konklusion
I dette indlæg diskuterede vi nogle bedste praksisser for effektiv brug og vedligeholdelse af SageMaker-rørledninger. Vi leverede også visse mønstre, som du kan anvende, mens du designer arbejdsgange med SageMaker Pipelines, uanset om du opretter nye pipelines eller migrerer ML-arbejdsgange fra andre orkestreringsværktøjer. For at komme i gang med SageMaker Pipelines til ML workflow orkestrering, se kodeeksempler på GitHub , Amazon SageMaker Model Building Pipelines.
Om forfatterne
Pinak Panigrahi arbejder sammen med kunder om at bygge maskinlæringsdrevne løsninger til at løse strategiske forretningsproblemer på AWS. Når han ikke er beskæftiget med maskinlæring, kan han blive fundet på at tage en vandretur, læse en bog eller se sport.
Meenakshisundaram Thandavarayan arbejder for AWS som AI/ML Specialist. Han har en passion for at designe, skabe og fremme menneskecentrerede data- og analyseoplevelser. Meena fokuserer på at udvikle bæredygtige systemer, der leverer målbare, konkurrencemæssige fordele for strategiske kunder af AWS. Meena er en connector, designtænker og stræber efter at drive forretning til nye måder at arbejde på gennem innovation, inkubation og demokratisering.
- SEO Powered Content & PR Distribution. Bliv forstærket i dag.
- PlatoData.Network Vertical Generative Ai. Styrk dig selv. Adgang her.
- PlatoAiStream. Web3 intelligens. Viden forstærket. Adgang her.
- PlatoESG. Automotive/elbiler, Kulstof, CleanTech, Energi, Miljø, Solenergi, Affaldshåndtering. Adgang her.
- PlatoHealth. Bioteknologiske og kliniske forsøgs intelligens. Adgang her.
- ChartPrime. Løft dit handelsspil med ChartPrime. Adgang her.
- BlockOffsets. Modernisering af miljømæssig offset-ejerskab. Adgang 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
- $OP
- 1
- 100
- 11
- 13
- 15 %
- 150
- 16
- 17
- 19
- 20
- 22
- 28
- 7
- 8
- 9
- a
- evne
- adgang
- tilgængelig
- opnået
- Handling
- tilføje
- adressering
- vedtage
- Vedtagelsen
- fordele
- Efter
- aggregat
- Alle
- tillader
- også
- Amazon
- Amazon SageMaker
- Amazon SageMaker Pipelines
- Amazon Web Services
- an
- analytics
- ,
- En anden
- api
- Anvendelse
- passende
- ER
- AS
- antage
- antaget
- At
- forfatter
- til rådighed
- AWS
- baseret
- BE
- være
- BEDSTE
- bedste praksis
- mellem
- bog
- bygge
- Bygning
- virksomhed
- by
- CAN
- tilfælde
- tilfælde
- vis
- kunde
- kode
- samlinger
- Fælles
- konkurrencedygtig
- Compute
- betingelse
- Konfiguration
- konstruere
- forbrug
- indhold
- sammenhæng
- kontinuerlig
- kontrol
- Praktisk
- konvertere
- Tilsvarende
- Koste
- omkostningseffektiv
- Omkostninger
- skabe
- skaber
- Oprettelse af
- skik
- Kunder
- tilpassede
- data
- datasæt
- dechifrere
- definere
- definerer
- definere
- definition
- definitioner
- levere
- demokratisering
- Afhængigt
- indsætte
- implementering
- Design
- design mønstre
- designe
- detaljer
- udviklere
- udvikling
- Udvikling
- forskellige
- størrelse
- diskutere
- drøftet
- do
- Dont
- køre
- drevet
- i løbet af
- hver
- nemt
- effekt
- effektiv
- enten
- element
- muliggør
- ende
- håndhæve
- sikre
- enheder
- Miljø
- evalueret
- evaluering
- begivenhed
- Hver
- eksempel
- eksempler
- udførelse
- erfaring
- Oplevelser
- eksperiment
- opdagelsesrejsende
- udtryk
- ekstrakt
- få
- File (Felt)
- filtrere
- Flyde
- efterfulgt
- efter
- Til
- Tidligere
- fundet
- Gratis
- fra
- fuldt ud
- funktion
- funktioner
- genereret
- få
- større
- gruppe
- Gruppens
- Have
- he
- Hike
- Hvordan
- How To
- HTML
- http
- HTTPS
- ID
- Identity
- if
- illustrerer
- gennemføre
- implementering
- redskaber
- importere
- Forbedre
- in
- omfatter
- omfatter
- Herunder
- INKUBATION
- uafhængig
- individuel
- oplysninger
- Innovation
- indgang
- instans
- i stedet
- integreret
- Integration
- interaktion
- ind
- påberåbes
- isolation
- IT
- Varer
- iterationer
- ITS
- selv
- Job
- Karriere
- json
- Nøgle
- Sprog
- stor
- større
- læring
- Lets
- livscyklus
- letvægt
- ligesom
- Liste
- lastning
- lokale
- lokalt
- placering
- logik
- Se
- maskine
- machine learning
- vedligeholdelse
- lave
- lykkedes
- ledelse
- styring
- Maksimer
- Kan..
- metoder
- måske
- migrere
- ML
- tilstand
- model
- Moduler
- månedligt
- mere
- mest
- flere
- navn
- Som hedder
- navngivning
- Behov
- behov
- netværk
- Ny
- nu
- nummer
- objekt
- objekter
- opnå
- of
- Tilbud
- tit
- on
- ONE
- operationelle
- or
- orkestreret
- orkestrering
- Organiseret
- organisering
- Andet
- output
- i løbet af
- par
- Parallel
- parameter
- parametre
- del
- passerer
- lidenskab
- Mønster
- mønstre
- Betal
- per
- Udfør
- stykke
- pipeline
- Place
- plato
- Platon Data Intelligence
- PlatoData
- politik
- del
- Indlæg
- praksis
- praksis
- foretrækkes
- tidligere
- primitive
- private
- problemer
- behandle
- Processer
- forarbejdning
- Processor
- Programmering
- fremme
- egenskaber
- ejendom
- give
- forudsat
- giver
- formål
- Python
- Hurtig
- Læsning
- henvise
- Registrering
- fast
- stole
- krav
- Krav
- ressource
- Ressourcer
- svar
- afkast
- vender tilbage
- afkast
- roller
- Kør
- løber
- s
- sagemaker
- SageMaker Pipelines
- samme
- scenarie
- scenarier
- script
- sømløs
- Sektion
- sikker
- sikkerhed
- se
- Sequence
- Serverless
- Servere
- tjeneste
- Tjenester
- Session
- sæt
- indstilling
- bør
- vist
- Shows
- Tilsvarende
- Simpelt
- mindre
- uddrag
- So
- Løsninger
- SOLVE
- nogle
- specialist
- specifikke
- specificeret
- hastighed
- Spin
- Sport
- starte
- påbegyndt
- Statement
- Trin
- Steps
- opbevaring
- butik
- Strategisk
- strategisk forretning
- strømline
- String
- stræber
- struktur
- undernet
- efterfølgende
- sådan
- bæredygtig
- Systemer
- TAG
- tager
- afprøvet
- end
- at
- Them
- derefter
- Der.
- Disse
- de
- tænker
- denne
- Gennem
- tid
- tidsstempel
- til
- værktøjer
- I alt
- spor
- Tog
- Kurser
- Transformation
- transformationer
- retssag
- udløse
- udløst
- sand
- to
- typen
- typer
- under
- enestående
- indtil
- Brug
- brug
- anvendte
- bruger
- ved brug af
- værdi
- Værdier
- variabel
- udgave
- versioner
- meget
- ønsker
- ser
- Vej..
- måder
- we
- web
- webservices
- var
- hvornår
- hvorvidt
- mens
- vilje
- med
- inden for
- uden
- Arbejde
- workflow
- arbejdsgange
- arbejder
- virker
- world
- skriftlig
- Du
- Din
- zephyrnet