Kör automatisk modellinställning med Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Kör automatisk modellinställning med Amazon SageMaker JumpStart

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.

uppgift Förutbildade modeller Stöder anpassad datauppsättning Ramar som stöds Exempel på anteckningsböcker
Bildklassificering ja ja PyTorch, TensorFlow Introduktion till JumpStart – Bildklassificering
Objektdetektion ja ja PyTorch, TensorFlow, MXNet Introduktion till JumpStart – Objektdetektion
Semantisk segmentering ja ja MX Net Introduktion till JumpStart – Semantisk segmentering
Textklassificering ja ja TensorFlow Introduktion till JumpStart – Textklassificering
Klassificering av meningspar ja ja TensorFlow, kramande ansikte Introduktion till JumpStart – Klassificering av meningspar
Frågeställning ja ja PyTorch Introduktion till JumpStart – Frågesvar
Tabellklassificering ja ja LightGBM, CatBoost, XGBoost, Linear Learner Introduktion till JumpStart – Tabellklassificering – LightGBM, CatBoost
Introduktion till JumpStart – Tabellklassificering – XGBoost, Linear Learner
Tabellregression ja ja LightGBM, CatBoost, XGBoost, Linear Learner Introduktion till JumpStart – Tabular Regression – LightGBM, CatBoost
Introduktion till JumpStart – tabellregression – XGBoost, linjär inlärare

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.

Kör automatisk modellinställning med Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

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å:

  1. Hämta JumpStart förutbildade modell och bildbehållare.
  2. Ställ in statiska hyperparametrar.
  3. Definiera de avstämbara hyperparameterområdena.
  4. Initiera den automatiska modellinställningen.
  5. Kör trimningsjobbet.
  6. 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

Kör automatisk modellinställning med Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.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.

Kör automatisk modellinställning med Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.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.

Kör automatisk modellinställning med Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Giannis Mitropoulos är en mjukvaruutvecklingsingenjör för SageMaker Automatisk modellinställning.

Kör automatisk modellinställning med Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.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.

Tidsstämpel:

Mer från AWS maskininlärning