Kaip įveikti baimę ir pradėti naudotis Azure Machine Learning

Pažįstu daug duomenų mokslininkų (ir tikriausiai pats esu vienas iš jų), kurie dirba su vietiniais arba virtualiais GPU įrenginiais, esančiais debesyje, naudodami Jupyter Notebook arba tam tikrą Python kūrimo aplinką. Dirbdamas 2 metus kaip ekspertas AI/ML kūrėjas, aš padariau būtent tai, ruošdamas duomenis įprastame serveryje ar darbo vietoje ir vedęs mokymus virtualioje mašinoje su GPU Azure.

Žinoma, visi esame apie tai girdėję „Azure Machine Learning“ - speciali debesų platforma mašininiam mokymuisi. Tačiau iš pirmo žvilgsnio į įžanginiai straipsniai, atrodo, kad Azure ML sukurs daugiau problemų nei išspręs. Pavyzdžiui, aukščiau paminėtoje pamokoje mokymas apie Azure ML paleidžiamas iš Jupyter Notepad, o patį mokymo scenarijų siūloma sukurti ir redaguoti kaip tekstinį failą viename iš langelių – nenaudojant automatinio užbaigimo, sintaksės. išryškinimas ir kiti įprastos vystymosi aplinkos pranašumai. Dėl šios priežasties mes jau seniai rimtai savo darbe nenaudojome Azure ML.

Tačiau neseniai atradau būdą, kaip pradėti efektyviai naudoti Azure ML savo darbe! Domina detalės?

Kaip įveikti baimę ir pradėti naudotis Azure Machine Learning

Pagrindinė paslaptis yra „Visual Studio“ kodo plėtinys, skirtas „Azure ML“.. Tai leidžia kurti mokymo scenarijus tiesiai „VS Code“, išnaudojant visus aplinkos privalumus – netgi galite paleisti scenarijų vietoje ir tiesiog keliais paspaudimais išsiųsti jį į mokymą „Azure ML“ klasteryje. Patogu, ar ne?

Tai darydami, naudodamiesi „Azure ML“ gausite šiuos pranašumus:

  • Didžiąją laiko dalį galite dirbti vietoje savo kompiuteryje, patogioje IDE ir naudokite GPU tik modelio mokymui. Tuo pačiu metu treniruočių resursų telkinys gali automatiškai prisitaikyti prie reikiamos apkrovos, o nustačius minimalų mazgų skaičių iki 0, galite automatiškai paleisti virtualią mašiną „pagal pareikalavimą“, esant mokymo užduotims.
  • Jums gali saugoti visus mokymosi rezultatus vienoje vietoje, įskaitant pasiektus rodiklius ir gautus modelius – nereikia sugalvoti kokios nors sistemos ar užsakymo saugoti visus rezultatus.
  • Šiuo atveju, Prie to paties projekto gali dirbti keli žmonės - jie gali naudoti tą patį skaičiavimo klasterį, visi eksperimentai bus sustatyti į eilę, taip pat gali matyti vienas kito eksperimentų rezultatus. Vienas iš tokių scenarijų yra naudojant Azure ML mokant gilaus mokymosikai užuot kiekvienam mokiniui suteikę virtualią mašiną su GPU, galite sukurti vieną klasterį, kurį visi naudos centralizuotai. Be to, bendra rezultatų lentelė su modelio tikslumu gali būti geras konkurencinis elementas.
  • Naudodami Azure ML galite lengvai atlikti eksperimentų seriją, pvz hiperparametrų optimizavimas - tai galima padaryti naudojant kelias kodo eilutes, nereikia atlikti eksperimentų serijos rankiniu būdu.

Tikiuosi, kad įtikinau jus išbandyti Azure ML! Štai kaip pradėti:

Azure ML Workspace ir Azure ML portalas

„Azure ML“ yra sukurta pagal koncepciją darbo zona - darbo vieta. Darbo erdvėje gali būti saugomi duomenys, į ją siunčiami eksperimentai mokymui, ten taip pat saugomi treniruočių rezultatai – gautos metrikos ir modeliai. Galite pamatyti, kas yra darbo erdvės viduje Azure ML portalas - ir iš ten galite atlikti daugybę operacijų, pradedant duomenų įkėlimu ir baigiant eksperimentų stebėjimu ir modelių diegimu.

Galite sukurti darbo sritį naudodami žiniatinklio sąsają Azure portalas (cm. žingsnis po žingsnio instrukcijas) arba naudojant Azure CLI komandų eilutę (instrukcijos):

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

Taip pat kai kurie yra susiję su darbo vieta skaičiavimo ištekliai (Apskaičiuoti). Sukūrę scenarijų modeliui išmokyti, galite siųsti eksperimentą vykdyti į darbo sritį ir nurodykite apskaičiuoti tikslą - tokiu atveju scenarijus bus supakuotas, paleistas norimoje skaičiavimo aplinkoje, o tada visi eksperimento rezultatai bus išsaugoti darbo srityje tolimesnei analizei ir naudojimui.

MNIST mokymosi scenarijus

Apsvarstykite klasikinę problemą ranka rašytų skaitmenų atpažinimas naudojant MNIST duomenų rinkinį. Panašiai ateityje galėsite paleisti bet kurį mokymo scenarijų.

Mūsų saugykloje yra scenarijus train_local.py, kurį mokome paprasčiausią tiesinės regresijos modelį naudodami SkLearn biblioteką. Žinoma, aš suprantu, kad tai nėra pats geriausias būdas išspręsti problemą – naudojame jį kaip pavyzdį, kaip paprasčiausią.

Scenarijus pirmiausia atsisiunčia MNIST duomenis iš OpenML ir tada naudoja klasę LogisticRegression treniruoti modelį ir išspausdinti gautą tikslumą:

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)

Galite paleisti scenarijų savo kompiuteryje ir gauti rezultatą per kelias sekundes.

Vykdykite scenarijų „Azure ML“.

Jei vykdysime mokymo scenarijų per Azure ML, turėsime du pagrindinius pranašumus:

  • Mokymų vykdymas savavališkais skaičiavimo ištekliais, kurie, kaip taisyklė, yra produktyvesni nei vietinis kompiuteris. Tuo pačiu metu „Azure ML“ pati pasirūpins mūsų scenarijaus su visais failais iš dabartinio katalogo supakavimu į dokerio konteinerį, įdiegs reikiamas priklausomybes ir išsiųs jį vykdyti.
  • Įrašykite rezultatus į vieną registrą Azure ML darbo srityje. Norėdami pasinaudoti šia funkcija, prie scenarijaus turime pridėti keletą kodo eilučių, kad įrašytume gautą tikslumą:

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

Iškviečiama atitinkama scenarijaus versija train_universal.py (jis šiek tiek gudresnis, nei parašyta aukščiau, bet nelabai). Šis scenarijus gali būti paleistas tiek vietoje, tiek nuotoliniu būdu.

Norėdami jį paleisti Azure ML iš VS kodo, turite atlikti šiuos veiksmus:

  1. Įsitikinkite, kad „Azure“ plėtinys prijungtas prie jūsų prenumeratos. Kairėje esančiame meniu pasirinkite Azure piktogramą. Jei nesate prisijungę, apatiniame dešiniajame kampe pasirodys pranešimas (kaip šitas), spustelėję galite įeiti per naršyklę. Taip pat galite spustelėti Ctrl-Shift-P Norėdami iškviesti VS kodo komandinę eilutę, ir įveskite Azure Prisijungti.

  2. Po to „Azure“ skiltyje (piktograma kairėje) raskite skyrių MAŠINŲ MOKYMASIS:

Kaip įveikti baimę ir pradėti naudotis Azure Machine Learning
Čia turėtumėte matyti įvairias darbo srities objektų grupes: skaičiavimo išteklius, eksperimentus ir kt.

  1. Eikite į failų sąrašą, dešiniuoju pelės mygtuku spustelėkite scenarijų train_universal.py ir pasirinkite Azure ML: vykdykite kaip eksperimentą „Azure“..

Kaip įveikti baimę ir pradėti naudotis Azure Machine Learning

  1. Po to bus rodomi dialogo langai „VS Code“ komandų eilutės srityje: patvirtinkite prenumeratą ir „Azure ML“ darbo sritį, kurią naudojate, ir pasirinkite Sukurti naują eksperimentą:

Kaip įveikti baimę ir pradėti naudotis Azure Machine Learning
Kaip įveikti baimę ir pradėti naudotis Azure Machine Learning
Kaip įveikti baimę ir pradėti naudotis Azure Machine Learning

  1. Pasirinkite sukurti naują skaičiavimo šaltinį Sukurti naują skaičiavimą:

    • Apskaičiuoti nustato skaičiavimo išteklius, kuriuose vyks mokymas. Galite pasirinkti vietinį kompiuterį arba „AmlCompute“ debesies klasterį. Rekomenduoju sukurti keičiamo dydžio mašinų grupę STANDARD_DS3_v2, su minimaliu 0 mašinų skaičiumi (ir daugiausiai 1 ar daugiau, priklausomai nuo jūsų apetito). Tai galima padaryti per VS kodo sąsają arba anksčiau per ML portalas.

    Kaip įveikti baimę ir pradėti naudotis Azure Machine Learning

  2. Tada turite pasirinkti konfigūraciją Apskaičiuoti konfigūraciją, kuriame apibrėžiami mokymams sukurto konteinerio parametrai, visų pirma visos reikalingos bibliotekos. Mūsų atveju, kadangi naudojame Scikit Learn, pasirenkame SkLearn, tada tiesiog patvirtinkite siūlomą bibliotekų sąrašą paspausdami Enter. Jei naudojate papildomas bibliotekas, jas reikia nurodyti čia.

    Kaip įveikti baimę ir pradėti naudotis Azure Machine Learning
    Kaip įveikti baimę ir pradėti naudotis Azure Machine Learning

  3. Bus atidarytas langas su JSON failu, aprašančiu eksperimentą. Jame galite pataisyti kai kuriuos parametrus – pavyzdžiui, eksperimento pavadinimą. Po to spustelėkite nuorodą Pateikti eksperimentą tiesiai šiame faile:

Kaip įveikti baimę ir pradėti naudotis Azure Machine Learning

  1. Sėkmingai pateikę eksperimentą naudodami VS kodą, dešinėje pranešimų srities pusėje pamatysite nuorodą į Azure ML portalas, kur galite sekti eksperimento būseną ir rezultatus.

Kaip įveikti baimę ir pradėti naudotis Azure Machine Learning
Vėliau visada galite jį rasti skyriuje Eksperimentai Azure ML portalas, arba skiltyje „Azure Machine Learning“ eksperimentų sąraše:

Kaip įveikti baimę ir pradėti naudotis Azure Machine Learning

  1. Jei po to šiek tiek pakoregavote kodą ar pakeitėte parametrus, eksperimentą pradėti iš naujo bus daug greičiau ir lengviau. Dešiniuoju pelės mygtuku spustelėję failą pamatysite naują meniu elementą Pakartokite paskutinį važiavimą - tiesiog pasirinkite jį ir eksperimentas iškart prasidės:

Kaip įveikti baimę ir pradėti naudotis Azure Machine Learning
Visų paleidimų metrikų rezultatus visada galite rasti Azure ML portale, nereikia jų užsirašyti.

Dabar žinote, kad eksperimentų vykdymas naudojant Azure ML yra paprastas ir neskausmingas, o tai darydami gausite daug malonių pranašumų.

Bet jūs taip pat galite pamatyti trūkumus. Pavyzdžiui, scenarijų paleisti užtruko žymiai ilgiau. Žinoma, scenarijaus supakavimas į konteinerį ir įdiegimas serveryje užtrunka. Jei tuo pačiu metu klasteris buvo iškirptas iki 0 mazgų dydžio, virtualios mašinos paleidimas užtruks dar daugiau laiko, ir visa tai labai pastebima eksperimentuojant su paprastomis užduotimis, tokiomis kaip MNIST, kurios išsprendžiamos per kelias sekundes. . Tačiau realiame gyvenime, kai mokymai trunka kelias valandas, net dienas ar savaites, šis papildomas laikas tampa nereikšmingas, ypač atsižvelgiant į daug didesnį našumą, kurį gali suteikti skaičiavimo klasteris.

Kas toliau?

Tikiuosi, kad perskaitę šį straipsnį galėsite ir naudosite Azure ML savo darbe paleisti scenarijus, valdyti skaičiavimo išteklius ir saugoti rezultatus centralizuotai. Tačiau Azure ML gali suteikti jums dar daugiau naudos!

Darbo srityje galite saugoti duomenis ir taip sukurti centralizuotą visų užduočių saugyklą, kurią lengva pasiekti. Be to, eksperimentus galite vykdyti ne iš Visual Studio Code, o naudodami API – tai gali būti ypač naudinga, jei reikia atlikti hiperparametrų optimizavimą ir daug kartų paleisti scenarijų su skirtingais parametrais. Be to, „Azure ML“ integruota speciali technologija „Hyperdrive“, kuri leidžia atlikti sudėtingesnę paiešką ir optimizuoti hiperparametrus. Apie šias galimybes kalbėsiu kitame savo įraše.

Naudingi ištekliai

Norėdami sužinoti daugiau apie Azure ML, jums gali būti naudingi šie Microsoft Learn kursai:

Šaltinis: www.habr.com

Добавить комментарий