MLOps är en nyckeldisciplin som ofta övervakar vägen till produktion av maskininlärningsmodeller (ML). Det är naturligt att fokusera på en enda modell som du vill träna och distribuera. Men i verkligheten kommer du sannolikt att arbeta med dussintals eller till och med hundratals modeller, och processen kan involvera flera komplexa steg. Därför är det viktigt att ha infrastrukturen på plats för att spåra, träna, distribuera och övervaka modeller med varierande komplexitet i skala. Det är här MLOps-verktyg kommer in. MLOps-verktyg hjälper dig att repeterbart och tillförlitligt bygga upp och förenkla dessa processer till ett arbetsflöde som är skräddarsytt för ML.
Amazon SageMaker-rörledningar, en funktion av Amazon SageMaker, är en specialbyggd arbetsflödesorkestreringstjänst för ML som hjälper dig att automatisera hela ML-arbetsflöden i stor skala. Det förenklar utvecklingen och underhållet av ML-modeller genom att tillhandahålla en centraliserad plattform för att organisera uppgifter som dataförberedelse, modellträning, inställning och validering. SageMaker Pipelines kan hjälpa dig att effektivisera arbetsflödeshanteringen, påskynda experiment och omskola modeller lättare.
I det här inlägget lyfter vi fram en spännande ny funktion i SageMaker Pipelines som kallas Selektiv utförande. Den här nya funktionen ger dig möjlighet att selektivt köra specifika delar av ditt ML-arbetsflöde, vilket resulterar i betydande tids- och beräkningsresursbesparingar genom att begränsa körningen till pipelinesteg i omfattning och eliminera behovet av att köra steg utanför räckvidden. Dessutom utforskar vi olika användningsfall där fördelarna med att använda selektiv exekvering blir uppenbara, vilket ytterligare förstärker dess värdeförslag.
Lösningsöversikt
SageMaker Pipelines fortsätter att förnya sin utvecklarupplevelse med lanseringen av Selektiv utförande. ML-byggare har nu möjlighet att välja specifika steg som ska köras inom en pipeline, vilket eliminerar behovet av att köra hela pipelinen igen. Den här funktionen gör att du kan köra om specifika delar av pipelinen samtidigt som du ändrar körtidsparametrarna som är kopplade till de valda stegen.
Det är viktigt att notera att de valda stegen kan förlita sig på resultatet av icke-valda steg. I sådana fall återanvänds utdata från dessa icke valda steg från en referenskörning av den aktuella pipelineversionen. Det betyder att referenskörningen redan måste ha slutförts. Standardreferenskörningen är den senaste körningen av den aktuella pipelineversionen, men du kan också välja att använda en annan körning av den aktuella pipelineversionen som referens.
Det övergripande tillståndet för referenskörningen måste vara Framgångsrik, Misslyckades or stoppad. Det kan inte vara Springa när Selective Execution försöker använda sina utgångar. När du använder Selective Execution kan du välja valfritt antal steg att köra, så länge de utgör en sammanhängande del av pipelinen.
Följande diagram illustrerar rörledningens beteende med en full körning.
Följande diagram illustrerar pipelinebeteendet med selektiv exekvering.
I följande avsnitt visar vi hur man använder selektiv körning för olika scenarier, inklusive komplexa arbetsflöden i pipeline Direct Acyclic Graphs (DAGs).
Förutsättningar
För att börja experimentera med Selective Execution måste vi först ställa in följande komponenter i din SageMaker-miljö:
- SageMaker Python SDK – Se till att du har en uppdaterad SageMaker Python SDK installerat i din Python-miljö. Du kan köra följande kommando från din bärbara dator eller terminal för att installera eller uppgradera SageMaker Python SDK-versionen till 2.162.0 eller högre:
python3 -m pip install sagemaker>=2.162.0
orpip3 install sagemaker>=2.162.0
. - Tillgång till SageMaker Studio (valfritt) - Amazon SageMaker Studio kan vara till hjälp för att visualisera pipelinekörningar och interagera med redan existerande pipeline-ARN visuellt. Om du inte har tillgång till SageMaker Studio eller använder on-demand-anteckningsböcker eller andra IDE:er kan du fortfarande följa det här inlägget och interagera med dina pipeline-ARN:er med Python SDK.
Exempelkoden för en fullständig genomgång från början till slut finns tillgänglig i GitHub repo.
Inställning
Med sagemaker>=1.162.0
Python SDK, introducerade vi SelectiveExecutionConfig
klass som en del av sagemaker.workflow.selective_execution_config
modul. Funktionen Selektiv exekvering bygger på en pipeline-ARN som tidigare har markerats som Lyckades, Misslyckades or stoppad. Följande kodavsnitt visar hur man importerar SelectiveExecutionConfig
klass, hämta referenspipeline-ARN och samla associerade pipelinesteg och körtidsparametrar som styr pipelinekörningen:
import boto3
from sagemaker.workflow.pipeline import Pipeline
from sagemaker.workflow.selective_execution_config import SelectiveExecutionConfig sm_client = boto3.client('sagemaker')
# reference the name of your sample pipeline pipeline_name = "AbalonePipeline"
# filter for previous success pipeline execution arns
pipeline_executions = [_exec for _exec in Pipeline(name=pipeline_name).list_executions()['PipelineExecutionSummaries'] if _exec['PipelineExecutionStatus'] == "Succeeded"
]
# get the last successful execution
latest_pipeline_arn = pipeline_executions[0]['PipelineExecutionArn']
print(latest_pipeline_arn)
>>> arn:aws:sagemaker:us-east-1:123123123123:pipeline/AbalonePipeline/execution/x62pbar3gs6h # list all steps of your sample pipeline
execution_steps = sm_client.list_pipeline_execution_steps( PipelineExecutionArn=latest_pipeline_arn
)['PipelineExecutionSteps']
print(execution_steps)
>>> [{'StepName': 'Abalone-Preprocess', 'StartTime': datetime.datetime(2023, 6, 27, 4, 41, 30, 519000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2023, 6, 27, 4, 41, 30, 986000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'AttemptCount': 0, 'Metadata': {'ProcessingJob': {'Arn': 'arn:aws:sagemaker:us-east-1:123123123123:processing-job/pipelines-fvsmu7m7ki3q-Abalone-Preprocess-d68CecvHLU'}}, 'SelectiveExecutionResult': {'SourcePipelineExecutionArn': 'arn:aws:sagemaker:us-east-1:123123123123:pipeline/AbalonePipeline/execution/ksm2mjwut6oz'}}, {'StepName': 'Abalone-Train', 'StartTime': datetime.datetime(2023, 6, 27, 4, 41, 31, 320000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2023, 6, 27, 4, 43, 58, 224000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'AttemptCount': 0, 'Metadata': {'TrainingJob': {'Arn': 'arn:aws:sagemaker:us-east-1:123123123123:training-job/pipelines-x62pbar3gs6h-Abalone-Train-PKhAc1Q6lx'}}}, {'StepName': 'Abalone-Evaluate', 'StartTime': datetime.datetime(2023, 6, 27, 4, 43, 59, 40000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2023, 6, 27, 4, 57, 43, 76000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'AttemptCount': 0, 'Metadata': {'ProcessingJob': {'Arn': 'arn:aws:sagemaker:us-east-1:123123123123:processing-job/pipelines-x62pbar3gs6h-Abalone-Evaluate-vmkZDKDwhk'}}}, {'StepName': 'Abalone-MSECheck', 'StartTime': datetime.datetime(2023, 6, 27, 4, 57, 43, 821000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2023, 6, 27, 4, 57, 44, 124000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'AttemptCount': 0, 'Metadata': {'Condition': {'Outcome': 'True'}}}] # list all configureable pipeline parameters # params can be altered during selective execution
parameters = sm_client.list_pipeline_parameters_for_execution( PipelineExecutionArn=latest_pipeline_arn
)['PipelineParameters']
print(parameters)
>>> [{'Name': 'XGBNumRounds', 'Value': '120'}, {'Name': 'XGBSubSample', 'Value': '0.9'}, {'Name': 'XGBGamma', 'Value': '2'}, {'Name': 'TrainingInstanceCount', 'Value': '1'}, {'Name': 'XGBMinChildWeight', 'Value': '4'}, {'Name': 'XGBETA', 'Value': '0.25'}, {'Name': 'ApprovalStatus', 'Value': 'PendingManualApproval'}, {'Name': 'ProcessingInstanceCount', 'Value': '1'}, {'Name': 'ProcessingInstanceType', 'Value': 'ml.t3.medium'}, {'Name': 'MseThreshold', 'Value': '6'}, {'Name': 'ModelPath', 'Value': 's3://sagemaker-us-east-1-123123123123/Abalone/models/'}, {'Name': 'XGBMaxDepth', 'Value': '12'}, {'Name': 'TrainingInstanceType', 'Value': 'ml.c5.xlarge'}, {'Name': 'InputData', 'Value': 's3://sagemaker-us-east-1-123123123123/sample-dataset/abalone/abalone.csv'}]
Användningsfall
I det här avsnittet presenterar vi några scenarier där Selektiv exekvering potentiellt kan spara tid och resurser. Vi använder ett typiskt pipelineflöde, som inkluderar steg som dataextraktion, utbildning, utvärdering, modellregistrering och utbyggnad, som referens för att visa fördelarna med Selektiv exekvering.
SageMaker Pipelines låter dig definiera körtidsparametrar för din pipelinekörning med hjälp av pipelineparametrar. När en ny körning utlöses, kör den vanligtvis hela pipelinen från början till slut. Men om steg caching är aktiverat kommer SageMaker Pipelines att försöka hitta en tidigare körning av det aktuella pipelinesteget med samma attributvärden. Om en matchning hittas kommer SageMaker Pipelines att använda utdata från föregående körning istället för att beräkna om steget. Observera att även med stegcache aktiverad kommer SageMaker Pipelines fortfarande att köra hela arbetsflödet till slutet som standard.
Med lanseringen av funktionen Selektiv exekvering kan du nu köra ett helt pipeline-arbetsflöde igen eller selektivt köra en delmängd av steg med ett tidigare pipeline-ARN. Detta kan göras även utan att stegcaching är aktiverat. Följande användningsfall illustrerar de olika sätten du kan använda Selektiv exekvering.
Användningsfall 1: Kör ett enda steg
Dataforskare fokuserar ofta på utbildningsstadiet för en MLOps-pipeline och vill inte oroa sig för förbearbetnings- eller distributionsstegen. Selective Execution tillåter dataforskare att fokusera på bara träningssteget och ändra träningsparametrar eller hyperparametrar i farten för att förbättra modellen. Detta kan spara tid och minska kostnaderna eftersom beräkningsresurserna endast används för att köra användarvalda pipelinesteg. Se följande kod:
# select a reference pipeline arn and subset step to execute
selective_execution_config = SelectiveExecutionConfig( source_pipeline_execution_arn="arn:aws:sagemaker:us-east-1:123123123123:pipeline/AbalonePipeline/execution/9e3ljoql7s0n", selected_steps=["Abalone-Train"]
) # start execution of pipeline subset
select_execution = pipeline.start( selective_execution_config=selective_execution_config, parameters={ "XGBNumRounds": 120, "XGBSubSample": 0.9, "XGBGamma": 2, "XGBMinChildWeight": 4, "XGBETA": 0.25, "XGBMaxDepth": 12 }
)
Följande figurer illustrerar pipelinen med ett steg i processen och sedan komplett.
Användningsfall 2: Kör flera sammanhängande pipeline-steg
För att fortsätta med det tidigare användningsfallet vill en dataforskare träna en ny modell och utvärdera dess prestanda mot en gyllene testdatauppsättning. Denna utvärdering är avgörande för att säkerställa att modellen uppfyller rigorösa riktlinjer för testning av användaracceptans (UAT) eller produktionsinstallation. Dataforskaren vill dock inte köra hela pipeline-arbetsflödet eller distribuera modellen. De kan använda Selective Execution för att enbart fokusera på utbildnings- och utvärderingsstegen, vilket sparar tid och resurser samtidigt som de får de valideringsresultat de behöver:
# select a reference pipeline arn and subset step to execute
selective_execution_config = SelectiveExecutionConfig( source_pipeline_execution_arn="arn:aws:sagemaker:us-east-1:123123123123:pipeline/AbalonePipeline/execution/9e3ljoql7s0n", selected_steps=["Abalone-Train", "Abalone-Evaluate"]
) # start execution of pipeline subset
select_execution = pipeline.start( selective_execution_config=selective_execution_config, parameters={ "ProcessingInstanceType": "ml.t3.medium", "XGBNumRounds": 120, "XGBSubSample": 0.9, "XGBGamma": 2, "XGBMinChildWeight": 4, "XGBETA": 0.25, "XGBMaxDepth": 12 }
)
Användningsfall 3: Uppdatera och kör om misslyckade pipelinesteg
Du kan använda Selective Execution för att köra om misslyckade steg inom en pipeline eller återuppta körningen av en pipeline från ett misslyckat steg och framåt. Detta kan vara användbart för felsökning och felsökning av misslyckade steg eftersom det tillåter utvecklare att fokusera på de specifika problem som måste åtgärdas. Detta kan leda till effektivare problemlösning och snabbare iterationstider. Följande exempel illustrerar hur du kan välja att köra om bara det misslyckade steget i en pipeline.
# select a previously failed pipeline arn
selective_execution_config = SelectiveExecutionConfig( source_pipeline_execution_arn="arn:aws:sagemaker:us-east-1:123123123123:pipeline/AbalonePipeline/execution/fvsmu7m7ki3q", selected_steps=["Abalone-Evaluate"]
) # start execution of failed pipeline subset
select_execution = pipeline.start( selective_execution_config=selective_execution_config
)
Alternativt kan en dataforskare återuppta en pipeline från ett misslyckat steg till slutet av arbetsflödet genom att ange det misslyckade steget och alla steg som följer efter det i SelectiveExecutionConfig
.
Användningsfall 4: Rörledningstäckning
I vissa rörledningar körs vissa grenar mer sällan än andra. Till exempel kan det finnas en gren som bara körs när ett specifikt tillstånd misslyckas. Det är viktigt att testa dessa grenar noggrant för att säkerställa att de fungerar som förväntat när ett fel inträffar. Genom att testa dessa mindre frekvent körda grenar kan utvecklare verifiera att deras pipeline är robust och att felhanteringsmekanismer effektivt bibehåller önskat arbetsflöde och ger tillförlitliga resultat.
selective_execution_config = SelectiveExecutionConfig( source_pipeline_execution_arn="arn:aws:sagemaker:us-east-1:123123123123:pipeline/AbalonePipeline/execution/9e3ljoql7s0n", selected_steps=["Abalone-Train", "Abalone-Evaluate", "Abalone-MSECheck", "Abalone-FailNotify"]
)
Slutsats
I det här inlägget diskuterade vi funktionen Selective Execution i SageMaker Pipelines, som ger dig möjlighet att selektivt köra specifika steg i dina ML-arbetsflöden. Denna förmåga leder till betydande tids- och beräkningsbesparingar. Vi tillhandahöll lite exempelkod i GitHub repo som visar hur man använder Selective Execution och presenterade olika scenarier där det kan vara fördelaktigt för användarna. Om du vill lära dig mer om selektiv exekvering, se vår Utvecklarhandbok och API-referensguide.
För att utforska de tillgängliga stegen i SageMaker Pipelines arbetsflöde mer detaljerat, se Amazon SageMaker Model Building Pipeline och SageMaker arbetsflöden. Dessutom kan du hitta fler exempel som visar olika användningsfall och implementeringsmetoder med SageMaker Pipelines i AWS SageMaker exempel GitHub-förråd. Dessa resurser kan ytterligare förbättra din förståelse och hjälpa dig att dra nytta av den fulla potentialen hos SageMaker Pipelines och selektivt utförande i dina nuvarande och framtida ML-projekt.
Om författarna
Pranav Murthy är en AI/ML Specialist Solutions Architect på AWS. Han fokuserar på att hjälpa kunder att bygga, träna, distribuera och migrera maskininlärning (ML) arbetsbelastningar till SageMaker. Han har tidigare arbetat inom halvledarindustrin med att utveckla modeller för stora datorseende (CV) och NLP (natural language processing) för att förbättra halvledarprocesser. På fritiden tycker han om att spela schack och att resa.
Akhil Numarsu är en Sr. Product Manager-Technical fokuserad på att hjälpa team att accelerera ML-resultat genom effektiva verktyg och tjänster i molnet. Han tycker om att spela bordtennis och är en sportfantast.
Nishant Krishnamoorthy är Sr. Software Development Engineer med Amazon Stores. Han har en magisterexamen i datavetenskap och fokuserar för närvarande på att accelerera ML-adoption i olika organisationer inom Amazon genom att bygga och operationalisera ML-lösningar på SageMaker.
- SEO-drivet innehåll och PR-distribution. Bli förstärkt idag.
- PlatoData.Network Vertical Generative Ai. Styrka dig själv. Tillgång här.
- PlatoAiStream. Web3 Intelligence. Kunskap förstärkt. Tillgång här.
- Platoesg. Fordon / elbilar, Kol, CleanTech, Energi, Miljö, Sol, Avfallshantering. Tillgång här.
- PlatoHealth. Biotech och kliniska prövningar Intelligence. Tillgång här.
- ChartPrime. Höj ditt handelsspel med ChartPrime. Tillgång här.
- BlockOffsets. Modernisera miljökompensation ägande. Tillgång här.
- Källa: https://aws.amazon.com/blogs/machine-learning/unlocking-efficiency-harnessing-the-power-of-selective-execution-in-amazon-sagemaker-pipelines/
- : har
- :är
- :var
- $UPP
- 1
- 100
- 12
- 2023
- 25
- 27
- 30
- 31
- 7
- 9
- a
- förmåga
- Om oss
- accelerera
- accelererande
- godkännande
- tillgång
- acyklisk
- Dessutom
- Antagande
- Fördel
- fördelaktig
- fördelar
- mot
- AI / ML
- Alla
- tillåter
- redan
- också
- förändrad
- amason
- Amazon SageMaker
- Amazon SageMaker-rörledningar
- Amazon Web Services
- an
- och
- vilken som helst
- tillvägagångssätt
- ÄR
- AS
- associerad
- At
- Försök
- automatisera
- tillgänglig
- AWS
- BE
- därför att
- blir
- varit
- beteende
- Branch
- grenar
- SLUTRESULTAT
- byggare
- Byggnad
- men
- by
- KAN
- kan inte
- kapacitet
- Vid
- fall
- centraliserad
- vissa
- schack
- Välja
- klass
- cloud
- koda
- kommer
- fullborda
- Avslutade
- komplex
- komplexiteter
- komponenter
- Compute
- dator
- Datavetenskap
- Datorsyn
- tillstånd
- fortsätter
- Pris
- avgörande
- Aktuella
- För närvarande
- Kunder
- datum
- Förberedelse av data
- datavetare
- datum Tid
- Standard
- definiera
- Examen
- demonstrera
- demonstrerar
- distribuera
- utplacering
- önskas
- detalj
- Utvecklare
- utvecklare
- utveckla
- Utveckling
- olika
- rikta
- diskuteras
- gör
- inte
- gjort
- inte
- dussintals
- under
- lätt
- effektivt
- effektivitet
- effektiv
- eliminera
- bemyndigar
- aktiverad
- möjliggör
- änden
- början till slut
- ingenjör
- förbättra
- säkerställa
- Hela
- Miljö
- utvärdera
- utvärdering
- Även
- uppenbart
- exempel
- exempel
- spännande
- exekvera
- utförande
- förväntat
- erfarenhet
- utforska
- extraktion
- Misslyckades
- misslyckas
- Misslyckande
- fläkt
- snabbare
- Leverans
- få
- siffror
- filtrera
- hitta
- slut
- Förnamn
- flöda
- Fokus
- fokuserade
- fokuserar
- följer
- efter
- För
- formen
- hittade
- Fri
- ofta
- från
- full
- ytterligare
- Vidare
- framtida
- samla
- skaffa sig
- få
- GitHub
- Golden
- styrande
- grafer
- riktlinjer
- Utnyttja
- Har
- he
- hjälpa
- hjälp
- hjälpa
- hjälper
- högre
- hans
- innehar
- Hur ser din drömresa ut
- How To
- Men
- html
- HTTPS
- Hundratals
- if
- illustrerar
- genomförande
- importera
- med Esport
- förbättra
- in
- innefattar
- Inklusive
- industrin
- Infrastruktur
- förnya
- installera
- installerad
- istället
- interagera
- interagera
- in
- introducerade
- engagera
- problem
- IT
- iteration
- DESS
- jpg
- bara
- Nyckel
- känd
- språk
- Large
- Efternamn
- senaste
- leda
- Leads
- LÄRA SIG
- inlärning
- mindre
- tycka om
- sannolikt
- begränsande
- Lista
- Lång
- Maskinen
- maskininlärning
- bibehålla
- underhåll
- ledning
- markant
- Match
- Maj..
- betyder
- mekanismer
- Medium
- möter
- metadata
- kanske
- migrera
- ML
- MLOps
- modell
- modeller
- modifiera
- Modulerna
- Övervaka
- mer
- mer effektiv
- multipel
- måste
- namn
- Natural
- Naturlig språkbehandling
- Behöver
- Nya
- nlp
- anteckningsbok
- nu
- antal
- of
- Ofta
- on
- On-Demand
- ONE
- endast
- or
- orkestrering
- Övriga
- Övrigt
- vår
- ut
- Resultat
- utfall
- övergripande
- parametrar
- del
- bana
- prestanda
- rörledning
- Plats
- plattform
- plato
- Platon Data Intelligence
- PlatonData
- i
- del
- Inlägg
- potentiell
- potentiellt
- kraft
- beredning
- presentera
- presenteras
- föregående
- tidigare
- Innan
- problemlösning
- process
- processer
- bearbetning
- producera
- Produkt
- Produktion
- projekt
- förslag
- förutsatt
- tillhandahålla
- Python
- Verkligheten
- minska
- Registrering
- frigöra
- pålitlig
- förlita
- Repository
- resurs
- Resurser
- resulterande
- Resultat
- Fortsätt
- rigorös
- robusta
- Körning
- rinnande
- kör
- sagemaker
- SageMaker-rörledningar
- Samma
- Save
- sparande
- Besparingar
- Skala
- scenarier
- Vetenskap
- Forskare
- vetenskapsmän
- omfattning
- sDK
- §
- sektioner
- se
- vald
- selektiv
- halvledare
- service
- Tjänster
- in
- show
- visa upp
- signifikant
- förenkla
- enda
- kodavsnitt
- Mjukvara
- mjukvaruutveckling
- enbart
- solidifierande
- Lösningar
- några
- specialist
- specifik
- Sporter
- Spotlight
- Etapp
- starta
- Ange
- Steg
- Steg
- Fortfarande
- lagrar
- effektivisera
- studio
- framgång
- framgångsrik
- sådana
- bord
- skräddarsydd
- Ta
- uppgifter
- lag
- terminal
- testa
- Testning
- än
- den där
- Smakämnen
- deras
- sedan
- Där.
- därför
- Dessa
- de
- detta
- grundligt
- Genom
- tid
- gånger
- till
- verktyg
- spår
- Tåg
- Utbildning
- Traveling
- triggas
- sann
- typisk
- typiskt
- förståelse
- upplåsning
- Uppdatering
- uppdaterad
- uppgradera
- användning
- användningsfall
- Användare
- användare
- med hjälp av
- utnyttjas
- Använda
- godkännande
- värde
- Värden
- olika
- verifiera
- version
- syn
- genomgång
- vill
- vill
- sätt
- we
- webb
- webbservice
- när
- som
- medan
- kommer
- med
- inom
- utan
- Arbete
- arbetade
- arbetsflöde
- arbetsflöden
- oro
- skulle
- Om er
- Din
- zephyrnet