Kako premagati strah in začeti uporabljati Azure Machine Learning

Poznam veliko podatkovnih znanstvenikov – in sam sem verjetno eden izmed njih –, ki delajo na GPU strojih, lokalnih ali virtualnih, ki se nahajajo v oblaku, bodisi prek Jupyter Notebooka bodisi prek neke vrste razvojnega okolja Python. Ko sem dve leti delal kot strokovnjak za razvijalce AI/ML, sem počel natanko to, medtem ko sem pripravljal podatke na običajnem strežniku ali delovni postaji in izvajal usposabljanje na virtualnem stroju z GPE v Azure.

Seveda smo že vsi slišali Strojno učenje Azure — posebna oblačna platforma za strojno učenje. Vendar po prvem pogledu na uvodni članki, se zdi, da vam bo Azure ML ustvaril več težav, kot jih rešil. Na primer, v zgoraj omenjeni vadnici se usposabljanje za Azure ML zažene iz Jupyterjevega zvezka, medtem ko je predlagano, da se skript za usposabljanje ustvari in uredi kot besedilna datoteka v eni od celic – medtem ko ne uporablja samodokončanja, sintakse poudarjanje in druge prednosti običajnega razvojnega okolja. Zaradi tega Azure ML že dolgo nismo resno uporabljali pri svojem delu.

Vendar sem pred kratkim odkril način, da začnem učinkovito uporabljati Azure ML pri svojem delu! Vas zanimajo podrobnosti?

Kako premagati strah in začeti uporabljati Azure Machine Learning

Glavna skrivnost je Razširitev Visual Studio Code za Azure ML. Omogoča vam, da razvijete skripte za usposabljanje neposredno v kodi VS, pri čemer v celoti izkoristite okolje – skript pa lahko celo zaženete lokalno in ga nato preprosto pošljete na usposabljanje v gruči Azure ML z nekaj kliki. Priročno, kajne?

Pri tem dobite naslednje prednosti uporabe Azure ML:

  • Večino časa lahko delate lokalno na svojem računalniku v priročnem IDE in GPU uporabljajte samo za usposabljanje modela. Hkrati se lahko skupina virov za usposabljanje samodejno prilagodi zahtevani obremenitvi in ​​z nastavitvijo najmanjšega števila vozlišč na 0 lahko samodejno zaženete virtualni stroj "na zahtevo" ob prisotnosti nalog za usposabljanje.
  • Lahko shranjevanje vseh učnih rezultatov na enem mestu, vključno z doseženimi metrikami in posledičnimi modeli - ni potrebe po oblikovanju neke vrste sistema ali naročila za shranjevanje vseh rezultatov.
  • V tem primeru Na istem projektu lahko dela več ljudi - uporabljajo lahko isto računalniško gručo, vsi poskusi bodo postavljeni v čakalno vrsto, prav tako pa lahko vidijo rezultate poskusov drug drugega. Eden takih scenarijev je uporaba Azure ML pri poučevanju globokega učenjako namesto da bi vsakemu študentu dali virtualni stroj z GPE, lahko ustvarite eno gručo, ki jo bodo vsi uporabljali centralno. Poleg tega lahko splošna tabela rezultatov z natančnostjo modela služi kot dober tekmovalni element.
  • Z Azure ML lahko preprosto izvedete vrsto poskusov, na primer za optimizacija hiperparametrov - to je mogoče narediti z nekaj vrsticami kode, ni potrebe po ročnem izvajanju serije poskusov.

Upam, da sem vas prepričal, da preizkusite Azure ML! Tukaj je opisano, kako začeti:

Delovni prostor Azure ML in portal Azure ML

Azure ML je organiziran okoli koncepta delovno območje — delovni prostor. V delovnem prostoru se lahko shranjujejo podatki, vanj se pošiljajo eksperimenti za usposabljanje, tam se shranjujejo tudi rezultati usposabljanja - nastale metrike in modeli. Skozi lahko vidite, kaj je znotraj delovnega prostora Portal Azure ML - in od tam lahko izvajate številne operacije, od nalaganja podatkov do spremljanja poskusov in uvajanja modelov.

Delovni prostor lahko ustvarite prek spletnega vmesnika Portal Azure (glej navodila po korakih) ali z uporabo ukazne vrstice Azure CLI (Navodila):

az extension add -n azure-cli-ml
az group create -n myazml -l northeurope
az ml workspace create -w myworkspace -g myazml

Nekateri so povezani tudi z delovnim prostorom računalniški viri (Izračunajte). Ko ustvarite skript za usposabljanje modela, lahko pošlji poskus v izvedbo v delovni prostor in določite računski cilj - v tem primeru bo skripta zapakirana, zagnana v želenem računalniškem okolju, nato pa bodo vsi rezultati poskusa shranjeni v delovnem prostoru za nadaljnjo analizo in uporabo.

Učna skripta za MNIST

Razmislite o klasičnem problemu prepoznavanje ročno napisanih številk z uporabo nabora podatkov MNIST. Podobno lahko v prihodnosti izvedete kateri koli od svojih skriptov za usposabljanje.

V našem skladišču je skript train_local.py, ki ga s pomočjo knjižnice SkLearn urimo najpreprostejši linearni regresijski model. Seveda razumem, da to ni najboljši način za rešitev težave - uporabljamo ga za primer, kot najpreprostejšega.

Skript najprej prenese podatke MNIST iz OpenML in nato uporabi razred LogisticRegression da usposobite model in nato natisnete dobljeno natančnost:

mnist = fetch_openml('mnist_784')
mnist['target'] = np.array([int(x) for x in mnist['target']])

shuffle_index = np.random.permutation(len(mist['data']))
X, y = mnist['data'][shuffle_index], mnist['target'][shuffle_index]

X_train, X_test, y_train, y_test = 
  train_test_split(X, y, test_size = 0.3, random_state = 42)

lr = LogisticRegression()
lr.fit(X_train, y_train)
y_hat = lr.predict(X_test)
acc = np.average(np.int32(y_hat == y_test))

print('Overall accuracy:', acc)

Skript lahko zaženete v računalniku in v nekaj sekundah dobite rezultat.

Zaženite skript v Azure ML

Če izvajamo skript za usposabljanje prek Azure ML, bomo imeli dve glavni prednosti:

  • Izvajanje usposabljanja na poljubnem računalniškem viru, ki je praviloma bolj produktivno kot lokalni računalnik. Hkrati bo Azure ML sam poskrbel za pakiranje našega skripta z vsemi datotekami iz trenutnega imenika v docker vsebnik, namestitev zahtevanih odvisnosti in pošiljanje v izvajanje.
  • Zapišite rezultate v en sam register znotraj delovnega prostora Azure ML. Če želite izkoristiti to funkcijo, moramo našemu skriptu dodati nekaj vrstic kode, da zabeležimo posledično natančnost:

from azureml.core.run import Run
...
try:    
    run = Run.get_submitted_run()
    run.log('accuracy', acc)
except:
    pass

Pokliče se ustrezna različica skripta train_universal.py (malo bolj zvit je, kot je zgoraj napisano, a ne dosti). Ta skript je mogoče izvajati lokalno in na oddaljenem računalniškem viru.

Če ga želite zagnati v Azure ML iz kode VS, morate narediti naslednje:

  1. Prepričajte se, da je razširitev Azure povezana z vašo naročnino. V meniju na levi izberite ikono Azure. Če niste povezani, se v spodnjem desnem kotu prikaže obvestilo (tukaj je), s klikom na katerega vstopite prek brskalnika. Lahko tudi kliknete Ctrl-Shift-P da pokličete ukazno vrstico VS Code in vnesite Prijava v Azure.

  2. Nato v razdelku Azure (ikona na levi) poiščite razdelek STROJNO UČENJE:

Kako premagati strah in začeti uporabljati Azure Machine Learning
Tukaj bi morali videti različne skupine predmetov znotraj delovnega prostora: računalniški viri, poskusi itd.

  1. Pojdite na seznam datotek, z desno miškino tipko kliknite skript train_universal.py in izberite Azure ML: Zaženi kot poskus v Azure.

Kako premagati strah in začeti uporabljati Azure Machine Learning

  1. Temu bo sledil niz pogovornih oken v območju ukazne vrstice kode VS: potrdite naročnino in delovni prostor Azure ML, ki ga uporabljate, in izberite Ustvari nov poskus:

Kako premagati strah in začeti uporabljati Azure Machine Learning
Kako premagati strah in začeti uporabljati Azure Machine Learning
Kako premagati strah in začeti uporabljati Azure Machine Learning

  1. Izberite ustvarjanje novega računalniškega vira Ustvari nov račun:

    • Izračunajte določa računalniški vir, na katerem bo potekalo usposabljanje. Izberete lahko lokalni računalnik ali gručo v oblaku AmlCompute. Priporočam ustvarjanje razširljive gruče strojev STANDARD_DS3_v2, z najmanjšim številom strojev 0 (in največ 1 ali več, odvisno od vaših apetitov). To lahko storite prek vmesnika VS Code ali predhodno prek Portal ML.

    Kako premagati strah in začeti uporabljati Azure Machine Learning

  2. Nato morate izbrati konfiguracijo Compute Configuration, ki določa parametre vsebnika, ustvarjenega za usposabljanje, zlasti vse potrebne knjižnice. V našem primeru, ker uporabljamo Scikit Learn, izberemo SkLearn, nato pa samo potrdite predlagani seznam knjižnic s pritiskom na Enter. Če uporabljate dodatne knjižnice, jih morate navesti tukaj.

    Kako premagati strah in začeti uporabljati Azure Machine Learning
    Kako premagati strah in začeti uporabljati Azure Machine Learning

  3. To bo odprlo okno z datoteko JSON, ki opisuje poskus. V njem lahko popravite nekatere parametre - na primer ime poskusa. Po tem kliknite na povezavo Predloži poskus prav znotraj te datoteke:

Kako premagati strah in začeti uporabljati Azure Machine Learning

  1. Po uspešni oddaji poskusa prek kode VS boste na desni strani območja za obvestila videli povezavo do Portal Azure ML, kjer lahko spremljate status in rezultate eksperimenta.

Kako premagati strah in začeti uporabljati Azure Machine Learning
Pozneje ga lahko vedno najdete v razdelku Poskusi Portal Azure ML, ali v razdelku Strojno učenje Azure na seznamu poskusov:

Kako premagati strah in začeti uporabljati Azure Machine Learning

  1. Če ste po tem naredili nekaj popravkov kode ali spremenili parametre, bo ponovni zagon eksperimenta veliko hitrejši in lažji. Z desnim klikom na datoteko boste videli nov element menija Ponovi zadnjo vožnjo - samo izberite in poskus se bo takoj začel:

Kako premagati strah in začeti uporabljati Azure Machine Learning
Rezultate meritev vseh zagonov lahko vedno najdete na portalu Azure ML, ni vam jih treba zapisovati.

Zdaj veste, da je izvajanje poskusov z Azure ML preprosto in neboleče, pri tem pa dobite številne prijetne prednosti.

Vidite pa lahko tudi slabosti. Zagon skripta je na primer trajal bistveno dlje. Seveda je za pakiranje skripta v vsebnik in njegovo namestitev na strežnik potreben čas. Če bi hkrati gručo zmanjšali na velikost 0 vozlišč, bo trajalo še več časa za zagon virtualnega stroja, vse to pa je zelo opazno, ko eksperimentiramo s preprostimi nalogami, kot je MNIST, ki jih rešimo v nekaj sekundah. . Vendar pa v resničnem življenju, ko usposabljanje traja več ur ali celo dni ali tednov, ta dodatni čas postane nepomemben, zlasti v ozadju veliko višje zmogljivosti, ki jo lahko zagotovi računalniška gruča.

Kaj sledi?

Upam, da boste po branju tega članka lahko in boste uporabljali Azure ML pri svojem delu za izvajanje skriptov, upravljanje računalniških virov in centralno shranjevanje rezultatov. Vendar pa vam lahko Azure ML prinese še več prednosti!

Znotraj delovnega prostora lahko shranjujete podatke in tako ustvarite centralizirano skladišče za vsa svoja opravila, do katerega lahko dostopate. Poleg tega lahko izvajate poskuse ne iz Visual Studio Code, ampak z uporabo API-ja - to je lahko še posebej uporabno, če morate izvesti optimizacijo hiperparametrov in morate večkrat zagnati skript z različnimi parametri. Poleg tega je v Azure ML vgrajena posebna tehnologija Hiperpogon, ki vam omogoča bolj zapleteno iskanje in optimizacijo hiperparametrov. O teh možnostih bom govoril v svoji naslednji objavi.

Koristni viri

Če želite izvedeti več o Azure ML, vam bodo morda v pomoč naslednji tečaji Microsoft Learn:

Vir: www.habr.com

Dodaj komentar