Kako prevladati strah i početi koristiti Azure Machine Learning

Poznajem mnoge Data Scientiste - a možda sam i ja jedan od njih - koji rade na GPU strojevima, lokalnim ili virtualnim, smještenim u oblaku, bilo putem Jupyter Notebooka ili putem neke vrste Python razvojnog okruženja. Radeći 2 godine kao stručni programer u AI/ML-u, radio sam upravo to, dok sam pripremao podatke na običnom poslužitelju ili radnoj stanici i vodio obuku na virtualnom stroju s GPU-om u Azureu.

Naravno, svi smo čuli za Strojno učenje Azure — posebna platforma u oblaku za strojno učenje. Međutim, nakon prvog pogleda na uvodni članci, čini se da će vam Azure ML stvoriti više problema nego što će riješiti. Na primjer, u gore navedenom primjeru obuke, obuka za Azure ML pokreće se iz Jupyter Notebooka, dok se sama skripta za obuku predlaže da se izradi i uredi kao tekstualna datoteka u jednoj od ćelija - bez upotrebe automatskog dovršavanja, isticanja sintakse i drugog prednosti normalnog razvojnog okruženja. Iz tog razloga dugo vremena nismo ozbiljno koristili Azure ML u svom radu.

Međutim, nedavno sam otkrio način da počnem učinkovito koristiti Azure ML u svom radu! Zanimaju vas detalji?

Kako prevladati strah i početi koristiti Azure Machine Learning

Glavna tajna je Visual Studio Code proširenje za Azure ML. Omogućuje vam da razvijete skripte za obuku izravno u VS Codeu, u potpunosti iskorištavajući prednosti okruženja - a možete čak i pokrenuti skriptu lokalno, a zatim je jednostavno poslati na obuku na klasteru Azure ML s nekoliko klikova. Zgodno, zar ne?

Pritom dobivate sljedeće prednosti korištenja Azure ML-a:

  • Većinu vremena možete raditi lokalno na svom računalu u prikladnom IDE-u i koristite GPU samo za obuku modela. U isto vrijeme, skup resursa za obuku može se automatski prilagoditi potrebnom opterećenju, a postavljanjem minimalnog broja čvorova na 0, možete automatski pokrenuti virtualni stroj "na zahtjev" ako postoje zadaci obuke.
  • Možete pohranite sve rezultate učenja na jedno mjesto, uključujući postignute metrike i rezultirajuće modele - nema potrebe osmišljavati nekakav sustav ili redoslijed za pohranjivanje svih rezultata.
  • U tom slučaju, Na jednom projektu može raditi više ljudi - mogu koristiti isti računalni klaster, svi će eksperimenti biti u redu čekanja, a također mogu vidjeti rezultate eksperimenata drugoga. Jedan takav scenarij je korištenje Azure ML-a u nastavi dubokog učenja, gdje umjesto da svakom studentu date virtualni stroj s GPU-om, možete stvoriti jedan klaster koji će svi koristiti centralno. Osim toga, opća tablica rezultata s točnošću modela može poslužiti kao dobar natjecateljski element.
  • Koristeći Azure ML, možete jednostavno pokrenuti niz eksperimenata, npr. hiperparametarska optimizacija - to se može učiniti s nekoliko redaka koda; nema potrebe za ručnim izvođenjem niza eksperimenata.

Nadam se da sam vas uvjerio da isprobate Azure ML! Evo kako započeti:

Azure ML Workspace i Azure ML Portal

Azure ML je organiziran oko koncepta radno područje - Radni prostor. Podaci se mogu pohraniti u radni prostor, u njega se mogu slati eksperimenti za obuku, a tamo se također pohranjuju rezultati obuke - rezultirajuće metrike i modeli. Možete vidjeti što se nalazi unutar radnog prostora pomoću Azure ML portal - i odatle možete izvoditi mnoge operacije, od učitavanja podataka do praćenja eksperimenata i postavljanja modela.

Radni prostor možete kreirati putem web sučelja Azurni portal (Vidi. upute korak po korak), ili pomoću naredbenog retka Azure CLI (instrukcije):

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

Postoje i neki povezani s radnim prostorom računalni resursi (Računati). Nakon što ste izradili skriptu za obuku modela, možete poslati eksperiment na izvršenje na radno područje i navedite cilj izračunavanja - u ovom slučaju, skripta će biti zapakirana, pokrenuta u željenom računalnom okruženju, a zatim će svi rezultati eksperimenta biti spremljeni u radni prostor za daljnju analizu i korištenje.

Skripta obuke za MNIST

Razmotrimo klasični problem prepoznavanje rukom pisanih znamenki koristeći skup podataka MNIST. Slično tome, u budućnosti ćete moći izvršiti bilo koju od svojih skripti za obuku.

Postoji skripta u našem repozitoriju train_local.py, koji trenira najjednostavniji model linearne regresije pomoću biblioteke SkLearn. Naravno, razumijem da ovo nije najbolji način rješavanja problema - koristimo ga kao primjer, kao najjednostavniji.

Skripta prvo preuzima MNIST podatke iz OpenML-a, a zatim koristi klasu LogisticRegression za obuku modela, a zatim ispisuje rezultirajuću toč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)

Možete pokrenuti skriptu na računalu i za nekoliko sekundi dobit ćete rezultat.

Pokretanje skripte u Azure ML

Ako skriptu za obuku pokrenemo putem Azure ML-a, imat ćemo dvije glavne prednosti:

  • Izvođenje obuke na proizvoljnom računalnom resursu, koji je obično produktivniji od lokalnog računala. U ovom slučaju, Azure ML sam će se pobrinuti za pakiranje naše skripte sa svim datotekama iz trenutnog direktorija u docker spremnik, instaliranje potrebnih ovisnosti i slanje na izvršenje.
  • Zapišite rezultate u jedan registar unutar Azure ML radnog prostora. Kako bismo iskoristili ovu značajku, moramo dodati nekoliko redaka koda u našu skriptu kako bismo zabilježili rezultirajuću preciznost:

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

Poziva se odgovarajuća verzija skripte train_universal.py (malo je lukavije dizajniran od gore opisanog, ali ne puno). Ova se skripta može pokrenuti i lokalno i na udaljenom računalnom resursu.

Da biste ga pokrenuli u Azure ML iz VS Code-a, trebate učiniti sljedeće:

  1. Provjerite je li Azure proširenje povezano s vašom pretplatom. Odaberite ikonu Azure s lijevog izbornika. Ako niste povezani, u donjem desnom kutu će se pojaviti obavijest (kao ovo), klikom na koji se možete prijaviti putem preglednika. Možete i kliknuti Ctrl-Shift-P da biste otvorili naredbeni redak VS Code i upišite Prijava u Azure.

  2. Nakon toga u odjeljku Azure (ikona s lijeve strane) pronađite odjeljak STROJNO UČENJE:

Kako prevladati strah i početi koristiti Azure Machine Learning
Ovdje biste trebali vidjeti različite grupe objekata unutar radnog prostora: računalni resursi, eksperimenti itd.

  1. Idite na popis datoteka, desnom tipkom miša kliknite skriptu train_universal.py i odaberite Azure ML: Pokreni kao eksperiment u Azureu.

Kako prevladati strah i početi koristiti Azure Machine Learning

  1. Nakon toga slijedi niz dijaloga u području naredbenog retka VS Code: potvrdite svoju pretplatu i Azure ML radni prostor i odaberite Stvorite novi eksperiment:

Kako prevladati strah i početi koristiti Azure Machine Learning
Kako prevladati strah i početi koristiti Azure Machine Learning
Kako prevladati strah i početi koristiti Azure Machine Learning

  1. Odaberite za stvaranje novog računalnog resursa Stvori novo računanje:

    • Računati određuje računalni resurs na kojem će se odvijati obuka. Možete odabrati lokalno računalo ili klaster oblaka AmlCompute. Preporučujem stvaranje skalabilnog klastera strojeva STANDARD_DS3_v2, s minimalnim brojem aparata 0 (a maksimalan može biti 1 ili više, ovisno o vašim apetitima). To se može učiniti putem VS Code sučelja ili prethodno putem ML portal.

    Kako prevladati strah i početi koristiti Azure Machine Learning

  2. Zatim trebate odabrati konfiguraciju Računalna konfiguracija, koji definira parametre spremnika stvorenog za obuku, posebno sve potrebne knjižnice. U našem slučaju, budući da koristimo Scikit Learn, odabiremo SkLearn, a zatim jednostavno potvrdite predloženi popis biblioteka pritiskom na Enter. Ako koristite dodatne biblioteke, one moraju biti navedene ovdje.

    Kako prevladati strah i početi koristiti Azure Machine Learning
    Kako prevladati strah i početi koristiti Azure Machine Learning

  3. Nakon toga otvorit će se prozor s JSON datotekom koja opisuje eksperiment. U njemu možete ispraviti neke parametre, na primjer, naziv eksperimenta. Nakon toga kliknite na poveznicu Pošaljite eksperiment točno unutar ove datoteke:

Kako prevladati strah i početi koristiti Azure Machine Learning

  1. Nakon uspješnog podnošenja eksperimenta kroz VS Code, u području obavijesti s desne strane vidjet ćete poveznicu na Azure ML portal, gdje možete pratiti status i rezultate eksperimenta.

Kako prevladati strah i početi koristiti Azure Machine Learning
Naknadno, uvijek ga možete pronaći u odjeljku eksperimenti Azure ML portal, ili u odjeljku Strojno učenje Azure na popisu eksperimenata:

Kako prevladati strah i početi koristiti Azure Machine Learning

  1. Ako ste naknadno napravili neke ispravke koda ili promijenili parametre, ponovno izvođenje eksperimenta bit će mnogo brže i lakše. Desnim klikom na datoteku vidjet ćete novu stavku izbornika Ponovi zadnje trčanje - samo ga odaberite i eksperiment će se odmah pokrenuti:

Kako prevladati strah i početi koristiti Azure Machine Learning
Uvijek možete pronaći rezultate metrike iz svih pokreta na portalu Azure ML; nema potrebe da ih bilježite.

Sada znate da je izvođenje eksperimenata pomoću Azure ML jednostavno, bezbolno i dolazi s nekim uzbudljivim prednostima.

Ali možda ste primijetili neke nedostatke. Na primjer, bilo je potrebno znatno više vremena za pokretanje skripte. Naravno, pakiranje skripte u spremnik i njeno postavljanje na poslužitelj zahtijeva vrijeme. Ako je klaster smanjen na veličinu od 0 čvorova, bit će potrebno još više vremena za pokretanje virtualnog stroja, a sve je to vrlo vidljivo kada eksperimentiramo na jednostavnim problemima poput MNIST-a, koji se rješavaju u nekoliko sekundi. Međutim, u stvarnom životu, kada obuka traje nekoliko sati, ili čak dana ili tjedana, to dodatno vrijeme postaje beznačajno, posebno u pozadini mnogo većih performansi koje može pružiti računalni klaster.

Što je sljedeće?

Nadam se da nakon čitanja ovog članka možete i hoćete koristiti Azure ML u svom radu za pokretanje skripti, upravljanje računalnim resursima i središnje pohranjivanje rezultata. Međutim, Azure ML vam može dati još više prednosti!

Možete pohraniti podatke unutar radnog prostora, stvarajući centralizirano spremište za sve svoje zadatke kojemu je lako pristupiti. Osim toga, možete izvoditi eksperimente pomoću API-ja umjesto koda Visual Studio - to može biti posebno korisno ako trebate izvršiti optimizaciju hiperparametara i trebate pokrenuti skriptu mnogo puta s različitim parametrima. Štoviše, posebna tehnologija ugrađena je u Azure ML hyperdrive, što omogućuje sofisticiranije pretraživanje i optimizaciju hiperparametara. Govorit ću o tim mogućnostima u sljedećem postu.

Korisni resursi

Da biste saznali više o Azure ML-u, možda će vam biti korisni sljedeći Microsoft Learn tečajevi:

Izvor: www.habr.com

Dodajte komentar