Kako pobijediti strah i početi koristiti Azure Machine Learning

Poznajem mnoge Data Scientiste - a vjerovatno sam i sam jedan od njih - koji rade na GPU mašinama, lokalnim ili virtuelnim, lociranim u oblaku, bilo kroz Jupyter Notebook ili kroz neku vrstu Python razvojnog okruženja. Radeći 2 godine kao stručni AI/ML programer, radio sam upravo to, dok sam pripremao podatke na običnom serveru ili radnoj stanici i izvodio obuku na virtuelnoj mašini sa GPU-om u Azure-u.

Naravno, svi smo čuli za to Azure mašinsko učenje — posebna cloud platforma za mašinsko učenje. Međutim, nakon prvog pogleda na uvodni članci, čini se da će vam Azure ML stvoriti više problema nego što ih rješava. Na primjer, u gore spomenutom tutorijalu, obuka o Azure ML-u se pokreće iz Jupyter Notebook-a, dok se sama skripta za obuku predlaže da se kreira i uredi kao tekstualni fajl u jednoj od ćelija - bez korištenja automatskog dovršavanja, sintakse isticanje i druge prednosti normalnog razvojnog okruženja. Iz tog razloga, Azure ML već duže vrijeme nismo ozbiljno koristili u svom radu.

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

Kako pobijediti strah i početi koristiti Azure Machine Learning

Glavna tajna je Visual Studio Code ekstenzija za Azure ML. Omogućava vam da razvijete skripte za obuku direktno u VS Code-u, koristeći punu prednost okruženja - i čak možete pokrenuti skriptu lokalno, a zatim je jednostavno poslati na obuku u Azure ML klaster sa nekoliko klikova. Zgodno, zar ne?

Čineći to, dobijate sljedeće prednosti korištenja Azure ML-a:

  • Većinu vremena možete raditi lokalno na svom stroju u prikladnom IDE-u i koristite GPU samo za obuku modela. Istovremeno, skup resursa za obuku može se automatski prilagoditi potrebnom opterećenju, a postavljanjem minimalnog broja čvorova na 0, možete automatski pokrenuti virtuelnu mašinu "na zahtjev" u prisustvu zadataka obuke.
  • vas može pohraniti sve ishode učenja na jednom mjestu, uključujući postignute metrike i rezultirajuće modele - nema potrebe smišljati nekakav sistem ili red za pohranjivanje svih rezultata.
  • tako Na istom projektu može raditi više ljudi - mogu koristiti isti računarski klaster, svi eksperimenti će biti stavljeni u red, a mogu vidjeti i rezultate eksperimenata jedni drugih. Jedan takav scenario je korištenje Azure ML-a u podučavanju dubokog učenjakada umjesto da svakom učeniku date virtuelnu mašinu sa GPU-om, možete kreirati jedan klaster koji će svi koristiti centralno. Pored toga, opšta tabela rezultata sa preciznošću modela može poslužiti kao dobar konkurentski element.
  • Uz Azure ML, lako možete provesti niz eksperimenata, na primjer, za optimizacija hiperparametara - ovo se može učiniti s nekoliko linija koda, nema potrebe za ručnim izvođenjem niza eksperimenata.

Nadam se da sam vas uvjerio da isprobate Azure ML! Evo kako da počnete:

Azure ML radni prostor i Azure ML portal

Azure ML je organiziran oko koncepta radni prostor — radni prostor. Podaci se mogu pohraniti u radni prostor, eksperimenti se šalju u njega na obuku, tamo se pohranjuju i rezultati obuke - rezultirajuća metrika i modeli. Kroz radni prostor možete vidjeti šta se nalazi unutar radnog prostora Azure ML portal - i odatle možete izvoditi mnoge operacije, u rasponu od učitavanja podataka do praćenja eksperimenata i implementacije modela.

Možete kreirati radni prostor putem web sučelja Azure Portal (vidi par. upute korak po korak), ili pomoću Azure CLI komandne linije (uputstva):

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

Neki su također povezani s radnim prostorom računarski resursi (Izračunajte). Kada kreirate skriptu za obuku modela, možete poslati eksperiment na izvođenje na radni prostor i navedite izračunaj cilj - u ovom slučaju, skripta će biti upakovana, pokrenuta u željenom računarskom okruženju, a zatim će svi rezultati eksperimenta biti sačuvani u radnom prostoru za dalju analizu i upotrebu.

Skripta za učenje za MNIST

Razmotrimo klasični problem prepoznavanje rukom pisanih cifara koristeći MNIST skup podataka. Slično tome, u budućnosti možete pokrenuti bilo koju skriptu za obuku.

U našem spremištu postoji skripta train_local.py, kojim treniramo najjednostavniji model linearne regresije koristeći SkLearn biblioteku. Naravno, razumijem da ovo nije najbolji način rješavanja problema - koristimo ga kao primjer, kao najlakši.

Skripta prvo preuzima MNIST podatke iz OpenML-a, a zatim koristi klasu LogisticRegression da obučite model, a zatim ispišite rezultujuću tač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 svom računaru i dobiti rezultat za nekoliko sekundi.

Pokrenite skriptu u Azure ML-u

Ako pokrenemo skriptu za obuku kroz Azure ML, imat ćemo dvije glavne prednosti:

  • Izvođenje obuke na proizvoljnom računarskom resursu, koji je po pravilu produktivniji od lokalnog računara. Istovremeno, sam Azure ML će se pobrinuti za pakovanje naše skripte sa svim datotekama iz trenutnog direktorija u docker kontejner, instaliranje potrebnih zavisnosti i slanje na izvršenje.
  • Zapišite rezultate u jedan registar unutar Azure ML radnog prostora. Da bismo iskoristili ovu mogućnost, moramo dodati nekoliko linija koda našoj skripti kako bismo zabilježili rezultirajuću točnost:

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 lukaviji nego što je gore napisano, ali ne mnogo). Ova skripta se može pokrenuti i lokalno i na udaljenom računarskom resursu.

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

  1. Provjerite je li proširenje Azure povezano s vašom pretplatom. Odaberite Azure ikonu iz izbornika s lijeve strane. Ako niste povezani, u donjem desnom uglu će se pojaviti obaveštenje (Volim ovo), klikom na koji možete ući preko pretraživača. Također možete kliknuti Ctrl-Shift-P da pozovete komandnu liniju VS Code i otkucate Azure Prijava.

  2. Nakon toga, u odeljku Azure (ikona na lijevoj strani), pronađite odjeljak UČENJE MAŠINA:

Kako pobijediti strah i početi koristiti Azure Machine Learning
Ovdje biste trebali vidjeti različite grupe objekata unutar radnog prostora: računske resurse, eksperimente itd.

  1. Idite na listu datoteka, kliknite desnim tasterom miša na skriptu train_universal.py i odaberite Azure ML: Pokreni kao eksperiment u Azureu.

Kako pobijediti strah i početi koristiti Azure Machine Learning

  1. Ovo će biti praćeno nizom dijaloga u oblasti komandne linije VS Code: potvrdite pretplatu i Azure ML radni prostor koji koristite i izaberite Kreirajte novi eksperiment:

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

  1. Odaberite kreiranje novog računarskog resursa Kreirajte novi Compute:

    • Izračunajte određuje računarski resurs na kojem će se obuka odvijati. Možete odabrati lokalni računar ili klaster u oblaku AmlCompute. Preporučujem kreiranje skalabilnog klastera mašina STANDARD_DS3_v2, sa minimalnim brojem mašina od 0 (a maksimalno 1 ili više, ovisno o vašim apetitima). Ovo se može uraditi preko VS Code interfejsa, ili prethodno putem ML Portal.

    Kako pobijediti strah i početi koristiti Azure Machine Learning

  2. Zatim morate odabrati konfiguraciju Compute Configuration, koji definiše parametre kontejnera kreiranog za obuku, posebno sve potrebne biblioteke. U našem slučaju, pošto koristimo Scikit Learn, mi biramo SkLearn, a zatim samo potvrdite predloženu listu biblioteka pritiskom na Enter. Ako koristite dodatne biblioteke, ovdje ih morate navesti.

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

  3. Ovo će otvoriti prozor sa JSON datotekom koja opisuje eksperiment. U njemu možete ispraviti neke parametre - na primjer, naziv eksperimenta. Nakon toga kliknite na link Pošalji eksperiment direktno unutar ovog fajla:

Kako pobijediti strah i početi koristiti Azure Machine Learning

  1. Nakon uspješnog podnošenja eksperimenta putem VS Code-a, na desnoj strani polja za obavještenja vidjet ćete vezu do Azure ML Portal, gdje možete pratiti status i rezultate eksperimenta.

Kako pobijediti strah i početi koristiti Azure Machine Learning
Nakon toga, uvijek ga možete pronaći u odjeljku Eksperimenti Azure ML Portal, ili u odjeljku Azure mašinsko učenje na listi eksperimenata:

Kako pobijediti strah i početi koristiti Azure Machine Learning

  1. Ako ste nakon toga izvršili neke ispravke koda ili promijenili parametre, ponovno pokretanje eksperimenta će biti mnogo brže i lakše. Desnim klikom na datoteku vidjet ćete novu stavku menija Ponovite zadnju vožnju - samo ga odaberite i eksperiment će odmah početi:

Kako pobijediti strah i početi koristiti Azure Machine Learning
Na Azure ML portalu uvijek možete pronaći rezultate metrike sa svih pokretanja, nema potrebe da ih zapisujete.

Sada znate da je izvođenje eksperimenata s Azure ML jednostavno i bezbolno, a time ćete dobiti niz lijepih prednosti.

Ali možete vidjeti i nedostatke. Na primjer, bilo je potrebno znatno više vremena za pokretanje skripte. Naravno, za pakovanje skripte u kontejner i njeno postavljanje na server treba vremena. Ako je u isto vrijeme klaster isječen na veličinu od 0 čvorova, bit će potrebno još više vremena za pokretanje virtualne mašine, a sve je to vrlo uočljivo kada eksperimentišemo na jednostavnim zadacima poput MNIST-a, koji se rješavaju za nekoliko sekundi . Međutim, u stvarnom životu, kada obuka traje nekoliko sati, ili čak dana ili sedmica, ovo dodatno vrijeme postaje beznačajno, posebno u pozadini mnogo većih performansi koje računarski klaster može pružiti.

Što je sljedeće?

Nadam se da nakon čitanja ovog članka možete i da ćete koristiti Azure ML u svom radu za pokretanje skripti, upravljanje računarskim resursima i centralno skladištenje rezultata. Međutim, Azure ML vam može pružiti još više prednosti!

Unutar radnog prostora možete pohraniti podatke, stvarajući tako centralizirano spremište za sve svoje zadatke, kojem je lako pristupiti. Osim toga, možete izvoditi eksperimente ne iz Visual Studio Code-a, već koristeći API - ovo može biti posebno korisno ako trebate izvršiti optimizaciju hiperparametara i trebate pokrenuti skriptu mnogo puta s različitim parametrima. Štaviše, posebna tehnologija je ugrađena u Azure ML hiper pogon, što vam omogućava da izvršite složeniju pretragu i optimizaciju hiperparametara. O ovim mogućnostima ću govoriti u svom sljedećem postu.

Korisni resursi

Da biste saznali više o Azure ML-u, možda će vam pomoći sljedeći Microsoft Learn kursevi:

izvor: www.habr.com

Dodajte komentar