Kjør automatisk modellinnstilling med Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Kjør automatisk modellinnstilling med Amazon SageMaker JumpStart

I desember 2020, AWS annonsert den generelle tilgjengeligheten av Amazon SageMaker JumpStart, en evne til Amazon SageMaker som hjelper deg raskt og enkelt å komme i gang med maskinlæring (ML). I mars 2022 har vi også annonsert støtten for APIer i JumpStart. JumpStart gir ett-klikks finjustering og distribusjon av et bredt utvalg av forhåndstrente modeller på tvers av populære ML-oppgaver, samt et utvalg ende-til-ende-løsninger som løser vanlige forretningsproblemer. Disse funksjonene fjerner de tunge løftene fra hvert trinn i ML-prosessen, noe som gjør det enklere å utvikle høykvalitetsmodeller og reduserer tiden til utrulling.

I dette innlegget viser vi hvordan du kjører automatisk modellinnstilling med JumpStart.

SageMaker automatisk modellinnstilling

Tradisjonelt implementerer ML-ingeniører en prøve- og feilmetode for å finne det riktige settet med hyperparametre. Prøving og feiling innebærer å kjøre flere jobber sekvensielt eller parallelt mens du klargjør ressursene som trengs for å kjøre eksperimentet.

Med SageMaker automatisk modellinnstilling, ML-ingeniører og dataforskere kan avlaste den tidkrevende oppgaven med å optimalisere modellen deres og la SageMaker kjøre eksperimentet. SageMaker drar fordel av elastisiteten til AWS-plattformen for å effektivt og samtidig kjøre flere treningssimuleringer på et datasett og finne de beste hyperparametrene for en modell.

SageMaker automatisk modellinnstilling finner den beste versjonen av en modell ved å kjøre mange treningsjobber på datasettet ditt ved å bruke algoritmen og serier hyperparametere du angir. Den velger deretter hyperparameterverdiene som resulterer i en modell som yter best, målt med a metrisk som du velger.

Automatisk modellinnstilling bruker enten en Bayesiansk (standard) eller en tilfeldig søkestrategi for å finne de beste verdiene for hyperparametere. Bayesiansk søk ​​behandler hyperparameterinnstilling som en regresjon problem. Når den velger de beste hyperparametrene for neste treningsjobb, vurderer den alt den vet om problemet så langt og lar algoritmen utnytte de best kjente resultatene.

I dette innlegget bruker vi standard Bayesiansk søkestrategi for å demonstrere trinnene som er involvert i å kjøre automatisk modellinnstilling med JumpStart ved å bruke LightGBM modell.

JumpStart støtter for tiden 10 eksempel bærbare PC-er med automatisk modellinnstilling. Den støtter også fire populære algoritmer for tabelldatamodellering. Oppgavene og koblingene til eksempelnotatblokkene deres er oppsummert i tabellen nedenfor.

Oppgave Forhåndsutdannede modeller Støtter tilpasset datasett Støttede rammer Eksempel på bærbare datamaskiner
Bildeklassifisering ja ja PyTorch, TensorFlow Introduksjon til JumpStart – Bildeklassifisering
Objektdeteksjon ja ja PyTorch, TensorFlow, MXNet Introduksjon til JumpStart – Objektdeteksjon
Semantisk segmentering ja ja MX Nett Introduksjon til JumpStart – Semantisk segmentering
Tekstklassifisering ja ja tensorflow Introduksjon til JumpStart – Tekstklassifisering
Setningsparklassifisering ja ja TensorFlow, klemmer ansikt Introduksjon til JumpStart – setningsparklassifisering
Spørsmål svar ja ja PyTorch Introduksjon til JumpStart – Spørsmålssvar
Tabellklassifisering ja ja LightGBM, CatBoost, XGBoost, Linear Learner Introduksjon til JumpStart – Tabellklassifisering – LightGBM, CatBoost
Introduksjon til JumpStart – Tabellklassifisering – XGBoost, Linear Learner
Tabellregresjon ja ja LightGBM, CatBoost, XGBoost, Linear Learner Introduksjon til JumpStart – Tabellregresjon – LightGBM, CatBoost
Introduksjon til JumpStart – Tabellregresjon – XGBoost, Lineær Lærer

Løsningsoversikt

Denne tekniske arbeidsflyten gir en oversikt over de forskjellige Amazon Sagemaker-funksjonene og trinnene som trengs for å automatisk justere en JumpStart-modell.

Kjør automatisk modellinnstilling med Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

I de følgende delene gir vi en trinnvis gjennomgang av hvordan du kjører automatisk modellinnstilling med JumpStart ved å bruke LightGBM-algoritmen. Vi tilbyr en ledsager bærbare for denne gjennomgangen.

Vi går gjennom følgende trinn på høyt nivå:

  1. Hent den forhåndstrente JumpStart-modellen og bildebeholderen.
  2. Angi statiske hyperparametre.
  3. Definer de justerbare hyperparameterområdene.
  4. Initialiser den automatiske modellinnstillingen.
  5. Kjør innstillingsjobben.
  6. Distribuer den beste modellen til et endepunkt.

Hent den forhåndstrente JumpStart-modellen og bildebeholderen

I denne delen velger vi LightGBM-klassifiseringsmodellen for finjustering. Vi bruker instanstypen ml.m5.xlarge som modellen kjøres på. Vi henter deretter opplærings-Docker-beholderen, treningsalgoritmekilden og den forhåndstrente modellen. 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
)

Angi statiske hyperparametre

Vi henter nå standard hyperparametere for denne LightGBM-modellen, som forhåndskonfigurert av JumpStart. Vi overstyrer også num_boost_round hyperparameter med en egendefinert verdi.

# 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 justerbare hyperparameterområdene

Deretter definerer vi hyperparameterområdene til å være optimalisert ved automatisk modellinnstilling. Vi definerer hyperparameternavnet som forventet av modellen og deretter verdiområdene som skal prøves for denne hyperparameteren. Automatisk modellinnstilling trekker prøver (lik max_jobs parameter) fra rommet til hyperparametere, ved å bruke en teknikk kalt Bayesiansk søk. For hver tegnet hyperparameterprøve oppretter tuneren en treningsjobb for å evaluere modellen med den konfigurasjonen. 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 modellinnstillingen

Vi starter med å lage en Estimator objekt med alle nødvendige eiendeler som definerer treningsjobben, for eksempel den forhåndstrente modellen, treningsbildet og treningsskriptet. Vi definerer da a HyperparameterTuner objekt for å samhandle med SageMaker hyperparameter tuning APIer.

De HyperparameterTuner aksepterer som parametere Estimator-objektet, målberegningen basert på hvilken det beste settet med hyperparametre bestemmes, det totale antallet treningsjobber (max_jobs) for å starte for hyperparameterinnstillingsjobben, og de maksimale parallelle treningsjobbene som skal kjøres (max_parallel_jobs). Treningsjobber kjøres med LightGBM-algoritmen, og hyperparameterverdiene som har det minimale mlogloss metrikk er valgt. For mer informasjon om konfigurering av automatisk modellinnstilling, se Beste praksis for hyperparameterinnstilling.

# 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 koden ber vi tuneren om å kjøre maksimalt 10 eksperimenter (max_jobs) og bare to samtidige eksperimenter om gangen (max_parallel_jobs). Begge disse parameterne holder kostnadene og treningstiden under kontroll.

Kjør innstillingsjobben

For å starte SageMaker-innstillingsjobben kaller vi tilpasningsmetoden til hyperparametertunerobjektet og sender Amazon enkel lagringstjeneste (Amazon S3) banen til treningsdataene:

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

Mens automatisk modellinnstilling søker etter de beste hyperparametrene, kan du overvåke fremdriften deres enten på SageMaker-konsollen eller på Amazon CloudWatch. Når opplæringen er fullført, lastes den beste modellens finjusterte artefakter opp til Amazon S3-utgangsstedet spesifisert i treningskonfigurasjonen.

Distribuer den beste modellen til et endepunkt

Når tuning-jobben er fullført, er den beste modellen valgt og lagret i Amazon S3. Vi kan nå distribuere den modellen ved å kalle distribusjonsmetoden til HyperparameterTuner objekt og sende de nødvendige parameterne, for eksempel antall forekomster som skal brukes for det opprettede endepunktet, deres type, bildet som skal distribueres, og skriptet som skal kjø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 nå teste det opprettede endepunktet ved å gjøre slutningsforespørsler. Du kan følge resten av prosessen i den medfølgende bærbare.

konklusjonen

Med automatisk modellinnstilling i SageMaker kan du finne den beste versjonen av modellen din ved å kjøre treningsjobber på det medfølgende datasettet med en av de støttede algoritmene. Automatisk modellinnstilling lar deg redusere tiden for å stille inn en modell ved automatisk å søke etter den beste hyperparameterkonfigurasjonen innenfor hyperparameterområdene du angir.

I dette innlegget viste vi verdien av å kjøre automatisk modellinnstilling på en JumpStart forhåndstrent modell ved hjelp av SageMaker APIer. Vi brukte LightGBM-algoritmen og definerte maksimalt 10 treningsjobber. Vi ga også lenker til eksempler på bærbare datamaskiner som viser ML-rammeverket som støtter JumpStart-modelloptimalisering.

For mer informasjon om hvordan du optimaliserer en JumpStart-modell med automatisk modellinnstilling, se vårt eksempel bærbare.


om forfatteren

Kjør automatisk modellinnstilling med Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Doug Mbaya er en Senior Partner Solution arkitekt med fokus på data og analyse. Doug jobber tett med AWS-partnere, og hjelper dem med å integrere data- og analyseløsninger i skyen.

Kjør automatisk modellinnstilling med Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Kruthi Jayasimha Rao er en Partner Solutions Architect i Scale-PSA-teamet. Kruthi utfører tekniske valideringer for partnere, slik at de kan komme videre i partnerbanen.

Kjør automatisk modellinnstilling med Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Giannis Mitropoulos er programvareutviklingsingeniør for SageMaker Automatisk modellinnstilling.

Kjør automatisk modellinnstilling med Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Dr. Ashish Khetan er Senior Applied Scientist med Amazon SageMaker JumpStart og Amazon SageMaker innebygde algoritmer og hjelper til med å utvikle maskinlæringsalgoritmer. Han er en aktiv forsker innen maskinlæring og statistisk inferens og har publisert mange artikler i NeurIPS, ICML, ICLR, JMLR og ACL-konferanser.

Tidstempel:

Mer fra AWS maskinlæring