Optimizirajte hiperparametre s samodejnim prilagajanjem modela Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Optimizirajte hiperparametre s samodejno nastavitvijo modela Amazon SageMaker

Modeli strojnega učenja (ML) osvajajo svet. Njihovo delovanje je odvisno od uporabe pravih podatkov o usposabljanju ter izbire pravega modela in algoritma. Vendar se tukaj ne konča. Običajno algoritmi preložijo nekatere načrtovalske odločitve strokovnjaku za strojno upravljanje, da jih sprejme za svoje specifične podatke in nalogo. Te odložene oblikovalske odločitve se kažejo kot hiperparametrov.

Kaj pomeni to ime? Rezultat usposabljanja ML, model, je mogoče v veliki meri videti kot zbirko parametrov, ki se jih naučimo med usposabljanjem. Zato se parametri, ki se uporabljajo za konfiguracijo procesa usposabljanja ML, imenujejo hiperparametri – parametri, ki opisujejo ustvarjanje parametrov. Vsekakor so zelo praktične uporabe, na primer število epoh za usposabljanje, stopnja učenja, največja globina odločitvenega drevesa in tako naprej. In posvečamo jim veliko pozornosti, ker imajo velik vpliv na končno zmogljivost vašega modela.

Tako kot vrtenje gumba na radijskem sprejemniku, da bi našli pravo frekvenco, je treba vsak hiperparameter skrbno nastaviti, da optimizirate delovanje. Iskanje optimalnih vrednosti v prostoru hiperparametrov se imenuje uglaševanje hiperparametrov or optimizacija hiperparametrov (HPO), rezultat pa bi moral biti model, ki daje natančne napovedi.

V tej objavi bomo postavili in zagnali naše prvo opravilo HPO z uporabo Samodejno prilagajanje modela Amazon SageMaker (AMT). Spoznamo metode, ki so na voljo za raziskovanje rezultatov, in ustvarimo nekaj pronicljivih vizualizacij naših poskusov HPO in raziskovanja prostora hiperparametrov!

Samodejno prilagajanje modela Amazon SageMaker

Kot praktik ML uporablja SageMaker AMT, se lahko osredotočite na naslednje:

  • Zagotavljanje delovnega mesta za usposabljanje
  • Določanje prave ciljne metrike, ki ustreza vaši nalogi
  • Obseg iskalnega prostora hiperparametrov

SageMaker AMT poskrbi za ostalo in ni vam treba razmišljati o infrastrukturi, orkestriranju izobraževalnih del in izboljšanju izbire hiperparametrov.

Začnimo z uporabo SageMaker AMT za naše prvo preprosto opravilo HPO, za usposabljanje in nastavitev algoritma XGBoost. Želimo, da je vaše potovanje AMT praktično in praktično, zato smo primer delili v nadaljevanju GitHub repozitorij. Ta objava pokriva 1_tuning_of_builtin_xgboost.ipynb zvezek.

V prihajajoči objavi bomo razširili pojem samo iskanja najboljših hiperparametrov in vključili učenje o iskalnem prostoru in na katere obsege hiperparametrov je model občutljiv. Pokazali bomo tudi, kako enkratno uglaševanje spremeniti v večstopenjski pogovor s strokovnjakom za strojno učenje, da se skupaj učita. Ostanite z nami (igra beseda)!

Predpogoji

Ta objava je namenjena vsem, ki jih zanima HPO in ne zahteva predznanja o temi. Osnovno poznavanje konceptov ML in programiranja Python je vseeno koristno. Za najboljšo učno izkušnjo toplo priporočamo, da sledite teče vsak korak v zvezku vzporedno z branjem te objave. Na koncu zvezka lahko preizkusite tudi interaktivno vizualizacijo, ki oživi rezultate uglaševanja.

Pregled rešitev

Zgradili bomo nastavitev od konca do konca za izvajanje našega prvega opravila HPO z uporabo SageMaker AMT. Ko je naše uglaševanje končano, si ogledamo nekatere razpoložljive metode za raziskovanje rezultatov, tako prek Konzola za upravljanje AWS in programsko prek SDK-jev in API-jev AWS.

Najprej se seznanimo z okoljem in usposabljanjem SageMaker tako, da izvajamo samostojno usposabljanje, zaenkrat brez kakršnega koli prilagajanja. Uporabljamo algoritem XGBoost, enega od mnogih algoritmov, ki so na voljo kot a Vgrajeni algoritem SageMaker (skripta za usposabljanje ni potrebna!).

Vidimo, kako SageMaker Training deluje na naslednje načine:

  • Zažene in ustavi primerek
  • Priskrbi potrebno posodo
  • Kopira podatke o usposabljanju in validaciji v primerek
  • Vodi usposabljanje
  • Zbira metrike in dnevnike
  • Zbere in shrani izurjen model

Nato se premaknemo na AMT in izvedemo opravilo HPO:

  • Postavimo in zaženemo našo nastavitev z AMT
  • Poglobili smo se v razpoložljive metode za pridobivanje podrobnih meritev uspešnosti in metapodatkov za vsako delovno mesto usposabljanja, kar nam omogoča, da izvemo več o optimalnih vrednostih v našem prostoru hiperparametrov
  • Pokažemo vam, kako si ogledate rezultate poskusov
  • Ponujamo vam orodja za vizualizacijo podatkov v nizu grafikonov, ki razkrivajo dragocene vpoglede v naš prostor hiperparametrov

Usposobite algoritem XGBoost, vgrajen v SageMaker

Vse se začne z usposabljanjem modela. Pri tem dobimo občutek, kako deluje SageMaker Training.

Želimo izkoristiti hitrost in enostavnost uporabe, ki ju ponuja SageMaker vgrajeni algoritmi. Vse, kar potrebujemo, je nekaj korakov, da začnemo z usposabljanjem:

  1. Pripravite in naložite podatke – Prenesemo in pripravimo naš nabor podatkov kot vhod za XGBoost in ga naložimo v našo Preprosta storitev shranjevanja Amazon (Amazon S3) vedro.
  2. Izberite URI slike našega vgrajenega algoritma – SageMaker uporablja ta URI za pridobivanje našega vsebnika za usposabljanje, ki v našem primeru vsebuje že pripravljen skript za usposabljanje XGBoost. Podprtih je več različic algoritmov.
  3. Določite hiperparametre – SageMaker nudi vmesnik za definiranje hiperparametrov za naš vgrajeni algoritem. To so isti hiperparametri, kot jih uporablja odprtokodna različica.
  4. Konstruirajte cenilec – Določimo parametre usposabljanja, kot sta vrsta instance in število instanc.
  5. Pokličite funkcijo fit(). – Začenjamo z našim usposabljanjem.

Naslednji diagram prikazuje, kako ti koraki delujejo skupaj.

Navedite podatke

Za izvedbo usposabljanja ML moramo zagotoviti podatke. Svoje podatke o usposabljanju in validaciji posredujemo podjetju SageMaker prek Amazona S3.

V našem primeru zaradi enostavnosti uporabljamo privzeto vedro SageMaker za shranjevanje naših podatkov. Vendar lahko naslednje vrednosti prilagodite svojim željam:

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

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

V zvezku uporabljamo javni nabor podatkov in podatke shranjujemo lokalno v data imenik. Nato svoje podatke o usposabljanju in validaciji naložimo v Amazon S3. Kasneje določimo tudi kazalce na te lokacije, da jih posredujemo SageMaker Training.

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

V tej objavi se osredotočamo na uvedbo HPO. Za ponazoritev uporabimo določen nabor podatkov in nalogo, da lahko pridobimo meritve objektivnih metrik, ki jih nato uporabimo za optimizacijo izbire hiperparametrov. Vendar za celotno objavo niso pomembni niti podatki niti naloga. Da bi vam predstavili celotno sliko, naj na kratko opišemo, kaj počnemo: usposabljamo model XGBoost, ki naj razvrsti ročno napisane številke iz
Nabor podatkov o optičnem prepoznavanju ročno napisanih številk [1] prek Scikit-learn. XGBoost je odličen algoritem za strukturirane podatke in ga je mogoče uporabiti celo za nabor podatkov Digits. Vrednosti so slike 8×8, kot v naslednjem primeru, ki prikazuje a
0 a
5 in
4.

Optimizirajte hiperparametre s samodejnim prilagajanjem modela Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Izberite URI slike XGBoost

Ko izberemo naš vgrajeni algoritem (XGBoost), moramo pridobiti URI slike in ga posredovati SageMakerju, da se naloži v naš primerek za usposabljanje. Za ta korak pregledamo razpoložljive različice. Tukaj smo se odločili za različico 1.5.1, ki ponuja najnovejšo različico algoritma. Odvisno od naloge lahko praktiki ML napišejo svoj skript za usposabljanje, ki na primer vključuje korake za pripravo podatkov. Vendar v našem primeru to ni potrebno.

Če želite napisati svoj scenarij za usposabljanje, potem ostanite z nami, pokrivali smo vas v naši naslednji objavi! Pokazali vam bomo, kako izvajati izobraževalna opravila SageMaker z lastnimi skripti za usposabljanje po meri.

Za zdaj potrebujemo pravilen URI slike z navedbo algoritma, regije AWS in številke različice:

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

To je vse. Zdaj imamo sklicevanje na algoritem XGBoost.

Določite hiperparametre

Zdaj definiramo naše hiperparametre. Te vrednosti konfigurirajo, kako bo naš model usposobljen, in sčasoma vplivajo na to, kako se model obnese glede na objektivno metriko, s katero merimo, kot je natančnost v našem primeru. Upoštevajte, da nič o naslednjem bloku kode ni specifično za SageMaker. Pravzaprav uporabljamo odprtokodna različica XGBoost, ki ga pravkar zagotavlja in optimizira SageMaker.

Čeprav je vsakega od teh hiperparametrov mogoče konfigurirati in prilagoditi, je objektivna metrika multi:softmax določa naš nabor podatkov in vrsta problema, ki ga rešujemo. V našem primeru podatkovni niz Digits vsebuje več oznak (opazovanje ročno napisane številke je lahko 0 or 1,2,3,4,5,6,7,8,9), kar pomeni, da gre za problem večrazredne klasifikacije.

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
}

Za več informacij o drugih hiperparametrih glejte XGBoost hiperparametri.

Konstruirajte cenilec

Usposabljanje konfiguriramo na objektu ocenjevalca, ki je vmesnik na visoki ravni za SageMaker Training.

Nato določimo število instanc za usposabljanje, vrsto instance (na osnovi CPU ali GPU) in velikost priloženega pomnilnika:

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
)

Zdaj imamo konfiguracijo infrastrukture, ki jo potrebujemo za začetek. SageMaker Training bo poskrbel za ostalo.

Pokličite funkcijo fit().

Se spomnite podatkov, ki smo jih prej naložili v Amazon S3? Zdaj ustvarjamo reference na to:

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')

Klic na fit() začenja naše usposabljanje. Posredujemo sklice na podatke o usposabljanju, ki smo jih pravkar ustvarili, da usmerimo SageMaker Training na naše podatke o usposabljanju in validaciji:

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

Upoštevajte, da nam za kasnejši zagon HPO dejansko ni treba klicati fit() tukaj Kasneje potrebujemo samo objekt ocenjevalca za HPO in lahko preprosto preidemo na ustvarjanje našega opravila HPO. Ker pa želimo izvedeti več o SageMaker Training in videti, kako izvajati posamezno usposabljanje, ga pokličemo tukaj in pregledamo rezultat.

Ko se usposabljanje začne, začnemo videti rezultat pod celicami, kot je prikazano na naslednjem posnetku zaslona. Izhod je na voljo v amazoncloudwatch kot tudi v tem zvezku.

Črno besedilo je izpis dnevnika samega SageMakerja, ki prikazuje korake, vključene v orkestracijo usposabljanja, kot sta zagon instance in nalaganje slike usposabljanja. Modro besedilo se izpiše neposredno iz samega učnega primerka. Opazujemo lahko proces nalaganja in razčlenjevanja podatkov o usposabljanju ter vizualno vidimo napredek usposabljanja in izboljšanje objektivne metrike neposredno iz skripta za usposabljanje, ki se izvaja na instanci.

Izhod iz funkcije fit() v Jupyter Notebook

Upoštevajte tudi, da je na koncu izhodnega opravila prikazano trajanje usposabljanja v sekundah in obračunane sekunde.

Na koncu vidimo, da SageMaker naloži naš model usposabljanja na izhodno pot S3, definirano na objektu ocenjevalca. Model je pripravljen za uporabo za sklepanje.

V prihodnji objavi bomo ustvarili svoj lasten vsebnik za usposabljanje in določili meritve za oddajanje. Videli boste, kako je SageMaker neodvisen od vsebnika, ki mu ga posredujete za usposabljanje. To je zelo priročno, ko želite hitro začeti z vgrajenim algoritmom, vendar se pozneje odločite, da boste posredovali svoj skript za usposabljanje po meri!

Preglejte trenutna in prejšnja delovna mesta za usposabljanje

Doslej smo delali iz svojega zvezka z našo kodo in SageMakerju pošiljali naloge za usposabljanje. Zamenjajmo perspektivo in za trenutek pustimo prenosni računalnik, da preverimo, kako je to videti na konzoli SageMaker.

Konzolni pogled opravil SageMaker Training

SageMaker vodi zgodovinsko evidenco izobraževalnih nalog, ki jih je izvajal, njihove konfiguracije, kot so hiperparametri, algoritmi, vnos podatkov, zaračunani čas in rezultati. Na seznamu na prejšnjem posnetku zaslona vidite najnovejša izobraževalna opravila, filtrirana za XGBoost. Označeno usposabljanje je opravilo, ki smo ga pravkar usposabljali v zvezku, katerega rezultat ste videli prej. Poglobimo se v to individualno usposabljanje, da dobimo več informacij.

Naslednji posnetek zaslona prikazuje pogled konzole našega opravila usposabljanja.

Konzolni pogled posameznega opravila SageMaker Training

Informacije, ki smo jih prejeli kot rezultat celice, lahko pregledamo v našo fit() funkcijo v posameznem izobraževalnem opravilu znotraj konzole SageMaker, skupaj s parametri in metapodatki, ki smo jih definirali v našem ocenjevalcu.

Prikličite izpis dnevnika iz primerka usposabljanja, ki smo ga videli prej. Tudi tukaj lahko dostopamo do dnevnikov našega usposabljanja, tako da se pomaknemo na monitor razdelek in izbiranje Oglejte si dnevnike.

Pogled konzole zavihka za spremljanje v opravilu usposabljanja

To nam pokaže dnevnike primerkov znotraj CloudWatch.

Konzolni pogled dnevnikov primerkov usposabljanja v CloudWatchu

Zapomnite si tudi hiperparametre, ki smo jih določili v našem zvezku za nalogo usposabljanja. Vidimo jih tudi tukaj v istem uporabniškem vmesniku delovnega mesta za usposabljanje.

Konzolni pogled hiperparametrov opravila SageMaker Training

Pravzaprav lahko podrobnosti in metapodatke, ki smo jih prej določili za naše usposabljanje in ocenjevalec, najdete na tej strani na konzoli SageMaker. Imamo koristen zapis o nastavitvah, uporabljenih za usposabljanje, na primer, kateri vsebnik za usposabljanje je bil uporabljen in lokacije naborov podatkov za usposabljanje in validacijo.

Morda se na tej točki sprašujete, zakaj točno je to pomembno za optimizacijo hiperparametrov? To je zato, ker lahko iščete, pregledate in se poglobite v tiste poskuse HPO, ki nas zanimajo. Morda tiste z najboljšimi rezultati ali tiste, ki kažejo zanimivo vedenje. Prepustili vam bomo, kaj sami definirate kot »zanimivo«. Omogoča nam skupni vmesnik za pregledovanje naših delovnih mest za usposabljanje in lahko ga uporabljate z iskalnikom SageMaker.

Čeprav SageMaker AMT usklajuje opravila HPO, se vsi preizkusi HPO zaženejo kot posamezna opravila usposabljanja SageMaker in je do njih mogoče dostopati kot takim.

S pokritim usposabljanjem se lotimo uglaševanja!

Usposobite in prilagodite algoritem XGBoost, vgrajen v SageMaker

Za prilagoditev našega modela XGBoost bomo ponovno uporabili obstoječe hiperparametre in definirali obsege vrednosti, ki jih želimo raziskati zanje. Zamislite si to kot razširitev meja raziskovanja v našem iskalnem prostoru hiperparametrov. Naše uglaševanje bo vzorčilo iz iskalnega prostora in izvajalo usposabljanje za nove kombinacije vrednosti. Naslednja koda prikazuje, kako določiti obsege hiperparametrov, iz katerih naj vzorči SageMaker AMT:

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

Območja za posamezne hiperparametre so podana glede na njihovo vrsto, npr ContinuousParameter. Za več informacij in nasvetov o izbiri teh obsegov parametrov glejte Nastavite model XGBoost.

Izvedli še nismo nobenega poskusa, zato ne poznamo razponov dobrih vrednosti za naše hiperparametre. Zato začnemo z utemeljenim ugibanjem, pri čemer uporabimo naše znanje o algoritmih in našo dokumentacijo o hiperparametrih za vgrajene algoritme. To definira izhodišče za določitev iskalnega prostora.

Nato zaženemo vzorčenje opravila uglaševanja iz hiperparametrov v definiranih obsegih. Posledično lahko vidimo, kateri obsegi hiperparametrov dajejo dobre rezultate. S tem znanjem lahko izboljšamo meje iskalnega prostora tako, da zožimo ali razširimo, katere obsege hiperparametrov naj uporabimo. V naslednjem in zadnjem razdelku, kjer raziskujemo in vizualiziramo rezultate, pokažemo, kako se učiti iz poskusov.

V naši naslednji objavi bomo nadaljevali naše potovanje in se potopili globlje. Poleg tega se bomo naučili, da obstaja več strategij, ki jih lahko uporabimo za raziskovanje našega iskalnega prostora. Izvedli bomo naslednja opravila HPO, da bi našli še bolj zmogljive vrednosti za naše hiperparametre, medtem ko bomo primerjali te različne strategije. Videli bomo tudi, kako zagnati topel začetek s SageMaker AMT, da uporabimo znanje, pridobljeno iz predhodno raziskanih iskalnih prostorov, v našem raziskovanju onkraj teh začetnih meja.

V tej objavi se osredotočamo na to, kako analizirati in vizualizirati rezultate enega samega opravila HPO z uporabo Bayesove strategije iskanja, ki bo verjetno dobro izhodišče.

Če sledite v povezanem zvezku, upoštevajte, da podajamo isti ocenjevalec, kot smo ga uporabili za eno samo, vgrajeno usposabljanje XGBoost. Ta ocenjevalni objekt deluje kot predloga za nova delovna mesta za usposabljanje, ki jih ustvari AMT. AMT bo nato spreminjal hiperparametre znotraj obsegov, ki smo jih definirali.

Z navedbo, da želimo maksimirati našo objektivno metriko, validation:accuracy, sporočamo SageMaker AMT, naj poišče te metrike v dnevnikih primerkov usposabljanja in izbere vrednosti hiperparametrov, za katere meni, da bodo maksimizirale metriko natančnosti naših validacijskih podatkov. Izbrali smo primernega objektivna metrika za XGBoost iz naše dokumentacije.

Poleg tega lahko izkoristimo vzporednost z max_parallel_jobs. To je lahko močno orodje, zlasti za strategije, katerih poskusi so izbrani neodvisno, brez upoštevanja (učenja) izidov prejšnjih poskusov. Te druge strategije in parametre bomo podrobneje raziskali v naši naslednji objavi. Za to objavo uporabljamo Bayesian, ki je odlična privzeta strategija.

Prav tako definiramo max_jobs da določite, koliko poskusov naj se izvedejo skupaj. Odstopite od našega primera in uporabite manjšo številko, da prihranite denar.

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
}

Še enkrat kličemo fit(), na enak način kot takrat, ko smo v prejšnji objavi uvedli eno samo usposabljanje. Toda tokrat na objektu sprejemnika, ne na objektu ocenjevalca. S tem se začne uglaševanje, AMT pa začne z usposabljanjem.

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}.')

Naslednji diagram razširja našo prejšnjo arhitekturo z vključitvijo HPO s SageMaker AMT.

Pregled usposabljanja za SageMaker in optimizacije hiperparametrov s SageMaker AMT

Vidimo, da je bilo naše delo za HPO oddano. Odvisno od števila poskusov, ki jih definira n_jobs in raven paralelizacije, lahko to traja nekaj časa. Za naš primer lahko traja do 30 minut za 50 poskusov s samo stopnjo paralelizacije 3.

tuning job submitted: bayesian-221102-2053.

Ko je to uglaševanje končano, raziščimo informacije, ki so nam na voljo na konzoli SageMaker.

Raziščite opravila AMT na konzoli

Poiščimo svoje uglaševanje na konzoli SageMaker z izbiro usposabljanje v navigacijskem podoknu in nato Hiperparametrska nastavitev. Tako dobimo seznam naših opravil AMT, kot je prikazano na naslednjem posnetku zaslona. Tukaj najdemo naše bayesian-221102-2053 in ugotovite, da je končano.

Konzolni pogled strani z opravili za prilagajanje hiperparametrov. Slika prikazuje pogled seznama poslov za uglaševanje, ki vsebuje naš 1 vnos za uglaševanje

Oglejmo si podrobneje rezultate tega dela HPO.

Raziskali smo programsko pridobivanje rezultatov v prenosnik. Najprej prek SDK SageMaker Python, ki je odprtokodna knjižnica Python višje ravni, ki SageMakerju zagotavlja namenski API. Potem skozi Boto3, ki nam ponuja API-je nižje ravni za SageMaker in druge storitve AWS.

Z uporabo SDK-ja SageMaker Python lahko pridobimo rezultate našega opravila HPO:

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

To nam je omogočilo analizo rezultatov vsakega od naših poskusov v Pandas DataFrame, kot je prikazano na naslednjem posnetku zaslona.

Tabela Pandas v Jupyter Notebooku prikazuje rezultate in metapodatke iz sledi, izvedenih za našo nalogo HPO

Zdaj pa spet zamenjajmo perspektivo in poglejmo, kako so videti rezultati na konzoli SageMaker. Nato si bomo ogledali naše vizualizacije po meri.

Na isti strani z izbiro našega bayesian-221102-2053 tuning job nam ponuja seznam poskusov, ki so bili izvedeni za naše tuning job. Vsak preizkus HPO tukaj je naloga usposabljanja SageMaker. Spomnimo se prejšnjega, ko smo usposabljali naš en sam model XGBoost in raziskovali delo usposabljanja v konzoli SageMaker. Enako lahko storimo za naše poskuse tukaj.

Ko raziskujemo svoje poskuse, to vidimo bayesian-221102-2053-048-b59ec7b4 ustvaril najuspešnejši model z natančnostjo validacije približno 89.815 %. Raziščimo, kateri hiperparametri so privedli do te uspešnosti z izbiro Najboljše usposabljanje tab.

Konzolni pogled posameznega opravila prilagajanja, ki prikazuje seznam izvedenih opravil usposabljanja

Ogledamo si lahko podroben prikaz najboljših ocenjenih hiperparametrov.

Konzolni pogled posameznega opravila uglaševanja, ki prikazuje podrobnosti najboljšega opravila usposabljanja

Takoj lahko vidimo, katere vrednosti hiperparametrov so privedle do te vrhunske zmogljivosti. Vendar želimo izvedeti več. Ali lahko uganete kaj? To vidimo alpha prevzame približno vrednost 0.052456 in prav tako eta je nastavljen na 0.433495. To nam pove, da so te vrednosti dobro delovale, vendar nam pove le malo o samem prostoru hiperparametrov. Na primer, lahko se vprašamo, ali je 0.433495 za eta je bila preizkušena najvišja vrednost ali ali obstaja prostor za rast in izboljšave modela z izbiro višjih vrednosti.

Za to moramo pomanjšati in zajeti veliko širši pogled, da vidimo, kako delujejo druge vrednosti za naše hiperparametre. Eden od načinov, da si ogledamo veliko podatkov hkrati, je, da vrednosti naših hiperparametrov iz naših poskusov HPO narišemo na grafikonu. Tako vidimo, kako so te vrednosti relativno uspešne. V naslednjem razdelku potegnemo te podatke iz SageMakerja in jih vizualiziramo.

Vizualizirajte naše preizkušnje

SDK SageMaker nam nudi podatke za naše raziskovanje, zvezki pa vam omogočajo vpogled v to. Vendar obstaja veliko načinov, kako to uporabiti in vizualizirati. V tej objavi delimo vzorec z uporabo Altair statistično vizualizacijsko knjižnico, ki jo uporabljamo za izdelavo bolj vizualnega pregleda naših poskusov. Te najdemo v amtviz paket, ki ga posredujemo v sklopu vzorca:

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

Moč teh vizualizacij postane takoj očitna pri izrisu natančnosti potrjevanja naših poskusov (os y) skozi čas (os x). Naslednja tabela na levi prikazuje natančnost preverjanja skozi čas. Jasno lahko vidimo, da se učinkovitost modela izboljšuje, ko sčasoma izvedemo več poskusov. To je neposreden in pričakovan rezultat vodenja HPO z Bayesovo strategijo. V naši naslednji objavi bomo videli, kako se to primerja z drugimi strategijami, in ugotovili, da ni nujno, da to velja za vse strategije.

Dva grafikona, ki prikazujeta sledi HPO. Levi grafikon prikazuje natančnost preverjanja skozi čas. Desni grafikon prikazuje grafikon gostote za vrednosti natančnosti preverjanja

Po pregledu splošnega napredka skozi čas si zdaj poglejmo naš prostor hiperparametrov.

Naslednji grafikoni prikazujejo natančnost preverjanja na osi y, pri čemer je prikazan vsak grafikon max_depth, alpha, etain min_child_weight na osi x oz. Naše celotno delo HPO smo vnesli v vsako tabelo. Vsaka točka je en sam poskus in vsak grafikon vsebuje vseh 50 poskusov, vendar ločenih za vsak hiperparameter. To pomeni, da je naš najuspešnejši poskus, št. 48, predstavljen z natanko eno modro piko na vsaki od teh lestvic (ki smo jo za vas označili na naslednji sliki). Njegovo delovanje lahko vizualno primerjamo v kontekstu vseh ostalih 49 poskusov. Torej, poglejmo natančno.

Fascinantno! Takoj vidimo, katera območja naših definiranih razponov v našem prostoru hiperparametrov so najučinkovitejša! Če pomislim nazaj na naše eta vrednosti, je zdaj jasno, da je vzorčenje vrednosti bližje 0 prineslo slabšo učinkovitost, medtem ko približevanje naši meji, 0.5, prinaša boljše rezultate. Zdi se, da velja obratno za alphain max_depth zdi se, da ima bolj omejen nabor želenih vrednosti. Gledati max_depth, si lahko tudi ogledate, kako uporaba Bayesove strategije naroči SageMaker AMT, naj pogosteje vzorči vrednosti, za katere se je naučil, da so v preteklosti dobro delovale.

Štirje grafikoni prikazujejo natančnost preverjanja na osi y, pri čemer vsak grafikon prikazuje max_depth, alpha, eta, min_child_weight na osi x. Vsaka podatkovna točka predstavlja en sam preskus HPO

Ob pogledu na naše eta vrednosti, se lahko vprašamo, ali je vredno raziskovati bolj desno, morda nad 0.45? Ali je še vedno nižja natančnost ali potrebujemo več podatkov? To spraševanje je del namena vodenja našega prvega delovnega mesta HPO. Zagotavlja nam vpogled v to, katera področja prostora hiperparametrov bi morali nadalje raziskati.

Če želite izvedeti več in ste nad tem uvodom v temo navdušeni tako kot mi, potem spremljajte našo naslednjo objavo, kjer bomo več govorili o različnih strategijah HPO, jih primerjali med seboj in vadite usposabljanje z našo lastno skripto Python.

Čiščenje

Da bi se izognili neželenim stroškom, ko končate eksperimentiranje s HPO, morate odstraniti vse datoteke v vedru S3 s predpono amt-visualize-demo in tudi zaprite vire Studia.

Zaženite naslednjo kodo v svojem zvezku, da odstranite vse datoteke S3 iz te objave.

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

Če želite obdržati nabore podatkov ali modelne artefakte, lahko spremenite predpono v kodi na amt-visualize-demo/data da samo izbriše podatke oz amt-visualize-demo/output da izbrišete samo artefakte modela.

zaključek

V tej objavi smo usposobili in prilagodili model z uporabo vgrajene različice algoritma XGBoost SageMaker. Z uporabo HPO s SageMaker AMT smo izvedeli o hiperparametrih, ki dobro delujejo za ta določen algoritem in nabor podatkov.

Videli smo več načinov za pregled rezultatov našega opravila prilagajanja hiperparametrov. Začenši z ekstrakcijo hiperparametrov najboljšega preskušanja, smo se naučili tudi, kako pridobiti globlje razumevanje tega, kako so naši poskusi napredovali skozi čas in katere vrednosti hiperparametrov so vplivne.

Z uporabo konzole SageMaker smo videli tudi, kako se poglobiti v posamezne treninge in pregledati njihove dnevnike.

Nato smo pomanjšali, da bi si skupaj ogledali vse naše poskuse in pregledali njihovo uspešnost v primerjavi z drugimi poskusi in hiperparametri.

Izvedeli smo, da smo lahko na podlagi opazovanj iz vsakega preskušanja krmarili po prostoru hiperparametrov in videli, da lahko majhne spremembe vrednosti naših hiperparametrov močno vplivajo na učinkovitost našega modela. S SageMaker AMT lahko izvajamo optimizacijo hiperparametrov, da učinkovito najdemo dobre vrednosti hiperparametrov in povečamo zmogljivost modela.

V prihodnosti bomo preučili različne HPO strategije, ki jih ponuja SageMaker AMT, in kako uporabiti našo kodo za usposabljanje po meri. Sporočite nam v komentarjih, če imate vprašanje ali želite predlagati področje, ki bi ga morali obravnavati v prihodnjih objavah.

Do takrat pa vam in vašim modelom želimo srečno učenje in uglaševanje!

Reference

Navedbe:

[1] Dua, D. in Graff, C. (2019). Repozitorij strojnega učenja UCI [http://archive.ics.uci.edu/ml]. Irvine, CA: Univerza v Kaliforniji, Šola za informatiko in računalništvo.


O avtorjih

Optimizirajte hiperparametre s samodejnim prilagajanjem modela Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Andrew Ellul je arhitekt rešitev pri Amazon Web Services. V Nemčiji sodeluje z malimi in srednje velikimi podjetji. Zunaj službe Andrew uživa v raziskovanju narave peš ali s kolesom.

Optimizirajte hiperparametre s samodejnim prilagajanjem modela Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Elina Lesik je arhitekt rešitev s sedežem v Münchnu. Osredotoča se na poslovne stranke iz industrije finančnih storitev. V prostem času se Elina rada uči teorije kitare v španščini za navzkrižno učenje in gre teč.

Optimizirajte hiperparametre s samodejnim prilagajanjem modela Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Mariano Kamp je glavni arhitekt rešitev pri Amazon Web Services. S strankami finančnih storitev v Nemčiji sodeluje na področju strojnega učenja. V prostem času Mariano s svojo ženo uživa v pohodništvu.

Časovni žig:

Več od Strojno učenje AWS