Amazon SageMaker-rørledninger lar dataforskere og maskinlæringsingeniører (ML) automatisere treningsarbeidsflyter, noe som hjelper deg med å lage en repeterbar prosess for å orkestrere modellutviklingstrinn for rask eksperimentering og modellomskolering. Du kan automatisere hele arbeidsflyten for modellbygging, inkludert dataforberedelse, funksjonsutvikling, modellopplæring, modelljustering og modellvalidering, og katalogisere den i modellregisteret. Du kan konfigurere rørledninger til å kjøre automatisk med jevne mellomrom eller når visse hendelser utløses, eller du kan kjøre dem manuelt etter behov.
I dette innlegget fremhever vi noen av forbedringene til Amazon SageMaker SDK og introduser nye funksjoner i Amazon SageMaker Pipelines som gjør det enklere for ML-utøvere å bygge og trene ML-modeller.
Pipelines fortsetter å innovere sin utvikleropplevelse, og med disse siste utgivelsene kan du nå bruke tjenesten på en mer tilpasset måte:
- 2.99.0, 2.101.1, 2.102.0, 2.104.0 – Oppdatert dokumentasjon vedr
PipelineVariable
bruk for estimator-, prosessor-, tuner-, transformator- og modellbasisklasser, Amazon-modeller og rammemodeller. Det vil komme ytterligere endringer med nyere versjoner av SDK for å støtte alle underklasser av estimatorer og prosessorer. - 2.90.0 – Tilgjengelighet av ModellTrinn for integrerte modellressursoppretting og registreringsoppgaver.
- 2.88.2 – Tilgjengelighet av PipelineSession for administrert interaksjon med SageMaker-enheter og ressurser.
- 2.88.2 – Underklassekompatibilitet for arbeidsflyt pipeline jobbtrinn slik at du kan bygge jobbabstraksjoner og konfigurere og kjøre prosesserings-, opplærings-, transformerings- og tuningjobber som du ville gjort uten en pipeline.
- 2.76.0 – Tilgjengelighet av FailStep å betinget stoppe en rørledning med feilstatus.
I dette innlegget leder vi deg gjennom en arbeidsflyt ved å bruke et eksempeldatasett med fokus på modellbygging og distribusjon for å demonstrere hvordan du implementerer Pipelines sine nye funksjoner. På slutten bør du ha nok informasjon til å kunne bruke disse nyere funksjonene og forenkle ML-arbeidsbelastningene dine.
Funksjoner oversikt
Pipelines tilbyr følgende nye funksjoner:
- Annotering for pipelinevariabel – Enkelte metodeparametere godtar flere inngangstyper, inkludert
PipelineVariables
, og ytterligere dokumentasjon er lagt til for å avklare hvorPipelineVariables
støttes både i den siste stabile versjonen av SageMaker SDK-dokumentasjonen og initsignaturen til funksjonene. For eksempel, i følgende TensorFlow-estimator, viser init-signaturen nå detmodel_dir
ogimage_uri
støttePipelineVariables
, mens de andre parameterne ikke gjør det. For mer informasjon, se TensorFlow Estimator.- Før:
- Etter:
- Pipeline økt - PipelineSession er et nytt konsept introdusert for å bringe enhet på tvers av SageMaker SDK og introduserer lat initialisering av rørledningsressursene (kjøreanropene fanges opp, men kjøres ikke før rørledningen er opprettet og kjørt). De
PipelineSession
konteksten arverSageMakerSession
og implementerer praktiske metoder for å samhandle med andre SageMaker-enheter og ressurser, for eksempel opplæringsjobber, endepunkter og inndatasett lagret i Amazon enkel lagringstjeneste (Amazon S3). - Underklasse kompatibilitet med arbeidsflytpipeline jobbtrinn – Du kan nå bygge jobbabstraksjoner og konfigurere og kjøre prosesserings-, opplærings-, transformasjons- og tuningjobber som du ville gjort uten en pipeline.
- For eksempel å lage et behandlingstrinn med
SKLearnProcessor
tidligere krevde følgende: - Som vi ser i den foregående koden,
ProcessingStep
trenger å gjøre stort sett samme forbehandlingslogikk som.run
, bare uten å starte API-kallet for å starte jobben. Men med underklassekompatibilitet nå aktivert med arbeidsflytpipeline jobbtrinn, erklærer vi atstep_args
argument som tar forbehandlingslogikken med .run slik at du kan bygge en jobbabstraksjon og konfigurere den slik du ville brukt den uten Pipelines. Vi passerer også ipipeline_session
, Som er enPipelineSession
objekt, i stedet forsagemaker_session
for å sørge for at kjøresamtalene fanges opp, men ikke kalles før rørledningen er opprettet og kjørt. Se følgende kode:
- For eksempel å lage et behandlingstrinn med
- Modelltrinn (en strømlinjeformet tilnærming med modelloppretting og registreringstrinn) –Rørledninger tilbyr to trinnstyper å integrere med SageMaker-modeller:
CreateModelStep
ogRegisterModel
. Du kan nå oppnå begge deler kun ved å brukeModelStep
type. Merk at aPipelineSession
kreves for å oppnå dette. Dette gir likhet mellom pipeline-trinnene og SDK.- Før:
-
- Etter:
- Feiltrinn (betinget stopp av rørledningen) -
FailStep
lar en rørledning stoppes med en feilstatus hvis en betingelse er oppfylt, for eksempel hvis modellpoengsummen er under en viss terskel.
Løsningsoversikt
I denne løsningen er inngangspunktet ditt Amazon SageMaker Studio integrert utviklingsmiljø (IDE) for rask eksperimentering. Studio tilbyr et miljø for å administrere ende-til-ende Pipelines-opplevelsen. Med Studio kan du omgå AWS-administrasjonskonsoll for hele arbeidsflyten din. For mer informasjon om administrasjon av pipelines fra Studio, se Se, spor og utfør SageMaker-rørledninger i SageMaker Studio.
Følgende diagram illustrerer høynivåarkitekturen til ML-arbeidsflyten med de forskjellige trinnene for å trene og generere slutninger ved å bruke de nye funksjonene.
Rørledningen inkluderer følgende trinn:
- Forbehandle data for å bygge nødvendige funksjoner og dele data inn i tog-, validerings- og testdatasett.
- Lag en treningsjobb med SageMaker XGBoost-rammeverket.
- Evaluer den trente modellen ved å bruke testdatasettet.
- Sjekk om AUC-poengsummen er over en forhåndsdefinert terskel.
- Hvis AUC-poengsummen er mindre enn terskelen, stopper du rørledningen og merker den som mislykket.
- Hvis AUC-poengsummen er høyere enn terskelen, oppretter du en SageMaker-modell og registrerer den i SageMaker-modellregisteret.
- Bruk batchtransformasjon på det gitte datasettet ved å bruke modellen opprettet i forrige trinn.
Forutsetninger
For å følge med på dette innlegget trenger du en AWS-konto med en Studio-domene.
Pipelines er integrert direkte med SageMaker-enheter og ressurser, slik at du ikke trenger å samhandle med andre AWS-tjenester. Du trenger heller ikke å administrere noen ressurser fordi det er en fullstendig administrert tjeneste, noe som betyr at den oppretter og administrerer ressurser for deg. For mer informasjon om de forskjellige SageMaker-komponentene som begge er frittstående Python APIer sammen med integrerte komponenter i Studio, se SageMaker produktside.
Før du begynner, installer SageMaker SDK versjon >= 2.104.0 og xlrd >=1.0.0 i Studio-notatboken ved å bruke følgende kodebit:
ML arbeidsflyt
For dette innlegget bruker du følgende komponenter:
- Dataforberedelse
- SageMaker-behandling – SageMaker Processing er en fullstendig administrert tjeneste som lar deg kjøre tilpassede datatransformasjoner og funksjonsutvikling for ML-arbeidsbelastninger.
- Modellbygg
- Modelltrening og evaluering
- Ett-klikks trening – Den distribuerte treningsfunksjonen fra SageMaker. SageMaker tilbyr distribuerte opplæringsbiblioteker for dataparallellisme og modellparallellisme. Bibliotekene er optimalisert for SageMaker treningsmiljø, hjelper til med å tilpasse de distribuerte treningsjobbene dine til SageMaker, og forbedrer treningshastigheten og gjennomstrømningen.
- SageMaker eksperimenter – Eksperimenter er en funksjon i SageMaker som lar deg organisere, spore, sammenligne og evaluere ML-iterasjonene dine.
- SageMaker batch-transformasjon – Batch-transformasjon eller offline-scoring er en administrert tjeneste i SageMaker som lar deg forutsi et større datasett ved å bruke ML-modellene dine.
- Arbeidsflyt orkestrering
En SageMaker-rørledning er en serie sammenkoblede trinn definert av en JSON-rørledningsdefinisjon. Den koder for en rørledning ved hjelp av en rettet asyklisk graf (DAG). DAG gir informasjon om kravene til og relasjonene mellom hvert trinn i rørledningen, og strukturen bestemmes av dataavhengighetene mellom trinnene. Disse avhengighetene opprettes når egenskapene til et trinns utdata overføres som input til et annet trinn.
Følgende diagram illustrerer de forskjellige trinnene i SageMaker-pipelinen (for et brukstilfelle av churn-prediksjon) der forbindelsene mellom trinnene utledes av SageMaker basert på inngangene og utgangene definert av trinndefinisjonene.
De neste avsnittene går gjennom å lage hvert trinn i rørledningen og kjøre hele rørledningen når den er opprettet.
Prosjektstruktur
La oss starte med prosjektstrukturen:
- /sm-pipelines-end-to-end-eksempel – Prosjektnavnet
- / data – Datasettene
- /rørledninger – Kodefilene for rørledningskomponenter
- /kundemasse
- preprocess.py
- evaluate.py
- /kundemasse
- sagemaker-pipelines-project.ipynb – En notatbok som går gjennom modelleringsarbeidsflyten med Pipelines nye funksjoner
Last ned datasettet
For å følge med på dette innlegget, må du laste ned og lagre eksempel datasett under datamappen i prosjektets hjemmekatalog, som lagrer filen i Amazon elastisk filsystem (Amazon EFS) i Studio-miljøet.
Bygg rørledningskomponentene
Nå er du klar til å bygge rørledningskomponentene.
Importer utsagn og deklarer parametere og konstanter
Lag en Studio-notatbok kalt sagemaker-pipelines-project.ipynb
i prosjektets hjemmekatalog. Skriv inn følgende kodeblokk i en celle, og kjør cellen for å sette opp SageMaker- og S3-klientobjekter, opprett PipelineSession
, og konfigurer S3-bøtteplasseringen ved å bruke standardbøtten som følger med en SageMaker-økt:
Pipelines støtter parameterisering, som lar deg spesifisere inngangsparametere under kjøring uten å endre pipeline-koden. Du kan bruke modulene som er tilgjengelige under sagemaker.workflow.parameters
modul, som f.eks ParameterInteger
, ParameterFloat
og ParameterString
, for å spesifisere rørledningsparametere for ulike datatyper. Kjør følgende kode for å sette opp flere inngangsparametere:
Generer et batch-datasett
Generer batchdatasettet, som du bruker senere i batchtransformeringstrinnet:
Last opp data til en S3-bøtte
Last opp datasettene til Amazon S3:
Definer et behandlingsskript og behandlingstrinn
I dette trinnet forbereder du et Python-skript for å utføre funksjonsutvikling, én varm koding, og kuratere opplæringen, valideringen og testdelingene som skal brukes til modellbygging. Kjør følgende kode for å bygge behandlingsskriptet ditt:
Deretter kjører du følgende kodeblokk for å instansiere prosessoren og Pipelines-trinnet for å kjøre behandlingsskriptet. Fordi behandlingsskriptet er skrevet i Pandas, bruker du en SKLearnProcessor. Rørledningene ProcessingStep
funksjonen tar følgende argumenter: prosessoren, inndata S3-plasseringer for rådatasett og utdata S3-plasseringer for å lagre behandlede datasett.
Definer et treningstrinn
Sett opp modelltrening ved å bruke en SageMaker XGBoost-estimator og Pipelines TrainingStep
funksjon:
Definer evalueringsskriptet og modellevalueringstrinnet
Kjør følgende kodeblokk for å evaluere modellen når den er trent. Dette skriptet innkapsler logikken for å sjekke om AUC-poengsummen oppfyller den angitte terskelen.
Deretter kjører du følgende kodeblokk for å instansiere prosessoren og Pipelines-trinnet for å kjøre evalueringsskriptet. Fordi evalueringsskriptet bruker XGBoost-pakken, bruker du en ScriptProcessor
sammen med XGBoost-bildet. Rørledningene ProcessingStep
funksjonen tar følgende argumenter: prosessoren, inndata S3-plasseringer for rådatasett og utdata S3-plasseringer for å lagre behandlede datasett.
Definer et trinn for å lage modell
Kjør følgende kodeblokk for å lage en SageMaker-modell ved å bruke Pipelines-modelltrinnet. Dette trinnet utnytter resultatet fra opplæringstrinnet for å pakke modellen for distribusjon. Merk at verdien for instanstype-argumentet sendes ved å bruke Pipelines-parameteren du definerte tidligere i innlegget.
Definer et batchtransformeringstrinn
Kjør følgende kodeblokk for å kjøre batchtransformasjon ved å bruke den opplærte modellen med batch-inndataene opprettet i det første trinnet:
Definer et registermodelltrinn
Følgende kode registrerer modellen i SageMaker-modellregisteret ved å bruke Pipelines-modelltrinnet:
Definer et feiltrinn for å stoppe rørledningen
Følgende kode definerer Pipelines fail-trinnet for å stoppe pipeline-kjøringen med en feilmelding hvis AUC-poengsummen ikke oppfyller den definerte terskelen:
Definer et betingelsestrinn for å sjekke AUC-poengsum
Følgende kode definerer et betingelsestrinn for å sjekke AUC-poengsummen og betinget opprette en modell og kjøre en batch-transformasjon og registrere en modell i modellregisteret, eller stoppe pipeline-kjøringen i en mislykket tilstand:
Bygg og kjør rørledningen
Etter å ha definert alle komponenttrinnene, kan du sette dem sammen til et Pipelines-objekt. Du trenger ikke spesifisere rekkefølgen på pipeline fordi Pipelines automatisk utleder rekkefølgen basert på avhengighetene mellom trinnene.
Kjør følgende kode i en celle i notatboken. Hvis rørledningen allerede eksisterer, oppdaterer koden rørledningen. Hvis rørledningen ikke eksisterer, opprettes en ny.
konklusjonen
I dette innlegget introduserte vi noen av de nye funksjonene som nå er tilgjengelige med Pipelines sammen med andre innebygde SageMaker-funksjoner og XGBoost-algoritmen for å utvikle, iterere og distribuere en modell for churn-prediksjon. Løsningen kan utvides med ytterligere datakilder
å implementere din egen ML-arbeidsflyt. For mer informasjon om trinnene som er tilgjengelige i arbeidsflyten for rørledninger, se Amazon SageMaker Model Building Pipeline og SageMaker arbeidsflyter. De AWS SageMaker eksempler GitHub repo har flere eksempler rundt ulike brukstilfeller som bruker Pipelines.
Om forfatterne
Jerry Peng er en programvareutviklingsingeniør med AWS SageMaker. Han fokuserer på å bygge ende-til-ende storskala MLOps-system fra trening til modellovervåking i produksjon. Han brenner også for å bringe konseptet MLOps til et bredere publikum.
Dewen Qi er en programvareutviklingsingeniør i AWS. Hun fokuserer for tiden på å utvikle og forbedre SageMaker Pipelines. Utenom jobben liker hun å øve på cello.
Gayatri Ghanakota er en senior maskinlæringsingeniør med AWS Professional Services. Hun brenner for å utvikle, distribuere og forklare AI/ML-løsninger på tvers av ulike domener. Før denne rollen ledet hun flere initiativer som dataforsker og ML-ingeniør med globale toppfirmaer innen finans- og detaljhandel. Hun har en mastergrad i informatikk med spesialisering i datavitenskap fra University of Colorado, Boulder.
Rupinder Grewal er en Sr Ai/ML spesialistløsningsarkitekt med AWS. Han fokuserer for tiden på servering av modeller og MLOps på SageMaker. Før denne rollen har han jobbet som maskinlæringsingeniør med å bygge og hoste modeller. Utenom jobben liker han å spille tennis og sykle på fjellstier.
Ray Li er en Sr. Data Scientist med AWS Professional Services. Hans spesialitet fokuserer på å bygge og operasjonalisere AI/ML-løsninger for kunder av varierende størrelse, alt fra startups til bedriftsorganisasjoner. Utenom jobben liker Ray trening og reise.
- AI
- ai kunst
- ai art generator
- du har en robot
- Amazon SageMaker
- kunstig intelligens
- sertifisering av kunstig intelligens
- kunstig intelligens i bankvirksomhet
- kunstig intelligens robot
- kunstig intelligens roboter
- programvare for kunstig intelligens
- AWS maskinlæring
- blockchain
- blockchain konferanse ai
- coingenius
- samtale kunstig intelligens
- kryptokonferanse ai
- dall sin
- dyp læring
- google det
- maskinlæring
- plato
- plato ai
- Platon Data Intelligence
- Platon spill
- PlatonData
- platogaming
- skala ai
- syntaks
- zephyrnet