Kør automatisk modeljustering med Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Kør automatisk modeljustering med Amazon SageMaker JumpStart

I december 2020, AWS annoncerede den generelle tilgængelighed af Amazon SageMaker JumpStart, en evne til Amazon SageMaker der hjælper dig hurtigt og nemt at komme i gang med maskinlæring (ML). I marts 2022 har vi også annoncerede understøttelsen af ​​API'er i JumpStart. JumpStart leverer finjustering og implementering med et enkelt klik af en lang række præ-trænede modeller på tværs af populære ML-opgaver, samt et udvalg af end-to-end-løsninger, der løser almindelige forretningsproblemer. Disse funktioner fjerner de tunge løft fra hvert trin i ML-processen, hvilket gør det nemmere at udvikle højkvalitetsmodeller og reducerer tiden til implementering.

I dette indlæg demonstrerer vi, hvordan man kører automatisk modeljustering med JumpStart.

SageMaker automatisk model tuning

Traditionelt implementerer ML-ingeniører en trial and error-metode til at finde det rigtige sæt hyperparametre. Trial and error involverer at køre flere job sekventielt eller parallelt, mens de nødvendige ressourcer leveres til at køre eksperimentet.

Med SageMaker automatisk model tuning, ML-ingeniører og dataforskere kan aflaste den tidskrævende opgave med at optimere deres model og lade SageMaker køre eksperimentet. SageMaker udnytter AWS-platformens elasticitet til effektivt og samtidigt at køre flere træningssimuleringer på et datasæt og finde de bedste hyperparametre til en model.

SageMaker automatisk modeljustering finder den bedste version af en model ved at køre mange træningsjob på dit datasæt ved hjælp af algoritmen og intervaller af hyperparametre, som du angiver. Den vælger derefter de hyperparameterværdier, der resulterer i en model, der yder bedst, målt med a metrisk som du vælger.

Automatisk modeltuning bruger enten en Bayesiansk (standard) eller en tilfældig søgestrategi for at finde de bedste værdier for hyperparametre. Bayesiansk søgning behandler tuning af hyperparameter som en regression problem. Når den skal vælge de bedste hyperparametre til det næste træningsjob, tager den hensyn til alt, hvad den ved om problemet indtil videre og tillader algoritmen at udnytte de bedst kendte resultater.

I dette indlæg bruger vi den Bayesianske standardsøgestrategi til at demonstrere de trin, der er involveret i at køre automatisk modeljustering med JumpStart ved hjælp af LightGBM model.

JumpStart understøtter i øjeblikket 10 eksempler på notebooks med automatisk modeljustering. Den understøtter også fire populære algoritmer til tabeldatamodellering. Opgaverne og links til deres eksempelnotesbøger er opsummeret i følgende tabel.

Opgaver Foruddannede modeller Understøtter brugerdefinerede datasæt Rammer understøttet Eksempel på notesbøger
Billedklassificering Ja Ja PyTorch, TensorFlow Introduktion til JumpStart – Billedklassificering
Objektdetektion Ja Ja PyTorch, TensorFlow, MXNet Introduktion til JumpStart – Objektdetektion
Semantisk segmentering Ja Ja MX Net Introduktion til JumpStart – Semantisk segmentering
Tekstklassificering Ja Ja TensorFlow Introduktion til JumpStart – Tekstklassificering
Sætningsparklassifikation Ja Ja TensorFlow, kramme ansigt Introduktion til JumpStart – Sætningsparklassifikation
Besvarelse af spørgsmål Ja Ja PyTorch Introduktion til JumpStart – Besvarelse af spørgsmål
Klassifikation i tabelform Ja Ja LightGBM, CatBoost, XGBoost, Linear Learner Introduktion til JumpStart – Tabelklassificering – LightGBM, CatBoost
Introduktion til JumpStart – Tabelklassificering – XGBoost, Linear Learner
Tabelregression Ja Ja LightGBM, CatBoost, XGBoost, Linear Learner Introduktion til JumpStart – Tabular Regression – LightGBM, CatBoost
Introduktion til JumpStart – Tabular Regression – XGBoost, Linear Learner

Løsningsoversigt

Denne tekniske arbejdsgang giver et overblik over de forskellige Amazon Sagemaker-funktioner og trin, der er nødvendige for automatisk at tune en JumpStart-model.

Kør automatisk modeljustering med Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

I de følgende afsnit giver vi en trin-for-trin gennemgang af, hvordan man kører automatisk modeljustering med JumpStart ved hjælp af LightGBM-algoritmen. Vi sørger for en ledsager notesbog til denne gennemgang.

Vi gennemgår følgende trin på højt niveau:

  1. Hent JumpStart fortrænede model og billedbeholder.
  2. Indstil statiske hyperparametre.
  3. Definer de indstillelige hyperparameterområder.
  4. Initialiser den automatiske modelindstilling.
  5. Kør tuning-jobbet.
  6. Implementer den bedste model til et slutpunkt.

Hent JumpStart fortrænede model og billedbeholder

I dette afsnit vælger vi LightGBM-klassifikationsmodellen til finjustering. Vi bruger den ml.m5.xlarge instanstype, som modellen køres på. Vi henter derefter trænings-Docker-containeren, træningsalgoritmekilden og den præ-trænede model. Se følgende kode:

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
)

Indstil statiske hyperparametre

Vi henter nu standardhyperparametrene for denne LightGBM-model, som forudkonfigureret af JumpStart. Vi tilsidesætter også num_boost_round hyperparameter med en brugerdefineret værdi.

# 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

Definer de indstillelige hyperparameterområder

Dernæst definerer vi hyperparameterintervallerne til at være optimeret ved automatisk modeljustering. Vi definerer hyperparameternavnet som forventet af modellen og derefter intervallerne af værdier, der skal prøves for denne hyperparameter. Automatisk modelindstilling trækker prøver (svarende til max_jobs parameter) fra rummet af hyperparametre ved hjælp af en teknik kaldet Bayesiansk søgning. For hver tegnet hyperparameterprøve opretter tuneren et træningsjob for at evaluere modellen med denne konfiguration. Se følgende kode:

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),
}

Initialiser den automatiske modelindstilling

Vi starter med at oprette en Estimator objekt med alle de nødvendige aktiver, der definerer træningsjobbet, såsom den forudtrænede model, træningsbilledet og træningsscriptet. Vi definerer derefter en HyperparameterTuner objekt til at interagere med SageMaker hyperparameter tuning API'er.

HyperparameterTuner accepterer som parametre Estimator-objektet, målmetrikken baseret på hvilken det bedste sæt hyperparametre bestemmes, det samlede antal træningsjob (max_jobs) for at starte for hyperparameterindstillingsjobbet og de maksimale parallelle træningsjob, der skal køres (max_parallel_jobs). Træningsjob køres med LightGBM-algoritmen og hyperparameterværdierne, der har det minimale mlogloss metrik er valgt. For mere information om konfiguration af automatisk modelindstilling, se Bedste praksis for justering af 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 foregående kode fortæller vi tuneren at køre højst 10 eksperimenter (max_jobs) og kun to samtidige eksperimenter ad gangen (max_parallel_jobs). Begge disse parametre holder dine omkostninger og træningstid under kontrol.

Kør tuning-jobbet

For at starte SageMaker tuning job kalder vi tilpasningsmetoden for hyperparameter tuner objektet og sender Amazon Simple Storage Service (Amazon S3) sti for træningsdataene:

tuner.fit({"training": training_dataset_s3_path}, logs=True)

Mens automatisk modeljustering søger efter de bedste hyperparametre, kan du overvåge deres fremskridt enten på SageMaker-konsollen eller på amazoncloudwatch. Når træningen er færdig, uploades den bedste models finjusterede artefakter til Amazon S3-outputstedet, der er angivet i træningskonfigurationen.

Implementer den bedste model til et slutpunkt

Når tuning-jobbet er færdigt, er den bedste model blevet valgt og gemt i Amazon S3. Vi kan nu implementere den model ved at kalde implementeringsmetoden for HyperparameterTuner objekt og sender de nødvendige parametre, såsom antallet af forekomster, der skal bruges til det oprettede slutpunkt, deres type, billedet, der skal implementeres, og scriptet, der skal køres:

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 teste det oprettede slutpunkt ved at lave slutningsanmodninger. Du kan følge resten af ​​processen i den medfølgende notesbog.

Konklusion

Med automatisk modeljustering i SageMaker kan du finde den bedste version af din model ved at køre træningsjob på det medfølgende datasæt med en af ​​de understøttede algoritmer. Automatisk modeljustering giver dig mulighed for at reducere tiden til at tune en model ved automatisk at søge efter den bedste hyperparameterkonfiguration inden for de hyperparameterområder, du angiver.

I dette indlæg viste vi værdien af ​​at køre automatisk modeljustering på en JumpStart-foruddannet model ved hjælp af SageMaker API'er. Vi brugte LightGBM-algoritmen og definerede maksimalt 10 træningsjob. Vi leverede også links til eksempler på notebooks, der viser ML-rammerne, der understøtter JumpStart-modeloptimering.

For flere detaljer om, hvordan man optimerer en JumpStart-model med automatisk modeljustering, henvises til vores eksempel notesbog.


Om forfatteren

Kør automatisk modeljustering med Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Doug Mbaya er en Senior Partner Solution arkitekt med fokus på data og analyse. Doug arbejder tæt sammen med AWS-partnere og hjælper dem med at integrere data- og analyseløsninger i skyen.

Kør automatisk modeljustering med Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Kruthi Jayasimha Rao er Partner Solutions Architect i Scale-PSA-teamet. Kruthi udfører tekniske valideringer for partnere, der gør det muligt for dem at komme videre i partnerstien.

Kør automatisk modeljustering med Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Giannis Mitropoulos er softwareudviklingsingeniør for SageMaker Automatisk modeltuning.

Kør automatisk modeljustering med Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Dr. Ashish Khetan er Senior Applied Scientist med Amazon SageMaker JumpStart , Amazon SageMaker indbyggede algoritmer og hjælper med at udvikle maskinlæringsalgoritmer. Han er en aktiv forsker i maskinlæring og statistisk inferens og har publiceret mange artikler i NeurIPS-, ICML-, ICLR-, JMLR- og ACL-konferencer.

Tidsstempel:

Mere fra AWS maskinindlæring