Optimizați hiperparametrii cu Amazon SageMaker Automatic Model Tuning PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Optimizați hiperparametrii cu Amazon SageMaker Automatic Model Tuning

Modelele de învățare automată (ML) iau lumea cu asalt. Performanța lor se bazează pe utilizarea datelor de antrenament potrivite și pe alegerea modelului și a algoritmului potrivit. Dar nu se termină aici. De obicei, algoritmii amână unele decizii de proiectare către practicianul ML, pentru a le adopta pentru datele și sarcina lor specifice. Aceste decizii de proiectare amânate se manifestă ca hiperparametri.

Ce înseamnă acest nume? Rezultatul antrenamentului ML, modelul, poate fi văzut în mare măsură ca o colecție de parametri care sunt învățați în timpul antrenamentului. Prin urmare, parametrii care sunt utilizați pentru a configura procesul de antrenament ML sunt numiți apoi hiperparametri—parametri care descriu crearea parametrilor. În orice caz, ele sunt de o utilizare foarte practică, cum ar fi numărul de epoci de antrenat, rata de învățare, adâncimea maximă a unui arbore de decizie și așa mai departe. Și le acordăm multă atenție pentru că au un impact major asupra performanței finale a modelului dumneavoastră.

La fel ca rotirea unui butonul de pe un receptor radio pentru a găsi frecvența potrivită, fiecare hiperparametru ar trebui reglat cu atenție pentru a optimiza performanța. Căutarea în spațiul hiperparametrului pentru valorile optime este denumită reglarea hiperparametrului or optimizarea hiperparametrului (HPO) și ar trebui să aibă ca rezultat un model care oferă predicții precise.

În această postare, am configurat și rulăm prima noastră lucrare HPO folosind Reglarea automată a modelelor Amazon SageMaker (AMT). Învățăm despre metodele disponibile pentru a explora rezultatele și creăm câteva vizualizări perspicace ale încercărilor noastre HPO și ale explorării spațiului hiperparametric!

Reglarea automată a modelelor Amazon SageMaker

Ca practician ML folosind SageMaker AMT, vă puteți concentra pe următoarele:

  • Oferirea unui loc de muncă de formare
  • Definirea metricii obiective potrivite pentru sarcina dvs
  • Scopul spațiului de căutare hiperparametru

SageMaker AMT se ocupă de restul și nu trebuie să vă gândiți la infrastructură, la orchestrarea joburilor de formare și la îmbunătățirea selecției hiperparametrilor.

Să începem prin a folosi SageMaker AMT pentru prima noastră lucrare HPO simplă, pentru a antrena și a regla un algoritm XGBoost. Dorim ca călătoria dvs. AMT să fie practică și practică, așa că v-am împărtășit exemplul de mai jos GitHub depozit. Această postare acoperă 1_tuning_of_builtin_xgboost.ipynb caiet.

Într-o postare viitoare, vom extinde noțiunea de a găsi doar cei mai buni hiperparametri și vom include învățarea despre spațiul de căutare și la ce intervale de hiperparametri este sensibil un model. De asemenea, vom arăta cum să transformați o activitate de reglare unică într-o conversație în mai mulți pași cu practicantul ML, pentru a învăța împreună. Rămâneți pe fază (joc de cuvinte)!

Cerințe preliminare

Această postare este pentru oricine este interesat să învețe despre HPO și nu necesită cunoștințe prealabile despre subiect. Cu toate acestea, familiaritatea de bază cu conceptele ML și programarea Python este utilă. Pentru cea mai bună experiență de învățare, vă recomandăm să urmați rulând fiecare pas din caiet în paralel cu citirea acestei postări. Și la sfârșitul caietului, puteți încerca și o vizualizare interactivă care face ca rezultatele de reglare să prindă viață.

Prezentare generală a soluțiilor

Vom construi o configurare end-to-end pentru a rula prima noastră lucrare HPO folosind SageMaker AMT. Când munca noastră de reglare este finalizată, ne uităm la unele dintre metodele disponibile pentru a explora rezultatele, atât prin intermediul Consola de administrare AWS și programatic prin intermediul SDK-urilor și API-urilor AWS.

În primul rând, ne familiarizăm cu mediul înconjurător și SageMaker Training prin desfășurarea unei sarcini de formare autonome, fără nicio reglare deocamdată. Utilizăm algoritmul XGBoost, unul dintre mulți algoritmi furnizați ca a Algoritmul încorporat SageMaker (nu este necesar un script de antrenament!).

Vedem cum funcționează SageMaker Training în următoarele moduri:

  • Pornește și oprește o instanță
  • Asigură containerul necesar
  • Copiază datele de instruire și validare pe instanță
  • Conduce antrenamentul
  • Colectează valori și jurnale
  • Colectează și stochează modelul antrenat

Apoi trecem la AMT și rulăm un job HPO:

  • Am configurat și lansăm jobul nostru de tuning cu AMT
  • Ne aprofundăm în metodele disponibile pentru a extrage metrici detaliate de performanță și metadate pentru fiecare job de antrenament, ceea ce ne permite să aflăm mai multe despre valorile optime din spațiul nostru de hiperparametri
  • Vă arătăm cum să vizualizați rezultatele încercărilor
  • Vă oferim instrumente pentru a vizualiza datele într-o serie de diagrame care dezvăluie informații valoroase asupra spațiului nostru de hiperparametri

Antrenați un algoritm XGBoost încorporat SageMaker

Totul începe cu formarea unui model. Făcând acest lucru, obținem o idee despre cum funcționează SageMaker Training.

Dorim să profităm de viteza și ușurința de utilizare oferite de SageMaker algoritmi încorporați. Tot ce ne trebuie sunt câțiva pași pentru a începe antrenamentul:

  1. Pregătiți și încărcați datele – Descărcăm și pregătim setul de date ca intrare pentru XGBoost și îl încărcăm pe site-ul nostru Serviciul Amazon de stocare simplă Găleată (Amazon S3)
  2. Selectați URI-ul imaginii algoritmului nostru încorporat – SageMaker folosește acest URI pentru a prelua containerul nostru de antrenament, care în cazul nostru conține un script de antrenament XGBoost gata de utilizare. Sunt acceptate mai multe versiuni de algoritm.
  3. Definiți hiperparametrii – SageMaker oferă o interfață pentru definirea hiperparametri pentru algoritmul nostru încorporat. Aceștia sunt aceiași hiperparametri ca cei utilizați de versiunea open-source.
  4. Construiți estimatorul – Definim parametrii de antrenament, cum ar fi tipul de instanță și numărul de instanțe.
  5. Apelați funcția fit(). – Ne începem treaba de pregătire.

Următoarea diagramă arată cum acești pași funcționează împreună.

Furnizați datele

Pentru a rula instruirea ML, trebuie să furnizăm date. Furnizăm datele noastre de instruire și validare către SageMaker prin Amazon S3.

În exemplul nostru, pentru simplitate, folosim compartimentul implicit SageMaker pentru a ne stoca datele. Dar nu ezitați să personalizați următoarele valori după preferințele dvs.:

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

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

În blocnotes, folosim un set de date public și stocăm datele local în data director. Apoi încărcăm datele noastre de instruire și validare pe Amazon S3. Mai târziu, definim și indicatorii către aceste locații pentru a le transmite către 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')

În această postare, ne concentrăm pe introducerea HPO. Pentru ilustrare, folosim un set de date și sarcină specifice, astfel încât să putem obține măsurători ale metricilor obiective pe care apoi le folosim pentru a optimiza selecția hiperparametrilor. Cu toate acestea, pentru postarea generală, nici datele și nici sarcina nu contează. Pentru a vă prezenta o imagine completă, permiteți-ne să descriem pe scurt ceea ce facem: antrenăm un model XGBoost care ar trebui să clasifice cifrele scrise de mână din
Recunoașterea optică a set de date cu cifre scrise de mână [1] prin Scikit-learn. XGBoost este un algoritm excelent pentru date structurate și poate fi aplicat chiar și la setul de date Digits. Valorile sunt imagini de 8×8, ca în exemplul următor care arată a
0 a
5 și
4.

Optimizați hiperparametrii cu Amazon SageMaker Automatic Model Tuning PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Selectați URI-ul imaginii XGBoost

După ce am ales algoritmul nostru încorporat (XGBoost), trebuie să extragem URI-ul imaginii și să îl transmitem lui SageMaker pentru a-l încărca pe instanța noastră de antrenament. Pentru acest pas, revizuim versiuni disponibile. Aici am decis să folosim versiunea 1.5.1, care oferă cea mai recentă versiune a algoritmului. În funcție de sarcină, practicienii ML își pot scrie propriul script de instruire care, de exemplu, include pași de pregătire a datelor. Dar acest lucru nu este necesar în cazul nostru.

Dacă doriți să vă scrieți propriul scenariu de antrenament, atunci rămâneți pe fază, vă vom acoperi în următoarea noastră postare! Vă vom arăta cum să rulați joburi SageMaker Training cu propriile scripturi de antrenament personalizate.

Pentru moment, avem nevoie de URI-ul corect al imaginii, specificând algoritmul, regiunea AWS și numărul versiunii:

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

Asta e. Acum avem o referință la algoritmul XGBoost.

Definiți hiperparametrii

Acum definim hiperparametrii noștri. Aceste valori configurează modul în care modelul nostru va fi antrenat și, în cele din urmă, influențează modul în care modelul funcționează față de metrica obiectivă cu care măsurăm, cum ar fi acuratețea în cazul nostru. Rețineți că nimic din următorul bloc de cod nu este specific pentru SageMaker. De fapt folosim versiune open-source de XGBoost, doar furnizat de și optimizat pentru SageMaker.

Deși fiecare dintre acești hiperparametri sunt configurabili și ajustabili, metrica obiectivului multi:softmax este determinată de setul nostru de date și de tipul de problemă pentru care rezolvăm. În cazul nostru, setul de date Digits conține mai multe etichete (o observare a unei cifre scrise de mână ar putea fi 0 or 1,2,3,4,5,6,7,8,9), adică este o problemă de clasificare cu mai multe clase.

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
}

Pentru mai multe informații despre ceilalți hiperparametri, consultați Hiperparametrii XGBoost.

Construiți estimatorul

Configuram antrenamentul pe un obiect estimator, care este o interfață de nivel înalt pentru SageMaker Training.

În continuare, definim numărul de instanțe pe care să se antreneze, tipul de instanță (bazat pe CPU sau bazat pe GPU) și dimensiunea spațiului de stocare atașat:

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
)

Acum avem configurația infrastructurii de care avem nevoie pentru a începe. SageMaker Training se va ocupa de restul.

Apelați funcția fit().

Vă amintiți datele pe care le-am încărcat mai devreme pe Amazon S3? Acum creăm referințe la el:

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

Un apel la fit() lansează antrenamentul nostru. Introducem referințele la datele de antrenament pe care tocmai le-am creat pentru a indica SageMaker Training către datele noastre de instruire și validare:

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

Rețineți că pentru a rula HPO mai târziu, nu este nevoie să sunăm fit() Aici. Avem nevoie doar de obiectul estimator mai târziu pentru HPO și am putea să trecem la crearea jobului nostru HPO. Dar pentru că dorim să aflăm despre SageMaker Training și să vedem cum să rulăm o singură lucrare de instruire, o numim aici și revizuim rezultatul.

După începerea antrenamentului, începem să vedem rezultatul sub celule, așa cum se arată în următoarea captură de ecran. Ieșirea este disponibilă în Amazon CloudWatch precum şi în acest caiet.

Textul negru este rezultatul jurnalului de la SageMaker însuși, arătând pașii implicați în orchestrarea antrenamentului, cum ar fi pornirea instanței și încărcarea imaginii de antrenament. Textul albastru este scos direct din instanța de antrenament în sine. Putem observa procesul de încărcare și analiza datelor de antrenament și putem vedea vizual progresul antrenamentului și îmbunătățirea metricii obiectivului direct din scriptul de antrenament care rulează pe instanță.

Ieșire din funcția fit() din Jupyter Notebook

De asemenea, rețineți că la sfârșitul sarcinii de ieșire, sunt afișate durata antrenamentului în secunde și secunde facturabile.

În cele din urmă, vedem că SageMaker încarcă modelul nostru de antrenament pe calea de ieșire S3 definită pe obiectul estimator. Modelul este gata pentru a fi implementat pentru inferență.

Într-o postare viitoare, ne vom crea propriul container de antrenament și vom defini valorile noastre de antrenament pe care să le emitem. Veți vedea cum SageMaker este agnostic față de ce container îl treceți pentru antrenament. Acest lucru este foarte util atunci când doriți să începeți rapid cu un algoritm încorporat, dar apoi decideți să treceți propriul script de antrenament personalizat!

Inspectați locurile de muncă actuale și anterioare de formare

Până acum, am lucrat din blocnotes cu codul nostru și am trimis joburi de instruire către SageMaker. Să schimbăm perspectivele și să lăsăm blocnotesul pentru un moment pentru a vedea cum arată acesta pe consola SageMaker.

Vizualizare pe consolă a joburilor SageMaker Training

SageMaker păstrează o evidență istorică a joburilor de antrenament pe care le-a executat, a configurațiilor acestora, cum ar fi hiperparametrii, algoritmii, introducerea datelor, timpul facturabil și rezultatele. În lista din captura de ecran anterioară, vedeți cele mai recente joburi de antrenament filtrate pentru XGBoost. Jobul de formare evidențiat este jobul pe care tocmai l-am instruit în notebook, a cărui rezultate ați văzut-o mai devreme. Să ne aprofundăm în acest job de formare individuală pentru a obține mai multe informații.

Următoarea captură de ecran arată vizualizarea consolei a jobului nostru de antrenament.

Vizualizare consolă a unui singur job de instruire SageMaker

Putem revizui informațiile pe care le-am primit ca ieșire celulară către nostru fit() funcția în jobul de antrenament individual din consola SageMaker, împreună cu parametrii și metadatele pe care le-am definit în estimatorul nostru.

Reamintim rezultatul jurnalului din instanța de antrenament pe care am văzut-o mai devreme. Putem accesa jurnalele jobului nostru de formare și aici, derulând la monitor secțiune și alegere Vizualizați jurnalele.

Vizualizare consolă a filei de monitorizare în jobul de formare

Aceasta ne arată jurnalele de instanță din CloudWatch.

Vizualizarea consolă a jurnalelor de instanțe de antrenament în CloudWatch

Amintiți-vă și de hiperparametrii pe care i-am specificat în caietul nostru pentru jobul de antrenament. Îi vedem și aici în aceeași interfață de utilizare a jobului de formare.

Vizualizare din consolă a hiperparametrilor jobului SageMaker Training

De fapt, detaliile și metadatele pe care le-am specificat mai devreme pentru jobul nostru de formare și estimatorul pot fi găsite pe această pagină din consola SageMaker. Avem o înregistrare utilă a setărilor utilizate pentru instruire, cum ar fi ce container de antrenament a fost folosit și locațiile setului de date de instruire și validare.

S-ar putea să vă întrebați în acest moment, de ce exact este relevant pentru optimizarea hiperparametrului? Se datorează faptului că puteți căuta, inspecta și scufundați mai adânc în acele teste HPO care ne interesează. Poate cele cu cele mai bune rezultate sau cele care arată un comportament interesant. Vă vom lăsa în seama ceea ce definiți ca fiind „interesant”. Ne oferă o interfață comună pentru inspectarea joburilor noastre de formare și o puteți utiliza cu SageMaker Search.

Deși SageMaker AMT orchestrează joburile HPO, testele HPO sunt toate lansate ca joburi individuale SageMaker Training și pot fi accesate ca atare.

Cu antrenamentul acoperit, haideți să facem tuning!

Antrenați și reglați un algoritm XGBoost încorporat SageMaker

Pentru a ajusta modelul nostru XGBoost, vom reutiliza hiperparametrii noștri existenți și vom defini intervale de valori pe care dorim să le explorăm pentru ei. Gândiți-vă la asta ca la extinderea granițelor explorării în spațiul nostru de căutare hiperparametri. Lucrarea noastră de reglare va eșantiona din spațiul de căutare și va rula joburi de instruire pentru noi combinații de valori. Următorul cod arată cum să specificați intervalele de hiperparametri din care ar trebui să probeze 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)
}

Intervalele pentru un hiperparametru individual sunt specificate după tipul lor, cum ar fi ContinuousParameter. Pentru mai multe informații și sfaturi despre alegerea acestor intervale de parametri, consultați Reglați un model XGBoost.

Nu am efectuat încă niciun experiment, așa că nu cunoaștem intervalele de valori bune pentru hiperparametrii noștri. Prin urmare, începem cu o presupunere educată, folosind cunoștințele noastre despre algoritmi și documentația noastră despre hiperparametrii pentru algoritmii încorporați. Aceasta definește un punct de plecare pentru a defini spațiul de căutare.

Apoi rulăm o eșantionare a jobului de reglare din hiperparametri în intervalele definite. Ca rezultat, putem vedea care intervale de hiperparametri dau rezultate bune. Cu aceste cunoștințe, putem rafina limitele spațiului de căutare prin restrângerea sau extinderea intervalelor de hiperparametri pe care să le folosim. Demonstrăm cum să învățăm din încercări în secțiunea următoare și finală, unde investigăm și vizualizăm rezultatele.

În următoarea noastră postare, ne vom continua călătoria și ne vom scufunda mai adânc. În plus, vom afla că există mai multe strategii pe care le putem folosi pentru a explora spațiul nostru de căutare. Vom rula lucrări HPO ulterioare pentru a găsi valori și mai performante pentru hiperparametrii noștri, comparând în același timp aceste strategii diferite. Vom vedea, de asemenea, cum să începem cu SageMaker AMT pentru a folosi cunoștințele acumulate din spațiile de căutare explorate anterior în explorarea noastră dincolo de limitele inițiale.

Pentru această postare, ne concentrăm pe cum să analizăm și să vizualizăm rezultatele unui singur job HPO folosind strategia de căutare Bayesiană, care este probabil un bun punct de plecare.

Dacă urmați în caietul conectat, rețineți că trecem același estimator pe care l-am folosit pentru munca noastră unică de instruire XGBoost încorporată. Acest obiect de estimare acționează ca un șablon pentru noile locuri de muncă de formare pe care le creează AMT. AMT va varia apoi hiperparametrii în intervalele pe care le-am definit.

Specificând că dorim să ne maximizăm metrica obiectivă, validation:accuracy, îi spunem lui SageMaker AMT să caute aceste valori în jurnalele instanțelor de antrenament și să aleagă valorile hiperparametrului despre care consideră că vor maximiza valoarea de precizie a datelor noastre de validare. Am ales unul potrivit metrica obiectivă pentru XGBoost din documentația noastră.

În plus, putem profita de paralelizarea cu max_parallel_jobs. Acesta poate fi un instrument puternic, în special pentru strategiile ale căror studii sunt selectate independent, fără a lua în considerare (învățarea din) rezultatele studiilor anterioare. Vom explora aceste alte strategii și parametri în continuare în următoarea noastră postare. Pentru această postare, folosim Bayesian, care este o strategie implicită excelentă.

Definim si noi max_jobs pentru a defini câte încercări să ruleze în total. Simțiți-vă liber să vă abateți de la exemplul nostru și să utilizați un număr mai mic pentru a economisi bani.

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
}

Sunăm din nou fit(), la fel ca atunci când am lansat un singur job de formare mai devreme în postare. Dar de data aceasta pe obiectul tuner, nu pe obiectul estimator. Acest lucru începe munca de reglare și, la rândul său, AMT începe joburile de formare.

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

Următoarea diagramă extinde arhitectura noastră anterioară prin includerea HPO cu SageMaker AMT.

Prezentare generală a SageMaker Training și optimizarea hiperparametrilor cu SageMaker AMT

Vedem că jobul nostru HPO a fost trimis. În funcție de numărul de încercări, definit de n_jobs și nivelul de paralelizare, acest lucru poate dura ceva timp. Pentru exemplul nostru, poate dura până la 30 de minute pentru 50 de încercări cu doar un nivel de paralelizare de 3.

tuning job submitted: bayesian-221102-2053.

Când această lucrare de reglare este terminată, haideți să explorăm informațiile disponibile pe consola SageMaker.

Investigați lucrările AMT pe consolă

Să ne găsim jobul de reglare pe consola SageMaker alegând Pregătire în panoul de navigare și apoi Lucrări de reglare a hiperparametrilor. Aceasta ne oferă o listă a joburilor noastre AMT, așa cum se arată în următoarea captură de ecran. Aici ne găsim bayesian-221102-2053 de reglare și găsiți că acum este finalizată.

Vizualizarea consolă a paginii de lucrări de ajustare a hiperparametrului. Imaginea arată lista de lucrări de reglare, care conține 1 intrare de reglare

Să aruncăm o privire mai atentă asupra rezultatelor acestei lucrări HPO.

Am explorat extragerea rezultatelor în mod programatic în caiet. Mai întâi prin intermediul SageMaker Python SDK, care este o bibliotecă Python open-source de nivel superior, care oferă un API dedicat pentru SageMaker. Apoi prin Boto3, care ne oferă API-uri de nivel inferior pentru SageMaker și alte servicii AWS.

Folosind SDK-ul SageMaker Python, putem obține rezultatele lucrării noastre HPO:

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

Acest lucru ne-a permis să analizăm rezultatele fiecăreia dintre încercările noastre într-un Pandas DataFrame, așa cum se vede în următoarea captură de ecran.

Tabelul Pandas din Jupyter Notebook care arată rezultatele și metadatele din traseele rulate pentru jobul nostru HPO

Acum să schimbăm din nou perspectivele și să vedem cum arată rezultatele pe consola SageMaker. Apoi ne vom uita la vizualizările noastre personalizate.

Pe aceeași pagină, alegerea noastră bayesian-221102-2053 tuning job ne oferă o listă de încercări care au fost executate pentru jobul nostru de tuning. Fiecare probă HPO de aici este o muncă de formare SageMaker. Amintiți-vă mai devreme când am antrenat singur modelul nostru XGBoost și am investigat munca de formare în consola SageMaker. Putem face același lucru pentru încercările noastre aici.

Pe măsură ce investigăm încercările noastre, vedem asta bayesian-221102-2053-048-b59ec7b4 a creat cel mai performant model, cu o precizie de validare de aproximativ 89.815%. Să explorăm ce hiperparametri au condus la această performanță alegând Cel mai bun job de antrenament tab.

Vizualizare pe consolă a unei singure lucrări de reglare, afișând o listă de lucrări de instruire executate

Putem vedea o vedere detaliată a celor mai buni hiperparametri evaluați.

Vizualizare pe consolă a unei singure lucrări de reglare, afișând detaliile celei mai bune lucrări de antrenament

Putem vedea imediat ce valori de hiperparametru au condus la această performanță superioară. Totuși, vrem să știm mai multe. Poți ghici ce? Vedem asta alpha ia o valoare aproximativă de 0.052456 și, de asemenea, eta este setat la 0.433495. Acest lucru ne spune că aceste valori au funcționat bine, dar ne spune puțin despre spațiul hiperparametric în sine. De exemplu, ne-am putea întreba dacă 0.433495 pentru eta a fost cea mai mare valoare testată sau dacă există loc de creștere și îmbunătățire a modelului prin selectarea unor valori mai mari.

Pentru aceasta, trebuie să micșorăm și să luăm o vedere mult mai largă pentru a vedea cum au funcționat alte valori pentru hiperparametrii noștri. O modalitate de a analiza o mulțime de date simultan este să reprezentați pe o diagramă valorile hiperparametrilor din studiile noastre HPO. În acest fel, vedem cum au funcționat relativ aceste valori. În secțiunea următoare, extragem aceste date din SageMaker și le vizualizăm.

Vizualizați încercările noastre

SDK-ul SageMaker ne oferă datele pentru explorarea noastră, iar notebook-urile vă oferă o privire în acest sens. Dar există multe modalități de a o utiliza și vizualiza. În această postare, împărtășim un eșantion folosind Altair biblioteca de vizualizare statistică, pe care o folosim pentru a produce o imagine de ansamblu mai vizuală a încercărilor noastre. Acestea se găsesc în amtviz pachet, pe care îl oferim ca parte a eșantionului:

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

Puterea acestor vizualizări devine imediat evidentă atunci când trasăm acuratețea validării testelor noastre (axa y) în timp (axa x). Următorul grafic din stânga arată acuratețea validării în timp. Putem vedea clar că performanța modelului se îmbunătățește pe măsură ce rulăm mai multe încercări în timp. Acesta este un rezultat direct și așteptat al rulării HPO cu o strategie Bayesiană. În următoarea noastră postare, vedem cum se compară acest lucru cu alte strategii și observăm că acest lucru nu trebuie să fie cazul pentru toate strategiile.

Două diagrame care arată traseele HPO. Diagrama din stânga arată acuratețea validării în timp. Diagrama din dreapta arată diagrama de densitate pentru valorile de precizie de validare

După ce am analizat progresul general de-a lungul timpului, acum să ne uităm la spațiul nostru de hiperparametri.

Următoarele diagrame arată acuratețea validării pe axa y, fiecare diagramă fiind afișată max_depth, alpha, eta, și min_child_weight pe axa x, respectiv. Am trasat întreaga noastră lucrare HPO în fiecare diagramă. Fiecare punct este o singură încercare, iar fiecare diagramă conține toate cele 50 de încercări, dar separate pentru fiecare hiperparametru. Aceasta înseamnă că încercarea noastră cea mai performantă, #48, este reprezentată de exact un punct albastru în fiecare dintre aceste diagrame (pe care le-am evidențiat pentru dvs. în figura următoare). Putem compara vizual performanțele sale în contextul tuturor celorlalte 49 de încercări. Deci, să ne uităm îndeaproape.

Fascinant! Vedem imediat ce regiuni din intervalele noastre definite din spațiul nostru de hiperparametri sunt cele mai performante! Gândindu-mă la noi eta valoare, este clar acum că valorile de eșantionare mai apropiate de 0 au dat performanțe mai slabe, în timp ce mutarea mai aproape de granița noastră, 0.5, dă rezultate mai bune. Reversul pare să fie adevărat pentru alpha, și max_depth pare să aibă un set mai limitat de valori preferate. Uitandu-ma la max_depth, puteți vedea, de asemenea, cum utilizarea unei strategii bayesiene îi indică pe SageMaker AMT să eșantioneze mai des valorile pe care le-a învățat au funcționat bine în trecut.

Patru grafice care arată acuratețea validării pe axa y, fiecare diagramă indicând max_depth, alpha, eta, min_child_weight pe axa x, respectiv. Fiecare punct de date reprezintă un singur studiu HPO

Privind la noi eta valoare, ne-am putea întreba dacă merită să explorăm mai mult în dreapta, poate dincolo de 0.45? Continuă să scadă la o precizie mai scăzută sau avem nevoie de mai multe date aici? Această întrebare face parte din scopul rulării primei noastre lucrări HPO. Ne oferă perspective asupra zonelor din spațiul hiperparametric pe care ar trebui să le explorăm în continuare.

Dacă sunteți dornic să aflați mai multe și sunteți la fel de încântați ca și noi de această introducere a subiectului, atunci rămâneți pe fază pentru următoarea noastră postare, unde vom vorbi mai multe despre diferitele strategii HPO, le vom compara unele cu altele și exersați antrenamentul cu propriul nostru script Python.

A curăța

Pentru a evita costurile nedorite când ați terminat de experimentat cu HPO, trebuie să eliminați toate fișierele din compartimentul S3 cu prefixul amt-visualize-demo și, de asemenea, închideți resursele Studio.

Rulați următorul cod în blocnotes pentru a elimina toate fișierele S3 din această postare.

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

Dacă doriți să păstrați seturile de date sau artefactele modelului, puteți modifica prefixul din cod la amt-visualize-demo/data pentru a șterge doar datele sau amt-visualize-demo/output pentru a șterge doar artefactele modelului.

Concluzie

În această postare, am antrenat și ajustat un model folosind versiunea încorporată SageMaker a algoritmului XGBoost. Folosind HPO cu SageMaker AMT, am aflat despre hiperparametrii care funcționează bine pentru acest algoritm și set de date.

Am văzut mai multe moduri de a revizui rezultatele lucrării noastre de reglare a hiperparametrului. Începând cu extragerea hiperparametrilor celui mai bun studiu, am învățat, de asemenea, cum să obținem o înțelegere mai profundă a modului în care au progresat încercările noastre de-a lungul timpului și ce valori au hiperparametrii au impact.

Folosind consola SageMaker, am văzut, de asemenea, cum să ne aprofundăm în cursele individuale de antrenament și să le revizuim jurnalele.

Apoi am micșorat pentru a vedea toate încercările noastre împreună și a revizui performanța acestora în raport cu alte încercări și hiperparametri.

Am aflat că, pe baza observațiilor din fiecare încercare, am putut să navigăm în spațiul hiperparametrilor pentru a vedea că micile modificări ale valorilor hiperparametrilor noștri pot avea un impact enorm asupra performanței modelului nostru. Cu SageMaker AMT, putem rula optimizarea hiperparametrului pentru a găsi eficient valori bune de hiperparametru și pentru a maximiza performanța modelului.

În viitor, vom analiza diferite strategii HPO oferite de SageMaker AMT și cum să folosim propriul nostru cod de antrenament personalizat. Spuneți-ne în comentarii dacă aveți o întrebare sau doriți să sugerați o zonă pe care ar trebui să o acoperim în postările viitoare.

Până atunci, îți dorim ție și modelelor tale învățare și reglare fericită!

Referinte

Referințe bibliografice:

[1] Dua, D. și Graff, C. (2019). Depozitul UCI Machine Learning [http://archive.ics.uci.edu/ml]. Irvine, CA: Universitatea din California, Școala de Informații și Informatică.


Despre autori

Optimizați hiperparametrii cu Amazon SageMaker Automatic Model Tuning PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Andrei Ellul este arhitect de soluții cu Amazon Web Services. Lucrează cu întreprinderi mici și mijlocii din Germania. În afara serviciului, lui Andrew îi place să exploreze natura pe jos sau cu bicicleta.

Optimizați hiperparametrii cu Amazon SageMaker Automatic Model Tuning PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Elina Lesyk este un arhitect de soluții situat în Munchen. Accentul ei este pus pe clienții întreprinderi din industria serviciilor financiare. În timpul liber, Elinei îi place să învețe teoria chitarei în spaniolă, să învețe încrucișat și să meargă la alergat.

Optimizați hiperparametrii cu Amazon SageMaker Automatic Model Tuning PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Mariano Kamp este arhitect principal de soluții cu Amazon Web Services. Lucrează cu clienții de servicii financiare din Germania pe învățarea automată. În timpul liber, lui Mariano îi place drumețiile cu soția sa.

Timestamp-ul:

Mai mult de la Învățare automată AWS