I december 2020, AWS meddelade den allmänna tillgängligheten till Amazon SageMaker JumpStart, en förmåga av Amazon SageMaker som hjälper dig att snabbt och enkelt komma igång med maskininlärning (ML). I mars 2022 gjorde vi också meddelade stödet för API:er i JumpStart. JumpStart tillhandahåller finjustering och distribution med ett klick av en mängd olika förtränade modeller över populära ML-uppgifter, samt ett urval av helhetslösningar som löser vanliga affärsproblem. Dessa funktioner tar bort de tunga lyften från varje steg i ML-processen, vilket gör det enklare att utveckla högkvalitativa modeller och minskar tiden till implementering.
I det här inlägget visar vi hur man kör automatisk modellinställning med JumpStart.
SageMaker automatisk modelljustering
Traditionellt implementerar ML-ingenjörer en trial and error-metod för att hitta rätt uppsättning hyperparametrar. Trial and error innebär att flera jobb körs sekventiellt eller parallellt samtidigt som de resurser som behövs för att köra experimentet tillhandahålls.
Med SageMaker automatisk modelljustering, ML-ingenjörer och datavetare kan avlasta den tidskrävande uppgiften att optimera sin modell och låta SageMaker köra experimentet. SageMaker drar fördel av elasticiteten hos AWS-plattformen för att effektivt och samtidigt köra flera träningssimuleringar på en datauppsättning och hitta de bästa hyperparametrarna för en modell.
SageMaker automatisk modellinställning hittar den bästa versionen av en modell genom att köra många träningsjobb på din datauppsättning med hjälp av algoritmen och intervall hyperparametrar som du anger. Den väljer sedan hyperparametervärdena som resulterar i en modell som presterar bäst, mätt med a metriska som du väljer.
Automatisk modellinställning använder antingen en Bayesian (standard) eller en slumpmässig sökstrategi för att hitta de bästa värdena för hyperparametrar. Bayesiansk sökning behandlar hyperparameterinställning som en regression problem. När den väljer de bästa hyperparametrarna för nästa träningsjobb tar den hänsyn till allt den vet om problemet hittills och låter algoritmen utnyttja de mest kända resultaten.
I det här inlägget använder vi den Bayesianska standardsökstrategin för att demonstrera stegen som är involverade i att köra automatisk modellinställning med JumpStart med hjälp av LightGBM modell.
JumpStart stöder för närvarande 10 exempel bärbara datorer med automatisk modellinställning. Den stöder också fyra populära algoritmer för tabellformad datamodellering. Uppgifterna och länkarna till deras exempelanteckningsböcker sammanfattas i följande tabell.
Lösningsöversikt
Detta tekniska arbetsflöde ger en översikt över Amazon Sagemakers olika funktioner och steg som behövs för att automatiskt ställa in en JumpStart-modell.
I följande avsnitt ger vi en steg-för-steg-genomgång av hur man kör automatisk modellinställning med JumpStart med hjälp av LightGBM-algoritmen. Vi tillhandahåller en medföljande anteckningsbok för denna genomgång.
Vi går igenom följande steg på hög nivå:
- Hämta JumpStart förutbildade modell och bildbehållare.
- Ställ in statiska hyperparametrar.
- Definiera de avstämbara hyperparameterområdena.
- Initiera den automatiska modellinställningen.
- Kör trimningsjobbet.
- Distribuera den bästa modellen till en slutpunkt.
Hämta den förtränade JumpStart-modellen och bildbehållaren
I det här avsnittet väljer vi LightGBM-klassificeringsmodellen för finjustering. Vi använder instanstypen ml.m5.xlarge som modellen körs på. Vi hämtar sedan utbildningsdockningsbehållaren, träningsalgoritmkällan och den förtränade modellen. Se följande kod:
training_instance_type = "ml.m5.xlarge" # Retrieve the docker image
train_image_uri = image_uris.retrieve(
region=None,
framework=None,
model_id=train_model_id,
model_version=train_model_version,
image_scope=train_scope,
instance_type=training_instance_type,
)
# Retrieve the training script
train_source_uri = script_uris.retrieve(
model_id=train_model_id, model_version=train_model_version, script_scope=train_scope
)
# Retrieve the pre-trained model tarball to further fine-tune
train_model_uri = model_uris.retrieve(
model_id=train_model_id, model_version=train_model_version, model_scope=train_scope
)
Ställ in statiska hyperparametrar
Vi hämtar nu standardhyperparametrarna för denna LightGBM-modell, som förkonfigurerade av JumpStart. Vi åsidosätter också num_boost_round
hyperparameter med ett anpassat värde.
# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(
model_id=train_model_id, model_version=train_model_version
)
# [Optional] Override default hyperparameters with custom values
Definiera de avstämbara hyperparameterområdena
Därefter definierar vi hyperparameterområdena optimerad genom automatisk modellinställning. Vi definierar hyperparameternamnet som förväntat av modellen och sedan värdeintervallen som ska prövas för denna hyperparameter. Automatisk modellinställning drar prover (lika med max_jobs
parameter) från utrymmet för hyperparametrar, med en teknik som kallas Bayesian sökning. För varje ritat hyperparameterprov skapar tunern ett träningsjobb för att utvärdera modellen med den konfigurationen. Se följande kod:
hyperparameter_ranges = {
"learning_rate": ContinuousParameter(1e-4, 1, scaling_type="Logarithmic"),
"num_boost_round": IntegerParameter(2, 30),
"early_stopping_rounds": IntegerParameter(2, 30),
"num_leaves": IntegerParameter(10, 50),
"feature_fraction": ContinuousParameter(0, 1),
"bagging_fraction": ContinuousParameter(0, 1),
"bagging_freq": IntegerParameter(1, 10),
"max_depth": IntegerParameter(5, 30),
"min_data_in_leaf": IntegerParameter(5, 50),
}
Initiera den automatiska modellinställningen
Vi börjar med att skapa en Uppskattare objekt med alla nödvändiga tillgångar som definierar träningsjobbet, såsom den förtränade modellen, träningsbilden och träningsskriptet. Vi definierar sedan a HyperparameterTuner objekt för att interagera med SageMaker hyperparameter tuning API:er.
Smakämnen HyperparameterTuner
accepterar som parametrar Estimator-objektet, målmåttet baserat på vilket den bästa uppsättningen hyperparametrar bestäms, det totala antalet utbildningsjobb (max_jobs
) för att starta för hyperparameterinställningsjobbet och de maximala parallella träningsjobben som ska köras (max_parallel_jobs
). Utbildningsjobb körs med LightGBM-algoritmen och hyperparametervärdena som har det minimala mlogloss
måttenhet väljs. För mer information om hur du konfigurerar automatisk modellinställning, se Bästa metoder för justering av hyperparameter.
# Create SageMaker Estimator instance
tabular_estimator = Estimator(
role=aws_role,
image_uri=train_image_uri,
source_dir=train_source_uri,
model_uri=train_model_uri,
entry_point="transfer_learning.py",
instance_count=1,
instance_type=training_instance_type,
max_run=360000,
hyperparameters=hyperparameters,
output_path=s3_output_location,
) tuner = HyperparameterTuner(
estimator=tabular_estimator,
objective_metric_name="multi_logloss",
hyperparameter_ranges=hyperparameter_ranges,
metric_definitions=[{"Name": "multi_logloss", "Regex": "multi_logloss: ([0-9\.]+)"}],
strategy="Bayesian",
max_jobs=10,
max_parallel_jobs=2,
objective_type="Minimize",
base_tuning_job_name=training_job_name,
)
I den föregående koden säger vi till tunern att köra högst 10 experiment (max_jobs
) och endast två samtidiga experiment åt gången (max_parallel_jobs
). Båda dessa parametrar håller din kostnad och träningstid under kontroll.
Kör trimningsjobbet
För att starta SageMaker-inställningsjobbet anropar vi passningsmetoden för hyperparametertunerobjektet och skickar Amazon enkel lagringstjänst (Amazon S3) sökväg för träningsdata:
tuner.fit({"training": training_dataset_s3_path}, logs=True)
Medan automatisk modellinställning söker efter de bästa hyperparametrarna kan du övervaka deras framsteg antingen på SageMaker-konsolen eller på amazoncloudwatch. När träningen är klar laddas den bästa modellens finjusterade artefakter upp till Amazon S3-utgångsplatsen som anges i träningskonfigurationen.
Distribuera den bästa modellen till en slutpunkt
När trimningsjobbet är klart har den bästa modellen valts ut och lagrats i Amazon S3. Vi kan nu distribuera den modellen genom att anropa distributionsmetoden för HyperparameterTuner
objekt och skickar de nödvändiga parametrarna, såsom antalet instanser som ska användas för den skapade slutpunkten, deras typ, bilden som ska distribueras och skriptet som ska köras:
tuner.deploy(
initial_instance_count=1,
instance_type=inference_instance_type,
entry_point="inference.py",
image_uri=deploy_image_uri,
source_dir=deploy_source_uri,
endpoint_name=endpoint_name,
enable_network_isolation=True
)
Vi kan nu testa den skapade slutpunkten genom att göra slutledningsbegäranden. Du kan följa resten av processen i den medföljande anteckningsbok.
Slutsats
Med automatisk modellinställning i SageMaker kan du hitta den bästa versionen av din modell genom att köra träningsjobb på den medföljande datamängden med en av de algoritmer som stöds. Med automatisk modellinställning kan du minska tiden för att ställa in en modell genom att automatiskt söka efter den bästa hyperparameterkonfigurationen inom de hyperparameterintervall som du anger.
I det här inlägget visade vi värdet av att köra automatisk modellinställning på en JumpStart förtränad modell med SageMaker API:er. Vi använde LightGBM-algoritmen och definierade maximalt 10 träningsjobb. Vi gav också länkar till exempel på bärbara datorer som visar upp ML-ramverken som stöder JumpStart-modelloptimering.
För mer information om hur man optimerar en JumpStart-modell med automatisk modellinställning, se vårt exempel anteckningsbok.
Om författaren
Doug Mbaya är en Senior Partner Solution arkitekt med fokus på data och analys. Doug arbetar nära med AWS-partner och hjälper dem att integrera data- och analyslösningar i molnet.
Kruthi Jayasimha Rao är en Partner Solutions Architect i Scale-PSA-teamet. Kruthi genomför tekniska valideringar för Partners så att de kan gå vidare i Partner Path.
Giannis Mitropoulos är en mjukvaruutvecklingsingenjör för SageMaker Automatisk modellinställning.
Dr Ashish Khetan är senior tillämpad forskare med Amazon SageMaker JumpStart och Amazon SageMaker inbyggda algoritmer och hjälper till att utveckla maskininlärningsalgoritmer. Han är en aktiv forskare inom maskininlärning och statistisk slutledning och har publicerat många artiklar i NeurIPS-, ICML-, ICLR-, JMLR- och ACL-konferenser.
- "
- 10
- 100
- 2020
- 2022
- Om oss
- tvärs
- aktiv
- Fördel
- algoritm
- algoritmer
- Alla
- amason
- analytics
- API: er
- Tillgångar
- Automat
- tillgänglighet
- AWS
- BÄST
- inbyggd
- företag
- Ring
- Välja
- valda
- klassificering
- cloud
- koda
- Gemensam
- konferenser
- konfiguration
- anser
- Konsol
- Behållare
- kontroll
- skapa
- skapas
- skapar
- Skapa
- För närvarande
- beställnings
- datum
- beslutade
- demonstrera
- distribuera
- utplacerade
- utplacering
- detaljer
- utveckla
- Utveckling
- olika
- Hamnarbetare
- lätt
- effektivt
- möjliggör
- Slutpunkt
- ingenjör
- Ingenjörer
- utvärdera
- allt
- exempel
- förväntat
- experimentera
- Exploit
- Funktioner
- fynd
- passa
- Fokus
- följer
- efter
- ytterligare
- Allmänt
- höjd
- hjälpa
- hjälper
- hög kvalitet
- Hur ser din drömresa ut
- How To
- HTTPS
- bild
- genomföra
- informationen
- integrera
- involverade
- IT
- Jobb
- Lediga jobb
- lansera
- inlärning
- lyft
- länkar
- läge
- Maskinen
- maskininlärning
- Framställning
- Mars
- ML
- modell
- modeller
- Övervaka
- mer
- mest
- multipel
- antal
- optimering
- Optimera
- optimera
- partnern
- partner
- Förbi
- plattform
- Populära
- Problem
- problem
- process
- ge
- ger
- fråga
- snabbt
- minska
- reducerande
- förfrågningar
- Obligatorisk
- Resurser
- REST
- Resultat
- Körning
- rinnande
- Forskare
- vetenskapsmän
- Sök
- vald
- in
- visa upp
- Enkelt
- So
- Mjukvara
- mjukvaruutveckling
- lösning
- Lösningar
- LÖSA
- Utrymme
- starta
- igång
- statistisk
- förvaring
- Strategi
- stödja
- Som stöds
- Stöder
- Målet
- uppgifter
- grupp
- Teknisk
- testa
- Genom
- tid
- tidskrävande
- Titel
- Utbildning
- rättegång
- användning
- värde
- mängd
- medan
- inom
- fungerar