Optimoi hyperparametrit Amazon SageMaker Automatic Model Tuning PlatoBlockchain Data Intelligence -toiminnolla. Pystysuuntainen haku. Ai.

Optimoi hyperparametrit Amazon SageMakerin automaattisen mallin virityksen avulla

Koneoppimismallit (ML) valtaavat maailmaa myrskyllä. Niiden suorituskyky perustuu oikeiden harjoitustietojen käyttöön ja oikean mallin ja algoritmin valitsemiseen. Mutta se ei lopu tähän. Tyypillisesti algoritmit lykkäävät jotkin suunnittelupäätökset ML-ammattilaisen tehtäväksi heidän erityistietojensa ja tehtävänsä mukaisesti. Nämä lykätyt suunnittelupäätökset ilmenevät mm hyperparametrien.

Mitä tuo nimi tarkoittaa? ML-koulutuksen tulos, malli, voidaan suurelta osin nähdä kokoelmana harjoittelun aikana opittuja parametreja. Siksi parametreja, joita käytetään ML-opetusprosessin määrittämiseen, kutsutaan hyperparametreiksi – parametreiksi, jotka kuvaavat parametrien luomista. Joka tapauksessa niistä on erittäin käytännöllistä hyötyä, kuten harjoitettavien aikakausien lukumäärä, oppimisnopeus, päätöspuun enimmäissyvyys ja niin edelleen. Ja kiinnitämme niihin paljon huomiota, koska niillä on suuri vaikutus mallisi lopulliseen suorituskykyyn.

Aivan kuten radiovastaanottimen nupin kääntäminen oikean taajuuden löytämiseksi, jokainen hyperparametri on viritettävä huolellisesti suorituskyvyn optimoimiseksi. Hyperparametriavaruudesta optimaalisten arvojen etsimistä kutsutaan nimellä hyperparametrien viritys or hyperparametrien optimointi (HPO), ja sen pitäisi johtaa malliin, joka antaa tarkat ennusteet.

Tässä viestissä määritämme ja suoritamme ensimmäisen HPO-työmme käyttämällä Amazon SageMaker automaattinen mallin viritys (AMT). Tutustumme tulosten tutkimiseen käytettävissä oleviin menetelmiin ja luomme oivaltavia visualisointeja HPO-kokeistamme ja hyperparametritilan tutkimisesta!

Amazon SageMaker automaattinen mallin viritys

ML-harjoittajana käyttäen SageMaker AMT, voit keskittyä seuraaviin:

  • Koulutustyön tarjoaminen
  • Tehtävääsi vastaavan oikean tavoitemittarin määrittäminen
  • Hyperparametrihakuavaruuden laajuus

SageMaker AMT hoitaa loput, eikä sinun tarvitse miettiä infrastruktuuria, koulutustöiden organisointia ja hyperparametrien valinnan parantamista.

Aloitetaan käyttämällä SageMaker AMT:tä ensimmäisessä yksinkertaisessa HPO-työssämme XGBoost-algoritmin kouluttamiseen ja virittämiseen. Haluamme, että AMT-matkasi on käytännönläheinen ja käytännöllinen, joten olemme jakaneet esimerkin seuraavassa GitHub-arkisto. Tämä viesti kattaa 1_tuning_of_builtin_xgboost.ipynb muistikirja.

Tulevassa postauksessa laajennamme käsitystä vain parhaiden hyperparametrien löytämisestä ja opimme hakuavaruudesta ja siitä, mihin hyperparametrialueisiin malli on herkkä. Näytämme myös, kuinka voit muuttaa kertaluonteisen viritystehtävän monivaiheiseksi keskusteluksi ML-harjoittajan kanssa, jotta voimme oppia yhdessä. Pysy kuulolla (sanatehtävä)!

Edellytykset

Tämä postaus on tarkoitettu kaikille HPO:sta kiinnostuneille, eikä se vaadi aiempaa tietoa aiheesta. Perustuntemus ML-konsepteihin ja Python-ohjelmointiin on kuitenkin hyödyllistä. Parhaan oppimiskokemuksen saavuttamiseksi suosittelemme seuraamista suorittaa jokaisen vaiheen muistikirjassa rinnakkain tämän postauksen lukemisen kanssa. Muistikirjan lopussa pääset myös kokeilemaan interaktiivista visualisointia, joka herättää viritystulokset eloon.

Ratkaisun yleiskatsaus

Aiomme rakentaa päästä päähän -asennuksen suorittaaksemme ensimmäisen HPO-työmme SageMaker AMT:n avulla. Kun viritystyömme on valmis, tarkastelemme joitain käytettävissä olevia menetelmiä tulosten tutkimiseksi, molempien kautta AWS-hallintakonsoli ja ohjelmallisesti AWS SDK:iden ja API:iden kautta.

Ensin tutustumme ympäristöön ja SageMaker Trainingiin suorittamalla itsenäistä koulutustyötä ilman viritystä. Käytämme XGBoost-algoritmia, joka on yksi monista a Sisäänrakennettu SageMaker-algoritmi (Ei vaadi koulutusohjelmaa!).

Näemme kuinka SageMaker Training toimii seuraavilla tavoilla:

  • Käynnistää ja pysäyttää esiintymän
  • Tarjoaa tarvittavan säiliön
  • Kopioi koulutus- ja validointitiedot ilmentymään
  • Suorittaa koulutuksen
  • Kerää mittareita ja lokeja
  • Kerää ja varastoi koulutetun mallin

Sitten siirrymme AMT:hen ja teemme HPO-työtä:

  • Perustamme ja käynnistämme viritystyömme AMT:n kanssa
  • Sukellaan käytettävissä oleviin menetelmiin yksityiskohtaisten suoritusmittareiden ja metatietojen poimimiseksi jokaisesta koulutustyöstä, mikä antaa meille mahdollisuuden oppia lisää optimaalisista arvoista hyperparametriavaruudessamme.
  • Näytämme sinulle, kuinka voit tarkastella kokeiden tuloksia
  • Tarjoamme sinulle työkaluja tietojen visualisointiin kaavioissa, jotka paljastavat arvokkaita näkemyksiä hyperparametriavaruudestamme

Kouluta SageMakerin sisäänrakennettu XGBoost-algoritmi

Kaikki alkaa mallin kouluttamisesta. Samalla saamme käsityksen SageMaker Trainingin toiminnasta.

Haluamme hyödyntää SageMakerin tarjoamaa nopeutta ja helppokäyttöisyyttä sisäänrakennetut algoritmit. Tarvitsemme vain muutaman vaiheen koulutuksen aloittamiseksi:

  1. Valmistele ja lataa tiedot – Lataamme ja valmistelemme tietojoukkomme syötteeksi XGBoostille ja lataamme sen meille Amazonin yksinkertainen tallennuspalvelu (Amazon S3)-kauha.
  2. Valitse sisäänrakennetun algoritmimme kuvan URI – SageMaker hakee tämän URI:n avulla harjoitussäiliömme, joka tässä tapauksessa sisältää käyttövalmiin XGBoost-harjoitusskriptin. Useita algoritmiversioita tuetaan.
  3. Määritä hyperparametrit – SageMaker tarjoaa käyttöliittymän, jolla voit määrittää hyperparametrien sisäänrakennetulle algoritmillemme. Nämä ovat samat hyperparametrit kuin avoimen lähdekoodin versiossa.
  4. Rakenna estimaattori – Määrittelemme koulutusparametrit, kuten ilmentymän tyypin ja esiintymien lukumäärän.
  5. Kutsu fit()-funktiota – Aloitamme valmennustyömme.

Seuraava kaavio näyttää, kuinka nämä vaiheet toimivat yhdessä.

Anna tiedot

ML-koulutuksen suorittamiseksi meidän on toimitettava tiedot. Tarjoamme koulutus- ja validointitietomme SageMakerille Amazon S3:n kautta.

Esimerkissämme käytämme yksinkertaisuuden vuoksi SageMaker-oletussäilöä tietojen tallentamiseen. Mutta voit mukauttaa seuraavia arvoja mieltymystesi mukaan:

sm_sess = sagemaker.session.Session([..])

BUCKET = sm_sess.default_bucket()
PREFIX = 'amt-visualize-demo'
output_path = f's3://{BUCKET}/{PREFIX}/output'

Muistikirjassa käytämme julkista tietojoukkoa ja tallennamme tiedot paikallisesti data hakemistosta. Lataamme sitten koulutus- ja validointitietomme Amazon S3:een. Myöhemmin määritämme myös osoittimia näihin paikkoihin välittääksemme ne SageMaker Trainingille.

# acquire and prepare the data (not shown here)
# store the data locally
[..]
train_data.to_csv('data/train.csv', index=False, header=False)
valid_data.to_csv('data/valid.csv', index=False, header=False)
[..]
# upload the local files to S3
boto_sess.resource('s3').Bucket(BUCKET).Object(os.path.join(PREFIX, 'data/train/train.csv')).upload_file('data/train.csv')
boto_sess.resource('s3').Bucket(BUCKET).Object(os.path.join(PREFIX, 'data/valid/valid.csv')).upload_file('data/valid.csv')

Tässä viestissä keskitymme HPO:n esittelyyn. Esimerkkinä käytämme tiettyä tietojoukkoa ja tehtävää, jotta voimme saada objektiivisten mittareiden mittauksia, joita käytämme sitten hyperparametrien valinnan optimointiin. Koko postauksen kannalta tiedoilla tai tehtävällä ei kuitenkaan ole merkitystä. Esittelemme sinulle täydellisen kuvan kertomalla lyhyesti, mitä teemme: koulutamme XGBoost-mallin, jonka pitäisi luokitella käsin kirjoitetut numerot
Käsinkirjoitettujen numeroiden tietojoukon optinen tunnistus [1] Scikit-learnin kautta. XGBoost on erinomainen algoritmi strukturoidulle tiedolle, ja sitä voidaan soveltaa jopa numerotietoaineistoon. Arvot ovat 8×8 kuvia, kuten seuraavassa esimerkissä a
0 a
5 ja
4.

Optimoi hyperparametrit Amazon SageMaker Automatic Model Tuning PlatoBlockchain Data Intelligence -toiminnolla. Pystysuuntainen haku. Ai.

Valitse XGBoost-kuvan URI

Kun olemme valinneet sisäänrakennetun algoritmimme (XGBoost), meidän on noudettava kuvan URI ja välitettävä se SageMakerille, jotta se ladataan koulutusesiintymäämme. Tätä vaihetta varten tarkastelemme saatavilla olevat versiot. Tässä olemme päättäneet käyttää versiota 1.5.1, joka tarjoaa uusimman version algoritmista. Tehtävästä riippuen ML-ammattilaiset voivat kirjoittaa oman harjoitusskriptin, joka sisältää esimerkiksi tiedon valmisteluvaiheita. Mutta tämä ei ole välttämätöntä meidän tapauksessamme.

Jos haluat kirjoittaa oman harjoituskäsikirjoituksesi, pysy kuulolla, olemme mukana seuraavassa postauksessamme! Näytämme sinulle, kuinka voit suorittaa SageMaker Training -töitä omilla mukautetuilla koulutusskripteilläsi.

Toistaiseksi tarvitsemme oikean kuvan URI:n määrittämällä algoritmin, AWS-alueen ja versionumeron:

xgboost_container = sagemaker.image_uris.retrieve('xgboost', region, '1.5-1')

Se siitä. Nyt meillä on viittaus XGBoost-algoritmiin.

Määritä hyperparametrit

Nyt määrittelemme hyperparametrimme. Nämä arvot määrittävät mallimme koulutuksen ja vaikuttavat lopulta siihen, kuinka malli toimii suhteessa mitattavaan objektiiviseen mittariin, kuten meidän tapauksessamme tarkkuuteen. Huomaa, että mikään seuraavassa koodilohkossa ei liity SageMakeriin. Käytämme itse asiassa avoimen lähdekoodin versio XGBoost, jonka juuri tarjoaa ja joka on optimoitu SageMakerille.

Vaikka jokainen näistä hyperparametreistä on konfiguroitavissa ja säädettävissä, tavoitemittari multi:softmax määräytyy tietojoukomme ja ratkaisemamme ongelman tyypin mukaan. Meidän tapauksessamme numerot-tietojoukko sisältää useita tunnisteita (käsin kirjoitetun numeron havainto voi olla 0 or 1,2,3,4,5,6,7,8,9), mikä tarkoittaa, että kyseessä on moniluokkainen luokitusongelma.

hyperparameters = {
    'num_class': 10,
    'max_depth': 5,
    'eta':0.2,
    'alpha': 0.2,
    'objective':'multi:softmax',
    'eval_metric':'accuracy',
    'num_round':200,
    'early_stopping_rounds': 5
}

Lisätietoja muista hyperparametreistä on kohdassa XGBoost-hyperparametrit.

Rakenna estimaattori

Konfiguroimme koulutuksen estimaattoriobjektille, joka on korkean tason käyttöliittymä SageMaker Trainingille.

Seuraavaksi määritämme opetettavien ilmentymien määrän, ilmentymän tyypin (CPU-pohjainen tai GPU-pohjainen) ja liitetyn tallennustilan koon:

estimator = sagemaker.estimator.Estimator(
    image_uri=xgboost_container, 
    hyperparameters=hyperparameters,
    role=role,
    instance_count=1, 
    instance_type='ml.m5.large', 
    volume_size=5, # 5 GB 
    output_path=output_path
)

Meillä on nyt infrastruktuurikokoonpano, jota tarvitsemme aloittaaksemme. SageMaker Training hoitaa loput.

Kutsu fit()-funktiota

Muistatko aiemmin Amazon S3:een lataamamme tiedot? Luomme nyt viittauksia siihen:

s3_input_train = TrainingInput(s3_data=f's3://{BUCKET}/{PREFIX}/data/train', content_type='csv')
s3_input_valid = TrainingInput(s3_data=f's3://{BUCKET}/{PREFIX}/data/valid', content_type='csv')

Kutsu fit() käynnistää koulutuksemme. Välitämme viittaukset juuri luomiimme harjoitustietoihin osoittaaksemme SageMaker Trainingin koulutus- ja validointitietoihimme:

estimator.fit({'train': s3_input_train, 'validation': s3_input_valid})

Huomaa, että voidaksemme suorittaa HPO:n myöhemmin, meidän ei itse asiassa tarvitse soittaa fit() tässä. Tarvitsemme vain estimaattoriobjektin myöhemmin HPO:ta varten, ja voimme vain siirtyä luomaan HPO-työmme. Mutta koska haluamme oppia SageMaker Trainingista ja nähdä, kuinka suorittaa yksittäinen koulutustyö, kutsumme sitä tänne ja tarkistamme tuotoksen.

Harjoittelun alkamisen jälkeen alamme nähdä tulosteen solujen alla, kuten seuraavassa kuvakaappauksessa näkyy. Lähtö on saatavilla amazonin pilvikello sekä tässä muistikirjassa.

Musta teksti on itse SageMakerin lokitulostus, joka näyttää harjoitusorganisaatioon liittyvät vaiheet, kuten ilmentymän käynnistäminen ja harjoituskuvan lataaminen. Sininen teksti tulostetaan suoraan itse koulutusesiintymästä. Voimme tarkkailla harjoitustietojen lataus- ja jäsennysprosessia ja nähdä visuaalisesti harjoituksen edistymisen ja tavoitemittarin parannuksen suoraan ilmentymässä käynnissä olevasta harjoitusskriptistä.

Tulostus fit()-funktiosta Jupyter Notebookissa

Huomaa myös, että tulostustyön lopussa näytetään harjoituksen kesto sekunteina ja laskutettavat sekuntit.

Lopuksi näemme, että SageMaker lataa harjoitusmallimme estimaattoriobjektissa määritettyyn S3-lähtöpolkuun. Malli on valmis käytettäväksi päätelmiä varten.

Tulevassa postauksessa luomme oman koulutussäiliömme ja määritämme harjoitusmittarimme. Näet kuinka SageMaker on agnostikko sen suhteen, minkä säiliön annat sen koulutukseen. Tämä on erittäin kätevää, kun haluat päästä nopeasti alkuun sisäänrakennetun algoritmin avulla, mutta päätät myöhemmin antaa oman mukautetun harjoitusohjelman!

Tarkista nykyiset ja aiemmat koulutustyöt

Toistaiseksi olemme työskennelleet muistikirjastamme koodillamme ja lähettäneet koulutustöitä SageMakerille. Vaihdetaan näkökulmia ja jätetään muistikirja hetkeksi katsomaan, miltä tämä näyttää SageMaker-konsolissa.

Konsolinäkymä SageMaker Training -tehtävistä

SageMaker pitää historiallista kirjaa suorittamistaan ​​koulutustöistä, niiden kokoonpanoista, kuten hyperparametreistä, algoritmeista, tietojen syötöstä, laskutettavasta ajasta ja tuloksista. Edellisen kuvakaappauksen luettelossa näet viimeisimmät koulutustyöt suodatettuna XGBoostille. Korostettu koulutustyö on juuri muistikirjassa kouluttamamme työ, jonka tulosten näit aiemmin. Sukellaan tähän yksilölliseen koulutustyöhön saadaksesi lisätietoja.

Seuraava kuvakaappaus näyttää koulutustyömme konsolinäkymän.

Konsolinäkymä yhdestä SageMaker Training -työstä

Voimme tarkistaa solun ulostulona saamamme tiedot fit() toiminto yksittäisessä harjoitustyössä SageMaker-konsolissa sekä estimaattorissamme määrittämiemme parametrien ja metatietojen kanssa.

Muista aiemmin näkemämme koulutusesiintymän lokitulostus. Pääsemme myös koulutustyömme lokeihin täältä, selaamalla kohtaan monitori osio ja valitseminen Näytä lokit.

Valvontavälilehden konsolinäkymä koulutustyössä

Tämä näyttää meille esiintymälokit CloudWatchin sisällä.

Konsolinäkymä koulutusesiintymien lokeista CloudWatchissa

Muista myös hyperparametrit, jotka määritimme muistikirjaamme koulutustyötä varten. Näemme heidät täällä myös koulutustyön samassa käyttöliittymässä.

Konsolinäkymä SageMaker Training -työn hyperparametreistä

Itse asiassa aiemmin määrittämämme tiedot ja metatiedot koulutustyöllemme ja estimaattorillemme löytyvät tältä SageMaker-konsolin sivulta. Meillä on hyödyllinen tietue koulutuksessa käytetyistä asetuksista, kuten käytetystä koulutussäiliöstä sekä koulutus- ja validointitietojoukkojen sijainnista.

Saatat kysyä tässä vaiheessa, miksi tämä on juuri olennaista hyperparametrien optimoinnin kannalta? Se johtuu siitä, että voit etsiä, tarkastaa ja sukeltaa syvemmälle niihin HPO-kokeisiin, joista olemme kiinnostuneita. Ehkä ne, joilla on parhaat tulokset, tai ne, jotka osoittavat mielenkiintoista käyttäytymistä. Jätämme sinulle sen, mitä määrittelet "mielenkiintoiseksi". Se antaa meille yhteisen käyttöliittymän koulutustöiden tarkastamiseen, ja voit käyttää sitä SageMaker Searchin kanssa.

Vaikka SageMaker AMT organisoi HPO-työt, HPO-kokeet käynnistetään kaikki yksittäisinä SageMaker Training -tehtävinä ja niitä voidaan käyttää sellaisenaan.

Harjoittelun mukana, lähdetään virittämään!

Harjoittele ja viritä SageMakerin sisäänrakennettu XGBoost-algoritmi

XGBoost-mallimme virittämiseksi aiomme käyttää uudelleen olemassa olevia hyperparametrejämme ja määrittää arvoalueet, joita haluamme tutkia niille. Ajattele tätä tutkimuksen rajojen laajentamisena hyperparametrihakuavaruudessamme. Viritystyömme ottaa näytteitä hakutilasta ja suorittaa koulutustöitä uusille arvoyhdistelmille. Seuraava koodi näyttää kuinka määrittää hyperparametrialueet, joista SageMaker AMT:n tulee ottaa näyte:

from sagemaker.tuner import IntegerParameter, ContinuousParameter, HyperparameterTuner

hpt_ranges = {
    'alpha': ContinuousParameter(0.01, .5),
    'eta': ContinuousParameter(0.1, .5),
    'min_child_weight': ContinuousParameter(0., 2.),
    'max_depth': IntegerParameter(1, 10)
}

Yksittäisen hyperparametrin alueet määritetään niiden tyypin mukaan, esim ContinuousParameter. Lisätietoja ja vinkkejä näiden parametrialueiden valitsemisesta on kohdassa Viritä XGBoost-malli.

Emme ole vielä suorittaneet kokeita, joten emme tiedä hyperparametriemme hyvien arvojen alueita. Siksi aloitamme valistuneella arvauksella käyttämällä algoritmejamme koskevia tietoja ja dokumentaatiotamme sisäänrakennettujen algoritmien hyperparametreista. Tämä määrittää aloituspisteen hakutilan määrittämiselle.

Sitten suoritamme viritystyön näytteenoton määritetyillä alueilla olevista hyperparametreistä. Tämän seurauksena voimme nähdä, mitkä hyperparametrialueet tuottavat hyviä tuloksia. Tämän tiedon avulla voimme tarkentaa hakuavaruuden rajoja kaventämällä tai laajentamalla käytettävää hyperparametrialuetta. Seuraavassa ja viimeisessä osiossa, jossa tutkimme ja visualisoimme tuloksia, osoitamme, kuinka voit oppia kokeista.

Seuraavassa postauksessamme jatkamme matkaamme ja sukeltamme syvemmälle. Lisäksi opimme, että on olemassa useita strategioita, joiden avulla voimme tutkia hakuavaruuttamme. Suoritamme seuraavat HPO-työt löytääksemme vielä tehokkaampia arvoja hyperparametreillemme samalla kun vertaamme näitä eri strategioita. Katsomme myös, kuinka aloitamme lämpimästi SageMaker AMT:n kanssa, jotta voimme hyödyntää aiemmin tutkituista hakualueista saatua tietoa tutkiessamme alkuperäisten rajojen yli.

Tässä viestissä keskitymme analysoimaan ja visualisoimaan yksittäisen HPO-työn tuloksia Bayesin hakustrategian avulla, joka on todennäköisesti hyvä lähtökohta.

Jos seuraat linkitettyä muistikirjaa, huomaa, että välitämme saman estimaattorin, jota käytimme yksittäisessä, sisäänrakennetussa XGBoost-harjoitustyössämme. Tämä estimaattoriobjekti toimii mallina AMT:n luomille uusille koulutustöille. AMT muuttaa sitten hyperparametreja määrittämiemme alueiden sisällä.

Määrittämällä, että haluamme maksimoida tavoitemittarimme, validation:accuracy, käskemme SageMaker AMT:tä etsimään näitä mittareita harjoitusilmentymien lokeista ja valitsemaan hyperparametriarvot, joiden se uskoo maksimoivan vahvistustietojen tarkkuuden. Valitsimme sopivan objektiivinen mittari XGBoostille dokumentaatiostamme.

Lisäksi voimme hyödyntää rinnakkaisuutta max_parallel_jobs. Tämä voi olla tehokas työkalu erityisesti strategioissa, joiden kokeet valitaan itsenäisesti ottamatta huomioon (oppimatta) aikaisempien kokeiden tuloksia. Tutkimme näitä muita strategioita ja parametreja tarkemmin seuraavassa viestissämme. Tässä viestissä käytämme Bayesian, joka on erinomainen oletusstrategia.

Me myös määrittelemme max_jobs määrittääksesi kuinka monta koetta suoritetaan yhteensä. Voit vapaasti poiketa esimerkistämme ja säästää rahaa käyttämällä pienempää numeroa.

n_jobs = 50
n_parallel_jobs = 3

tuner_parameters = {
    'estimator': estimator, # The same estimator object we defined above
    'base_tuning_job_name': 'bayesian',
    'objective_metric_name': 'validation:accuracy',
    'objective_type': 'Maximize',
    'hyperparameter_ranges': hpt_ranges,
    'strategy': 'Bayesian',
    'max_jobs': n_jobs,
    'max_parallel_jobs': n_parallel_jobs
}

Soitamme vielä kerran fit(), samalla tavalla kuin silloin, kun aloitimme yhden koulutustyön aiemmin postauksessa. Mutta tällä kertaa viritinobjektissa, ei estimaattoriobjektissa. Tämä käynnistää viritystyön, ja AMT puolestaan ​​aloittaa koulutustyöt.

tuner = HyperparameterTuner(**tuner_parameters)
tuner.fit({'train': s3_input_train, 'validation': s3_input_valid}, wait=False)
tuner_name = tuner.describe()['HyperParameterTuningJobName']
print(f'tuning job submitted: {tuner_name}.')

Seuraava kaavio laajentaa aiempaa arkkitehtuuriamme sisällyttämällä HPO:n SageMaker AMT:hen.

Yleiskatsaus SageMaker-koulutuksesta ja hyperparametrien optimoinnista SageMaker AMT:n avulla

Näemme, että HPO-työmme on lähetetty. Riippuen kokeiden lukumäärästä, määrittelee n_jobs ja rinnakkaisuuden taso, tämä voi kestää jonkin aikaa. Esimerkissämme voi kestää jopa 30 minuuttia 50 kokeeseen, joiden rinnakkaisaste on vain 3.

tuning job submitted: bayesian-221102-2053.

Kun tämä viritystyö on valmis, tutkitaan SageMaker-konsolissa saatavilla olevia tietoja.

Tutki AMT-töitä konsolissa

Etsitään viritystyömme SageMaker-konsolissa valitsemalla koulutus navigointiruudussa ja sitten Hyperparametrien viritystyöt. Tämä antaa meille luettelon AMT-töistämme, kuten seuraavassa kuvakaappauksessa näkyy. Täältä löydämme omamme bayesian-221102-2053 viritystyö ja huomaa, että se on nyt valmis.

Hyperparametrin viritystyösivun konsolinäkymä. Kuvassa on viritystöiden luettelonäkymä, joka sisältää 1 viritysmerkinnämme

Katsotaanpa tarkemmin tämän HPO:n työn tuloksia.

Olemme tutkineet tulosten poimimista ohjelmallisesti muistikirja. Ensin kautta SageMaker Python SDK, joka on korkeamman tason avoimen lähdekoodin Python-kirjasto, joka tarjoaa erillisen API:n SageMakerille. Sitten läpi Boto3, joka tarjoaa meille alemman tason API:t SageMakeriin ja muihin AWS-palveluihin.

Käyttämällä SageMaker Python SDK:ta voimme saada HPO-työmme tulokset:

sagemaker.HyperparameterTuningJobAnalytics(tuner_name).dataframe()[:10]

Tämä antoi meille mahdollisuuden analysoida jokaisen kokeemme tuloksia Pandas DataFrame -kehyksessä, kuten seuraavassa kuvakaappauksessa näkyy.

Pandas-taulukko Jupyter-muistikirjassa, joka näyttää tulokset ja metatiedot HPO-työssämme suoritetuista poluista

Vaihdetaan nyt perspektiiviä uudelleen ja katsotaan, miltä tulokset näyttävät SageMaker-konsolissa. Sitten katsomme mukautettuja visualisointejamme.

Samalla sivulla valitsemalla meidän bayesian-221102-2053 viritystyö tarjoaa meille luettelon kokeista, jotka suoritettiin viritystyössämme. Jokainen HPO-kokeilu tässä on SageMaker-koulutustyö. Muista, kun koulutimme yksittäistä XGBoost-malliamme ja tutkimme koulutustyötä SageMaker-konsolissa. Voimme tehdä saman kokeissamme täällä.

Kun tutkimme koettelemuksiamme, näemme sen bayesian-221102-2053-048-b59ec7b4 loi parhaiten toimivan mallin, jonka validointitarkkuus on noin 89.815 %. Tutkitaan, mitkä hyperparametrit johtivat tähän suorituskykyyn valitsemalla Paras koulutustyö Tab.

Konsolinäkymä yksittäisestä viritystyöstä, jossa näkyy luettelo suoritetuista koulutustöistä

Näemme yksityiskohtaisen näkymän parhaista arvioiduista hyperparametreistä.

Konsolinäkymä yksittäisestä viritystyöstä, joka näyttää parhaan koulutustyön yksityiskohdat

Näemme heti, mitkä hyperparametrien arvot johtivat tähän erinomaiseen suorituskykyyn. Haluamme kuitenkin tietää enemmän. Arvaatko mitä? Näemme sen alpha saa likimääräisen arvon 0.052456 ja samoin eta on asetettu arvoon 0.433495. Tämä kertoo meille, että nämä arvot toimivat hyvin, mutta se kertoo meille vähän itse hyperparametriavaruudesta. Saatamme esimerkiksi pohtia, onko 0.433495 for eta oli korkein testattu arvo vai onko varaa kasvulle ja mallin parantamiselle valitsemalla korkeammat arvot.

Tätä varten meidän täytyy loitontaa ja ottaa paljon laajempi näkymä nähdäksemme, kuinka muut hyperparametriemme arvot toimivat. Yksi tapa tarkastella paljon dataa kerralla on piirtää hyperparametriarvomme HPO-kokeistamme kaavioon. Tällä tavalla näemme, kuinka nämä arvot toimivat suhteellisesti. Seuraavassa osiossa haemme nämä tiedot SageMakerista ja visualisoimme ne.

Visualisoi kokeilumme

SageMaker SDK tarjoaa meille tietoja tutkimusta varten, ja muistikirjat antavat sinulle kurkista siihen. Mutta on monia tapoja hyödyntää ja visualisoida sitä. Tässä viestissä jaamme näytteen käyttämällä Altair tilastollinen visualisointikirjasto, jota käytämme tuottamaan visuaalisemman yleiskatsauksen kokeistamme. Nämä löytyvät amtviz paketti, jonka tarjoamme osana näytettä:

from amtviz import visualize_tuning_job
visualize_tuning_job(tuner, trials_only=True)

Näiden visualisointien teho tulee välittömästi ilmi, kun piirretään kokeidemme validointitarkkuus (y-akseli) ajan suhteen (x-akseli). Seuraava vasemmalla oleva taulukko näyttää validoinnin tarkkuuden ajan kuluessa. Voimme selvästi nähdä mallin suorituskyvyn paranevan, kun suoritamme enemmän kokeita ajan myötä. Tämä on suora ja odotettu tulos HPO:n johtamisesta Bayesin strategialla. Seuraavassa viestissämme näemme tämän verrattuna muihin strategioihin ja huomaamme, että tämän ei tarvitse olla kaikkien strategioiden kohdalla.

Kaksi kaaviota, jotka esittävät HPO:n polkuja. Vasen kaavio näyttää vahvistustarkkuuden ajan kuluessa. Oikeassa kaaviossa näkyy tiheyskaavio validointitarkkuusarvoille

Tarkasteltuamme yleistä edistystä ajan mittaan, katsotaanpa nyt hyperparametritilaamme.

Seuraavat kaaviot osoittavat vahvistustarkkuuden y-akselilla, ja jokainen kaavio näkyy max_depth, alpha, etaja min_child_weight vastaavasti x-akselilla. Olemme piirtäneet koko HPO-työmme jokaiseen kaavioon. Jokainen piste on yksi koe, ja jokainen kaavio sisältää kaikki 50 koetta, mutta jokaiselle hyperparametrille erotettuna. Tämä tarkoittaa, että parhaiten menestynyt kokeilumme, #48, on esitetty täsmälleen yhdellä sinisellä pisteellä kussakin näistä kaavioista (jotka olemme korostaneet sinulle seuraavassa kuvassa). Voimme verrata sen suorituskykyä visuaalisesti kaikkien muiden 49 kokeen yhteydessä. Katsotaanpa siis tarkasti.

Kiehtova! Näemme heti, mitkä hyperparametriavaruudessamme määritetyistä alueistamme ovat tehokkaimpia! Ajatellen takaisin meidän eta arvo, nyt on selvää, että lähempänä nollaa olevien arvojen näytteenotto tuotti huonomman suorituskyvyn, kun taas lähemmäs rajaamme, 0, tuottaa parempia tuloksia. Päinvastoin näyttää olevan totta alphaja max_depth näyttää olevan rajoitetumpi joukko suositeltuja arvoja. katsomassa max_depth, voit myös nähdä, kuinka bayesilaisen strategian käyttö ohjaa SageMaker AMT:tä ottamaan useammin näytteen oppimistaan ​​arvoista, jotka toimivat hyvin aiemmin.

Neljä kaaviota, jotka osoittavat validoinnin tarkkuuden y-akselilla, ja jokainen kaavio näyttää max_depth, alfa, eta ja min_child_weight x-akselilla. Jokainen datapiste edustaa yhtä HPO-koetta

Katsomalla meidän eta arvoa, saatamme miettiä, kannattaako tutkia enemmän oikealla, ehkä yli 0.45? Pystyykö tarkkuuden lasku jatkumaan vai tarvitsemmeko tähän lisää tietoa? Tämä ihmettely on osa ensimmäisen HPO-työmme tarkoitusta. Se antaa meille oivalluksia siitä, mitä hyperparametriavaruuden alueita meidän pitäisi tutkia tarkemmin.

Jos haluat tietää enemmän ja olet yhtä innostunut tästä johdannosta, pysy kuulolla seuraavaa postausta varten, jossa kerromme lisää eri HPO-strategioista, vertaamme niitä toisiinsa ja harjoittele harjoittelua omalla Python-skriptillämme.

Puhdistaa

Jotta vältytään ei-toivotuilta kustannuksilta, kun olet lopettanut HPO-kokeilun, sinun on poistettava kaikki tiedostot S3-alueeltasi etuliitteellä amt-visualize-demo ja myös sulje Studio-resurssit.

Suorita seuraava koodi muistikirjassasi poistaaksesi kaikki S3-tiedostot tästä viestistä.

!aws s3 rm s3://{BUCKET}/amt-visualize-demo --recursive

Jos haluat säilyttää tietojoukot tai mallin artefaktit, voit muuttaa koodin etuliitettä amt-visualize-demo/data vain poistaaksesi tiedot tai amt-visualize-demo/output poistaaksesi vain mallin artefaktit.

Yhteenveto

Tässä viestissä koulutimme ja viritimme mallia käyttämällä XGBoost-algoritmin sisäänrakennettua SageMaker-versiota. Käyttämällä HPO:ta SageMaker AMT:n kanssa opimme hyperparametreistä, jotka toimivat hyvin tässä algoritmissa ja tietojoukossa.

Näimme useita tapoja tarkastella hyperparametrien viritystyömme tuloksia. Aloitimme parhaan kokeilun hyperparametrien poimimisesta ja opimme myös ymmärtämään paremmin, miten kokeemme ovat edenneet ajan mittaan ja mitkä hyperparametrien arvot vaikuttavat.

SageMaker-konsolin avulla näimme myös kuinka sukeltaa syvemmälle yksittäisiin harjoituksiin ja tarkastella niiden lokeja.

Tämän jälkeen loitonnamme nähdäksemme kaikki kokeemme yhdessä ja tarkastellaksemme niiden suorituskykyä suhteessa muihin kokeisiin ja hyperparametreihin.

Opimme, että jokaisesta kokeesta saatujen havaintojen perusteella pystyimme navigoimaan hyperparametritilassa nähdäksemme, että pienillä muutoksilla hyperparametriarvoihimme voi olla valtava vaikutus mallimme suorituskykyyn. SageMaker AMT:n avulla voimme suorittaa hyperparametrien optimoinnin löytääksemme hyvät hyperparametriarvot tehokkaasti ja maksimoidaksemme mallin suorituskyvyn.

Jatkossa tarkastelemme SageMaker AMT:n tarjoamia erilaisia ​​HPO-strategioita ja omia mukautettuja koulutuskoodimme käyttöä. Kerro meille kommenteissa, jos sinulla on kysyttävää tai haluat ehdottaa aluetta, jota meidän tulisi käsitellä tulevissa viesteissä.

Siihen asti toivotamme sinulle ja malleillesi onnea oppimiseen ja viritykseen!

Viitteet

sitaatteja:

[1] Dua, D. ja Graff, C. (2019). UCI-koneoppimisen arkisto [http://archive.ics.uci.edu/ml]. Irvine, Kalifornia: Kalifornian yliopisto, Informaatiotieteiden korkeakoulu.


Tietoja kirjoittajista

Optimoi hyperparametrit Amazon SageMaker Automatic Model Tuning PlatoBlockchain Data Intelligence -toiminnolla. Pystysuuntainen haku. Ai.Andrew Ellul on ratkaisuarkkitehti Amazon Web Services -palvelussa. Hän työskentelee pienten ja keskisuurten yritysten kanssa Saksassa. Töiden ulkopuolella Andrew nauttii luontoon tutustumisesta jalan tai pyörällä.

Optimoi hyperparametrit Amazon SageMaker Automatic Model Tuning PlatoBlockchain Data Intelligence -toiminnolla. Pystysuuntainen haku. Ai.Elina Lesyk on Solutions Architect, joka sijaitsee Münchenissä. Hän keskittyy finanssipalvelualan yritysasiakkaisiin. Vapaa-ajallaan Elina pitää kitarateorian opiskelusta espanjaksi ristiinopiskelussa ja lenkillä.

Optimoi hyperparametrit Amazon SageMaker Automatic Model Tuning PlatoBlockchain Data Intelligence -toiminnolla. Pystysuuntainen haku. Ai.Mariano Kamp on johtava ratkaisuarkkitehti Amazon Web Services -palvelussa. Hän työskentelee rahoituspalveluasiakkaiden kanssa Saksassa koneoppimisen parissa. Vapaa-ajallaan Mariano nauttii vaelluksesta vaimonsa kanssa.

Aikaleima:

Lisää aiheesta AWS-koneoppiminen