Amazon SageMaker-rörledningar låter datavetare och maskininlärningsingenjörer (ML) automatisera träningsarbetsflöden, vilket hjälper dig att skapa en repeterbar process för att organisera modellutvecklingssteg för snabba experiment och modellomskolning. Du kan automatisera hela arbetsflödet för modellbyggandet, inklusive dataförberedelse, funktionsutveckling, modellträning, modellinställning och modellvalidering, och katalogisera det i modellregistret. Du kan konfigurera pipelines att köras automatiskt med jämna mellanrum eller när vissa händelser utlöses, eller så kan du köra dem manuellt efter behov.
I det här inlägget lyfter vi fram några av förbättringarna av Amazon SageMaker SDK och introducera nya funktioner i Amazon SageMaker Pipelines som gör det lättare för ML-utövare att bygga och träna ML-modeller.
Pipelines fortsätter att förnya sin utvecklarupplevelse, och med dessa senaste utgåvor kan du nu använda tjänsten på ett mer anpassat sätt:
- 2.99.0, 2.101.1, 2.102.0, 2.104.0 – Uppdaterad dokumentation på
PipelineVariable
användning för estimator, processor, tuner, transformator och modellbasklasser, Amazon-modeller och rammodeller. Det kommer att komma ytterligare ändringar med nyare versioner av SDK för att stödja alla underklasser av estimatorer och processorer. - 2.90.0 - Tillgänglighet av ModelStep för integrerad modellresursskapande och registreringsuppgifter.
- 2.88.2 - Tillgänglighet av PipelineSession för hanterad interaktion med SageMaker-enheter och resurser.
- 2.88.2 – Underklasskompatibilitet för arbetsflöde pipeline jobb steg så att du kan bygga jobbabstraktioner och konfigurera och köra bearbetnings-, utbildnings-, transformerings- och tuningjobb som du skulle göra utan en pipeline.
- 2.76.0 - Tillgänglighet av FailStep att villkorligt stoppa en pipeline med felstatus.
I det här inlägget går vi igenom ett arbetsflöde med hjälp av en exempeldatauppsättning med fokus på modellbyggande och implementering för att demonstrera hur man implementerar Pipelines nya funktioner. I slutet bör du ha tillräckligt med information för att framgångsrikt kunna använda dessa nyare funktioner och förenkla dina ML-arbetsbelastningar.
Funktioner översikt
Pipelines erbjuder följande nya funktioner:
- Anteckning för rörledningsvariabel – Vissa metodparametrar accepterar flera inmatningstyper, inklusive
PipelineVariables
, och ytterligare dokumentation har lagts till för att klargöra varPipelineVariables
stöds i både den senaste stabila versionen av SageMaker SDK-dokumentation och initsignaturen för funktionerna. Till exempel, i följande TensorFlow-estimator, visar nu init-signaturen detmodel_dir
ochimage_uri
stödjaPipelineVariables
, medan de andra parametrarna inte gör det. För mer information, se TensorFlow Estimator.- Innan:
- Efter:
- Pipeline session - PipelineSession är ett nytt koncept som introducerats för att skapa enhet över SageMaker SDK och introducerar lat initiering av pipelineresurserna (körningsanropen fångas upp men körs inte förrän pipelinen skapas och körs). De
PipelineSession
sammanhang ärverSageMakerSession
och implementerar bekväma metoder för dig att interagera med andra SageMaker-enheter och resurser, såsom utbildningsjobb, slutpunkter och indatauppsättningar lagrade i Amazon enkel lagringstjänst (Amazon S3). - Underklasskompatibilitet med arbetssteg för arbetsflödespipeline – Du kan nu bygga jobbabstraktioner och konfigurera och köra bearbetnings-, utbildnings-, transformerings- och finjusteringsjobb som du skulle göra utan en pipeline.
- Till exempel att skapa ett bearbetningssteg med
SKLearnProcessor
tidigare krävde följande: - Som vi ser i föregående kod,
ProcessingStep
behöver göra i princip samma förbearbetningslogik som.run
, bara utan att starta API-anropet för att starta jobbet. Men med underklasskompatibilitet nu aktiverad med arbetsflödespipelinejobbssteg, förklarar vi attstep_args
argument som tar förbearbetningslogiken med .run så att du kan bygga en jobbabstraktion och konfigurera den som du skulle använda den utan Pipelines. Vi passerar också ipipeline_session
, Som är enPipelineSession
objekt istället försagemaker_session
för att se till att körningsanropen fångas upp men inte anropas förrän pipelinen skapas och körs. Se följande kod:
- Till exempel att skapa ett bearbetningssteg med
- Modellsteg (en strömlinjeformad metod med modellskapande och registreringssteg) – Pipelines erbjuder två stegtyper att integrera med SageMaker-modeller:
CreateModelStep
ochRegisterModel
. Du kan nu uppnå båda genom att endast användaModelStep
typ. Observera att aPipelineSession
krävs för att uppnå detta. Detta ger likheter mellan pipeline-stegen och SDK:n.- Innan:
-
- Efter:
- Felsteg (villkorligt stopp av pipelinekörningen) -
FailStep
tillåter att en pipeline stoppas med en felstatus om ett villkor är uppfyllt, till exempel om modellpoängen är under en viss tröskel.
Lösningsöversikt
I den här lösningen är din ingångspunkt Amazon SageMaker Studio integrerad utvecklingsmiljö (IDE) för snabba experiment. Studio erbjuder en miljö för att hantera hela Pipelines-upplevelsen. Med Studio kan du kringgå AWS Management Console för hela din arbetsflödeshantering. För mer information om att hantera pipelines inifrån Studio, se Visa, spåra och kör SageMaker Pipelines i SageMaker Studio.
Följande diagram illustrerar högnivåarkitekturen för ML-arbetsflödet med de olika stegen för att träna och generera slutsatser med de nya funktionerna.
Pipelinen innehåller följande steg:
- Förbearbeta data för att bygga funktioner som krävs och dela upp data i tåg-, validerings- och testdatauppsättningar.
- Skapa ett träningsjobb med SageMaker XGBoost-ramverket.
- Utvärdera den tränade modellen med hjälp av testdatauppsättningen.
- Kontrollera om AUC-poängen ligger över en fördefinierad tröskel.
- Om AUC-poängen är lägre än tröskeln, stoppa pipelinekörningen och markera den som misslyckad.
- Om AUC-poängen är högre än tröskeln, skapa en SageMaker-modell och registrera den i SageMaker-modellregistret.
- Tillämpa batchtransformation på den givna datamängden med den modell som skapades i föregående steg.
Förutsättningar
För att följa detta inlägg behöver du ett AWS-konto med ett Studiodomän.
Pipelines är integrerad direkt med SageMaker-enheter och resurser, så du behöver inte interagera med några andra AWS-tjänster. Du behöver inte heller hantera några resurser eftersom det är en helt hanterad tjänst, vilket innebär att den skapar och hanterar resurser åt dig. För mer information om de olika SageMaker-komponenterna som båda är fristående Python API:er tillsammans med integrerade komponenter i Studio, se SageMaker produktsida.
Innan du börjar, installera SageMaker SDK version >= 2.104.0 och xlrd >=1.0.0 i Studio-anteckningsboken med hjälp av följande kodavsnitt:
ML arbetsflöde
För det här inlägget använder du följande komponenter:
- Dataförberedelse
- SageMaker-bearbetning – SageMaker Processing är en helt hanterad tjänst som låter dig köra anpassade datatransformationer och funktionsutveckling för ML-arbetsbelastningar.
- Modellbyggnad
- Modellutbildning och utvärdering
- Träning med ett klick – Den distribuerade träningsfunktionen från SageMaker. SageMaker tillhandahåller distribuerade utbildningsbibliotek för dataparallellism och modellparallellism. Biblioteken är optimerade för SageMakers träningsmiljö, hjälper till att anpassa dina distribuerade träningsjobb till SageMaker och förbättrar träningshastighet och genomströmning.
- SageMaker-experiment – Experiment är en funktion hos SageMaker som låter dig organisera, spåra, jämföra och utvärdera dina ML-iterationer.
- SageMaker batch-transformation – Batchtransformering eller offlinepoäng är en hanterad tjänst i SageMaker som låter dig förutsäga en större datauppsättning med dina ML-modeller.
- Arbetsflödesorkestrering
En SageMaker-pipeline är en serie sammankopplade steg som definieras av en JSON-pipelinedefinition. Den kodar en pipeline med hjälp av en riktad acyklisk graf (DAG). DAG ger information om kraven för och sambanden mellan varje steg i pipelinen, och dess struktur bestäms av databeroendet mellan stegen. Dessa beroenden skapas när egenskaperna för ett stegs utdata skickas som indata till ett annat steg.
Följande diagram illustrerar de olika stegen i SageMaker-pipelinen (för ett churn-förutsägande användningsfall) där kopplingarna mellan stegen härleds av SageMaker baserat på ingångarna och utgångarna som definieras av stegdefinitionerna.
Nästa avsnitt går igenom att skapa varje steg i pipelinen och köra hela pipelinen när den väl har skapats.
Projektets struktur
Låt oss börja med projektstrukturen:
- /sm-pipelines-end-to-end-exempel – Projektets namn
- / data – Datauppsättningarna
- /pipelines – Kodfilerna för pipelinekomponenter
- /kundtjänst
- preprocess.py
- evaluate.py
- /kundtjänst
- sagemaker-pipelines-project.ipynb – En anteckningsbok som går igenom modelleringsarbetsflödet med Pipelines nya funktioner
Ladda ner datasetet
För att följa med det här inlägget måste du ladda ner och spara exempeluppsättning under datamappen i projektets hemkatalog, som sparar filen i Amazon Elastic File System (Amazon EFS) inom Studiomiljön.
Bygg rörledningskomponenterna
Nu är du redo att bygga pipelinekomponenterna.
Importera satser och deklarera parametrar och konstanter
Skapa en Studio-anteckningsbok som heter sagemaker-pipelines-project.ipynb
i projektets hemkatalog. Ange följande kodblock i en cell och kör cellen för att ställa in SageMaker- och S3-klientobjekt, skapa PipelineSession
, och ställ in platsen för S3-hinken med standardhinken som följer med en SageMaker-session:
Pipelines stöder parameterisering, vilket gör att du kan ange indataparametrar vid körning utan att ändra din pipelinekod. Du kan använda modulerna som finns tillgängliga under sagemaker.workflow.parameters
modul, som t.ex ParameterInteger
, ParameterFloat
och ParameterString
, för att specificera pipelineparametrar för olika datatyper. Kör följande kod för att ställa in flera ingångsparametrar:
Generera en batchdatauppsättning
Generera batchdatasetet som du använder senare i batchtransformeringssteget:
Ladda upp data till en S3-bucket
Ladda upp datamängderna till Amazon S3:
Definiera ett bearbetningsskript och bearbetningssteg
I det här steget förbereder du ett Python-skript för att göra funktionsteknik, en varmkodning och kurera utbildningen, valideringen och testdelarna som ska användas för modellbyggande. Kör följande kod för att bygga ditt bearbetningsskript:
Kör sedan följande kodblock för att instansiera processorn och steget Pipelines för att köra bearbetningsskriptet. Eftersom bearbetningsskriptet är skrivet i Pandas använder du en SKLearnProcessor. Rörledningarna ProcessingStep
funktionen tar följande argument: processorn, indata S3-platserna för rådatauppsättningar och utdata S3-platserna för att spara bearbetade datauppsättningar.
Definiera ett träningssteg
Ställ in modellträning med hjälp av en SageMaker XGBoost-estimator och Pipelines TrainingStep
fungera:
Definiera utvärderingsskriptet och modellutvärderingssteget
Kör följande kodblock för att utvärdera modellen när den väl har tränats. Detta skript kapslar in logiken för att kontrollera om AUC-poängen når den angivna tröskeln.
Kör sedan följande kodblock för att instansiera processorn och steget Pipelines för att köra utvärderingsskriptet. Eftersom utvärderingsskriptet använder XGBoost-paketet använder du en ScriptProcessor
tillsammans med XGBoost-bilden. Rörledningarna ProcessingStep
funktionen tar följande argument: processorn, indata S3-platserna för rådatauppsättningar och utdata S3-platserna för att spara bearbetade datauppsättningar.
Definiera ett steg för att skapa modell
Kör följande kodblock för att skapa en SageMaker-modell med hjälp av modellsteget Pipelines. Det här steget använder resultatet från utbildningssteget för att paketera modellen för implementering. Observera att värdet för argumentet instanstyp skickas med hjälp av parametern Pipelines som du definierade tidigare i inlägget.
Definiera ett batchtransformeringssteg
Kör följande kodblock för att köra batchtransformation med den tränade modellen med batchingången som skapades i det första steget:
Definiera ett registermodellsteg
Följande kod registrerar modellen i SageMaker-modellregistret med hjälp av Pipelines-modellsteget:
Definiera ett felsteg för att stoppa pipelinen
Följande kod definierar Pipelines fail-steget för att stoppa pipelinekörningen med ett felmeddelande om AUC-poängen inte når den definierade tröskeln:
Definiera ett villkorssteg för att kontrollera AUC-poäng
Följande kod definierar ett villkorssteg för att kontrollera AUC-poängen och villkorligt skapa en modell och köra en batchtransformation och registrera en modell i modellregistret, eller stoppa pipelinekörningen i ett misslyckat tillstånd:
Bygg och kör pipelinen
Efter att ha definierat alla komponentstegen kan du sätta ihop dem till ett Pipelines-objekt. Du behöver inte ange ordningen på pipeline eftersom Pipelines automatiskt härleder ordningsföljden baserat på beroenden mellan stegen.
Kör följande kod i en cell i din anteckningsbok. Om pipelinen redan finns uppdaterar koden pipelinen. Om pipelinen inte finns skapar den en ny.
Slutsats
I det här inlägget introducerade vi några av de nya funktionerna som nu är tillgängliga med Pipelines tillsammans med andra inbyggda SageMaker-funktioner och XGBoost-algoritmen för att utveckla, iterera och distribuera en modell för churn-förutsägelse. Lösningen kan utökas med ytterligare datakällor
att implementera ditt eget ML-arbetsflöde. För mer information om de steg som är tillgängliga i Pipelines arbetsflöde, se Amazon SageMaker Model Building Pipeline och SageMaker arbetsflöden. De AWS SageMaker exempel GitHub repo har fler exempel kring olika användningsfall som använder Pipelines.
Om författarna
Jerry Peng är en mjukvaruutvecklingsingenjör med AWS SageMaker. Han fokuserar på att bygga heltäckande storskaliga MLOps-system från utbildning till modellövervakning i produktionen. Han brinner också för att föra ut konceptet MLOps till en bredare publik.
Dewen Qi är en mjukvaruutvecklingsingenjör i AWS. Hon fokuserar för närvarande på att utveckla och förbättra SageMaker Pipelines. Utanför jobbet tycker hon om att träna cello.
Gayatri Ghanakota är en Sr. Machine Learning Engineer med AWS Professional Services. Hon brinner för att utveckla, distribuera och förklara AI/ML-lösningar över olika domäner. Före denna roll ledde hon flera initiativ som datavetare och ML-ingenjör med globala toppföretag inom finans- och detaljhandeln. Hon har en magisterexamen i datavetenskap specialiserad på datavetenskap från University of Colorado, Boulder.
Rupinder Grewal är en Sr Ai/ML Specialist Solutions Architect med AWS. Han fokuserar för närvarande på servering av modeller och MLOps på SageMaker. Innan denna roll har han arbetat som Machine Learning Engineer med att bygga och hosta modeller. Utanför jobbet tycker han om att spela tennis och cykla på bergsstigar.
Ray Li är en Sr. Data Scientist med AWS Professional Services. Hans specialitet fokuserar på att bygga och operationalisera AI/ML-lösningar för kunder av varierande storlek, allt från nystartade företag till företagsorganisationer. Utanför jobbet tycker Ray om att träna och resa.
- AI
- ai konst
- ai art generator
- har robot
- Amazon SageMaker
- artificiell intelligens
- artificiell intelligenscertifiering
- artificiell intelligens inom bankväsendet
- artificiell intelligens robot
- robotar med artificiell intelligens
- programvara för artificiell intelligens
- AWS maskininlärning
- blockchain
- blockchain konferens ai
- coingenius
- konversationskonstnärlig intelligens
- kryptokonferens ai
- dalls
- djupt lärande
- du har google
- maskininlärning
- plato
- plato ai
- Platon Data Intelligence
- Platon spel
- PlatonData
- platogaming
- skala ai
- syntax
- zephyrnet