Suorita automaattinen mallin viritys Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence -sovelluksella. Pystysuuntainen haku. Ai.

Suorita automaattinen mallin viritys Amazon SageMaker JumpStartilla

Joulukuussa 2020 AWS ilmoitti - yleinen saatavuus Amazon SageMaker JumpStart, kyky Amazon Sage Maker jonka avulla pääset nopeasti ja helposti alkuun koneoppimisen (ML) kanssa. Maaliskuussa 2022 myös me ilmoitti tuki API:ille JumpStartissa. JumpStart tarjoaa yhdellä napsautuksella hienosäätöä ja laajan valikoiman valmiiksi koulutettuja malleja yleisiin ML-tehtäviin sekä valikoiman päästä päähän -ratkaisuja, jotka ratkaisevat yleisiä liiketoimintaongelmia. Nämä ominaisuudet poistavat raskasta nostoa ML-prosessin jokaisesta vaiheesta, mikä helpottaa korkealaatuisten mallien kehittämistä ja lyhentää käyttöönottoon kuluvaa aikaa.

Tässä viestissä näytämme, kuinka automaattinen mallin viritys suoritetaan JumpStartilla.

Automaattinen SageMaker-viritys

Perinteisesti ML-insinöörit ottavat käyttöön yrityksen ja erehdyksen -menetelmän oikean hyperparametrijoukon löytämiseksi. Kokeilu ja erehdys tarkoittaa useiden töiden suorittamista peräkkäin tai rinnakkain samalla kun hankitaan kokeilun suorittamiseen tarvittavat resurssit.

Kanssa Automaattinen SageMaker-viritysML-insinöörit ja datatieteilijät voivat vapauttaa aikaa vievän mallinsa optimointitehtävän ja antaa SageMakerin suorittaa kokeilun. SageMaker hyödyntää AWS-alustan joustavuutta suorittaakseen tehokkaasti ja samanaikaisesti useita koulutussimulaatioita tietojoukossa ja löytääkseen parhaat hyperparametrit mallille.

SageMaker automaattinen mallin viritys löytää mallin parhaan version suorittamalla monia koulutustöitä tietojoukossasi käyttämällä algoritmia ja vaihtelee määrittämäsi hyperparametrit. Sitten se valitsee hyperparametriarvot, jotka johtavat malliin, joka toimii parhaiten, mitattuna a:lla metrinen että valitset.

Automaattinen mallin viritys käyttää joko a Bayes (oletus) tai a satunnainen hakustrategia löytääksesi parhaat arvot hyperparametreille. Bayesilainen haku käsittelee hyperparametrien viritystä kuten a regressio ongelma. Valitessaan parhaita hyperparametreja seuraavaa harjoitustyötä varten se ottaa huomioon kaiken, mitä se tietää ongelmasta tähän mennessä ja sallii algoritmin hyödyntää tunnetuimpia tuloksia.

Tässä viestissä käytämme Bayesin oletushakustrategiaa näyttääksemme vaiheet, jotka liittyvät automaattiseen mallin viritykseen JumpStartilla käyttämällä LightGBM malli.

JumpStart tukee tällä hetkellä 10 esimerkkikannettavaa automaattisella mallivirityksellä. Se tukee myös neljää suosittua taulukkomuotoisen tietojen mallintamisalgoritmia. Tehtävät ja linkit heidän mallimuistikirjoihin on yhteenveto seuraavassa taulukossa.

Tehtävä Valmiiksi koulutetut mallit Tukee mukautettua tietojoukkoa Tuetut puitteet Esimerkkikannettavat
Kuvien luokittelu Joo Joo PyTorch, TensorFlow Johdatus JumpStartiin – kuvien luokittelu
Objektin tunnistus Joo Joo PyTorch, TensorFlow, MXNet Johdatus JumpStartiin – Objektin tunnistus
Semanttinen segmentointi Joo Joo MX Net Johdatus JumpStartiin – semanttinen segmentointi
Tekstiluokitus Joo Joo TensorFlow Johdatus JumpStartiin – Tekstin luokittelu
Lauseparien luokittelu Joo Joo TensorFlow, halaavat kasvot Johdatus JumpStartiin – lauseparien luokittelu
Kysymykseen vastaaminen Joo Joo PyTorch JumpStartin esittely – Kysymyksiin vastaaminen
Taulukkoluokitus Joo Joo LightGBM, CatBoost, XGBoost, lineaarinen oppija Johdatus JumpStartiin – Taulukkoluokitus – LightGBM, CatBoost
Johdatus JumpStartiin – Taulukkoluokitus – XGBoost, Lineaarinen oppija
Taulukkoregressio Joo Joo LightGBM, CatBoost, XGBoost, lineaarinen oppija Johdatus JumpStartiin – Taulukkoregressio – LightGBM, CatBoost
Johdatus JumpStartiin – Taulukkoregressio – XGBoost, Lineaarinen oppija

Ratkaisun yleiskatsaus

Tämä tekninen työnkulku antaa yleiskatsauksen Amazon Sagemakerin eri ominaisuuksista ja vaiheista, joita tarvitaan JumpStart-mallin automaattiseen viritykseen.

Suorita automaattinen mallin viritys Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence -sovelluksella. Pystysuuntainen haku. Ai.

Seuraavissa osioissa tarjoamme vaiheittaisen esittelyn automaattisen mallin virityksen suorittamisesta JumpStartilla LightGBM-algoritmin avulla. Tarjoamme mukana muistikirja tätä läpikäyntiä varten.

Käymme läpi seuraavat korkean tason vaiheet:

  1. Hae JumpStart-valmiiksi koulutettu malli- ja kuvasäiliö.
  2. Aseta staattiset hyperparametrit.
  3. Määritä viritettävät hyperparametrialueet.
  4. Alusta automaattinen mallin viritys.
  5. Suorita viritystyö.
  6. Ota paras malli käyttöön päätepisteessä.

Hae JumpStart-valmiiksi koulutettu malli- ja kuvasäiliö

Tässä osiossa valitsemme LightGBM-luokitusmallin hienosäätöä varten. Käytämme ilmentymätyyppiä ml.m5.xlarge, jolla mallia ajetaan. Haemme sitten koulutus Docker-säilön, koulutusalgoritmin lähteen ja esiopetetun mallin. Katso seuraava koodi:

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
)

Aseta staattiset hyperparametrit

Haemme nyt tämän LightGBM-mallin oletushyperparametrit JumpStartin esimäärittämällä. Ohitamme myös num_boost_round hyperparametri mukautetulla arvolla.

# 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

Määritä viritettävät hyperparametrialueet

Seuraavaksi määritetään hyperparametrien alueet optimoitu automaattisella mallivirityksellä. Määritämme hyperparametrin nimen mallin odotetulla tavalla ja sitten arvoalueet, joita kokeillaan tälle hyperparametrille. Automaattinen mallin viritys ottaa näytteitä (yhtä kuin max_jobs parametri) hyperparametrien avaruudesta käyttämällä Bayesin hakutekniikkaa. Kullekin piirretylle hyperparametrinäytteelle viritin luo harjoitustyön arvioidakseen mallin kyseisellä kokoonpanolla. Katso seuraava koodi:

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

Alusta automaattinen mallin viritys

Aloitamme luomalla arviointityökalu objektin kaikilla vaadituilla koulutustyön määrittävillä resursseilla, kuten esikoulutettu malli, koulutuskuva ja koulutusskripti. Sitten määrittelemme a Hyperparametri Viritin objekti vuorovaikutuksessa SageMakerin hyperparametrien virityssovellusliittymien kanssa.

- HyperparameterTuner hyväksyy parametreiksi Estimator-objektin, tavoitemittarin, jonka perusteella päätetään paras hyperparametrijoukko, koulutustöiden kokonaismäärän (max_jobs) aloittaaksesi hyperparametrien viritystyön ja suurimman rinnakkaisen harjoitustyön suorittamisen (max_parallel_jobs). Harjoitustyöt suoritetaan LightGBM-algoritmilla ja hyperparametriarvoilla, joilla on minimi mlogloss mittari on valittu. Lisätietoja automaattisen mallin virityksen määrittämisestä on kohdassa Hyperparametrien virityksen parhaat käytännöt.

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

Edellisessä koodissa kerromme virittimen suorittamaan enintään 10 koetta (max_jobs) ja vain kaksi samanaikaista koetta kerrallaan (max_parallel_jobs). Molemmat parametrit pitävät kustannukset ja harjoitusaikasi hallinnassa.

Suorita viritystyö

SageMaker-viritystyön käynnistämiseksi kutsumme hyperparametriviritinobjektin sovitusmenetelmää ja välitämme Amazonin yksinkertainen tallennuspalvelu (Amazon S3) harjoitustietojen polku:

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

Automaattinen mallin viritys etsii parhaita hyperparametreja, mutta voit seurata niiden edistymistä joko SageMaker-konsolissa tai amazonin pilvikello. Kun harjoitus on suoritettu, parhaan mallin hienosäädetyt esineet ladataan harjoituskokoonpanossa määritettyyn Amazon S3 -tulostuspaikkaan.

Ota paras malli käyttöön päätepisteessä

Kun viritystyö on valmis, paras malli on valittu ja tallennettu Amazon S3:een. Voimme nyt ottaa tämän mallin käyttöön kutsumalla sen käyttöönottomenetelmää HyperparameterTuner objekti ja välitetään tarvittavat parametrit, kuten luodulle päätepisteelle käytettävien esiintymien lukumäärä, niiden tyyppi, käyttöön otettava kuva ja suoritettava komentosarja:

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
)

Voimme nyt testata luotua päätepistettä tekemällä päättelypyyntöjä. Voit seurata prosessin loppua oheisesta muistikirja.

Yhteenveto

Automaattisen mallin virityksen avulla SageMakerissa voit löytää mallistasi parhaan version suorittamalla koulutustöitä toimitetussa tietojoukossa jollakin tuetuista algoritmeista. Automaattisen mallin virityksen avulla voit lyhentää mallin virittämiseen kuluvaa aikaa etsimällä automaattisesti parhaan hyperparametrikokoonpanon määrittämiltäsi hyperparametrialueilta.

Tässä viestissä näytimme automaattisen mallin virityksen arvon JumpStart-esikoulutetussa mallissa SageMaker-sovellusliittymiä käyttämällä. Käytimme LightGBM-algoritmia ja määritimme enintään 10 harjoitustyötä. Annoimme myös linkkejä esimerkkimuistikirjoihin, jotka esittelevät JumpStart-mallin optimointia tukevat ML-kehykset.

Katso esimerkistämme lisätietoja JumpStart-mallin optimoinnista automaattisen mallin virityksen avulla muistikirja.


kirjailijasta

Suorita automaattinen mallin viritys Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence -sovelluksella. Pystysuuntainen haku. Ai.Doug Mbaya on Senior Partner Solution -arkkitehti, joka keskittyy dataan ja analytiikkaan. Doug tekee tiivistä yhteistyötä AWS-kumppaneiden kanssa ja auttaa heitä integroimaan data- ja analytiikkaratkaisuja pilveen.

Suorita automaattinen mallin viritys Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence -sovelluksella. Pystysuuntainen haku. Ai.Kruthi Jayasimha Rao on Partner Solutions -arkkitehti Scale-PSA-tiimissä. Kruthi suorittaa kumppaneille teknisiä validointeja, joiden avulla he voivat edistyä kumppanipolulla.

Suorita automaattinen mallin viritys Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence -sovelluksella. Pystysuuntainen haku. Ai.Giannis Mitropoulos on SageMakerin ohjelmistokehitysinsinööri Automaattinen mallin viritys.

Suorita automaattinen mallin viritys Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence -sovelluksella. Pystysuuntainen haku. Ai.Tohtori Ashish Khetan on vanhempi soveltuva tutkija Amazon SageMaker JumpStart ja Amazon SageMakerin sisäänrakennetut algoritmit ja auttaa kehittämään koneoppimisalgoritmeja. Hän on aktiivinen koneoppimisen ja tilastollisen päättelyn tutkija ja on julkaissut monia artikkeleita NeurIPS-, ICML-, ICLR-, JMLR- ja ACL-konferensseissa.

Aikaleima:

Lisää aiheesta AWS-koneoppiminen