KÄ pÄrvarÄt bailes un sÄkt izmantot Azure Machine Learning
Es pazÄ«stu daudzus datu zinÄtniekus ā un, iespÄjams, arÄ« pats esmu viens no viÅiem ā, kuri strÄdÄ ar GPU iekÄrtÄm, lokÄlÄm vai virtuÄlajÄm, kas atrodas mÄkonÄ«, izmantojot Jupyter piezÄ«mjdatoru vai kÄdu Python izstrÄdes vidi. StrÄdÄjot 2 gadus kÄ eksperts AI/ML izstrÄdÄtÄjs, es darÄ«ju tieÅ”i to, sagatavojot datus parastajÄ serverÄ« vai darbstacijÄ un vadot apmÄcÄ«bu virtuÄlajÄ maŔīnÄ ar GPU Azure.
Protams, mÄs visi esam dzirdÄjuÅ”i par Azure maŔīnmÄcÄ«Å”anÄs ā Ä«paÅ”a mÄkoÅa platforma maŔīnmÄcÄ«bai. TomÄr pÄc pirmÄ acu uzmetiena plkst ievadraksti, Ŕķiet, ka Azure ML radÄ«s jums vairÄk problÄmu, nekÄ atrisinÄs. PiemÄram, iepriekÅ” minÄtajÄ apmÄcÄ«bÄ apmÄcÄ«ba par Azure ML tiek palaista no Jupyter piezÄ«mjdatora, savukÄrt paÅ”u apmÄcÄ«bas skriptu ir ierosinÄts izveidot un rediÄ£Ät kÄ teksta failu vienÄ no ŔūnÄm, neizmantojot automÄtisko pabeigÅ”anu, sintaksi. izcelÅ”ana un citas normÄlas attÄ«stÄ«bas vides priekÅ”rocÄ«bas. Å Ä« iemesla dÄļ mÄs ilgu laiku neesam nopietni izmantojuÅ”i Azure ML savÄ darbÄ.
TomÄr nesen atklÄju veidu, kÄ savÄ darbÄ sÄkt efektÄ«vi izmantot Azure ML! InteresÄ detaļas?
Galvenais noslÄpums ir Visual Studio koda paplaÅ”inÄjums Azure ML. Tas ļauj izstrÄdÄt apmÄcÄ«bas skriptus tieÅ”i VS Code, pilnÄ«bÄ izmantojot vides priekÅ”rocÄ«bas, un jÅ«s pat varat palaist skriptu lokÄli un pÄc tam vienkÄrÅ”i nosÅ«tÄ«t to apmÄcÄ«bai Azure ML klasterÄ« ar dažiem klikŔķiem. Ärti, vai ne?
To darot, jÅ«s saÅemat Å”Ädas priekÅ”rocÄ«bas, izmantojot Azure ML:
LielÄko daļu laika varat strÄdÄt lokÄli savÄ datorÄ ÄrtÄ IDE un izmantojiet GPU tikai modeļu apmÄcÄ«bai. TajÄ paÅ”Ä laikÄ apmÄcÄ«bu resursu kopums var automÄtiski pielÄgoties vajadzÄ«gajai slodzei, un, iestatot minimÄlo mezglu skaitu uz 0, jÅ«s varat automÄtiski palaist virtuÄlo maŔīnu "pÄc pieprasÄ«juma" apmÄcÄ«bas uzdevumu klÄtbÅ«tnÄ.
jÅ«s varat uzglabÄt visus mÄcÄ«bu rezultÄtus vienuviet, ieskaitot sasniegtos rÄdÄ«tÄjus un iegÅ«tos modeļus - nav jÄizdomÄ kaut kÄda sistÄma vai pasÅ«tÄ«jums visu rezultÄtu glabÄÅ”anai.
Å ajÄ gadÄ«jumÄ, Pie viena projekta var strÄdÄt vairÄki cilvÄki - viÅi var izmantot vienu un to paÅ”u skaitļoÅ”anas klasteri, visi eksperimenti tiks sastÄdÄ«ti rindÄ, kÄ arÄ« viÅi var redzÄt viens otra eksperimentu rezultÄtus. Viens no Å”Ädiem scenÄrijiem ir izmantojot Azure ML dziļÄs mÄcÄ«Å”anÄs mÄcÄ«Å”anaikad tÄ vietÄ, lai katram studentam pieŔķirtu virtuÄlo maŔīnu ar GPU, varat izveidot vienu klasteru, ko visi izmantos centralizÄti. TurklÄt vispÄrÄ«ga rezultÄtu tabula ar modeļa precizitÄti var kalpot kÄ labs konkurences elements.
Izmantojot Azure ML, varat viegli veikt virkni eksperimentu, piemÄram, lai hiperparametru optimizÄcija - to var izdarÄ«t ar dažÄm koda rindÄm, nav nepiecieÅ”ams manuÄli veikt eksperimentu sÄriju.
KlonÄjiet repozitoriju https://github.com/CloudAdvocacy/AzureMLStarter - tajÄ ir daži demonstrÄcijas kodi, lai apmÄcÄ«tu ar roku rakstÄ«tu ciparu atpazÄ«Å”anas modeli MNIST datu kopÄ.
Atveriet klonÄto repozitoriju programmÄ Visual Studio Code.
Turpini lasīt!
Azure ML darbvieta un Azure ML portÄls
Azure ML ir sakÄrtots atbilstoÅ”i koncepcijai darba zona - darba vieta. Datus var glabÄt darbvietÄ, uz to tiek nosÅ«tÄ«ti eksperimenti apmÄcÄ«bai, tur tiek glabÄti arÄ« treniÅu rezultÄti - iegÅ«tie rÄdÄ«tÄji un modeļi. Caur to var redzÄt, kas atrodas darbvietÄ Azure ML portÄls - un no turienes jÅ«s varat veikt daudzas darbÄ«bas, sÄkot no datu ielÄdes lÄ«dz eksperimentu uzraudzÄ«bai un modeļu izvietoÅ”anai.
az extension add -n azure-cli-ml
az group create -n myazml -l northeurope
az ml workspace create -w myworkspace -g myazml
Dažas ir saistÄ«tas arÄ« ar darbvietu skaitļoÅ”anas resursi (RÄÄ·inÄt). Kad esat izveidojis skriptu modeļa apmÄcÄ«Å”anai, varat to izdarÄ«t nosÅ«tÄ«t eksperimentu izpildei uz darbvietu un norÄdiet aprÄÄ·inÄt mÄrÄ·i - Å”ajÄ gadÄ«jumÄ skripts tiks iepakots, palaists vÄlamajÄ skaitļoÅ”anas vidÄ, un pÄc tam visi eksperimenta rezultÄti tiks saglabÄti darbvietÄ turpmÄkai analÄ«zei un lietoÅ”anai.
MNIST skripta apguve
Apsveriet klasisko problÄmu ar roku rakstÄ«tu ciparu atpazÄ«Å”ana izmantojot MNIST datu kopu. LÄ«dzÄ«gi nÄkotnÄ jÅ«s varat palaist jebkuru no saviem apmÄcÄ«bas skriptiem.
MÅ«su repozitorijÄ ir skripts train_local.py, kurÄ mÄs apmÄcÄm vienkÄrÅ”Äko lineÄrÄs regresijas modeli, izmantojot SkLearn bibliotÄku. Protams, es saprotu, ka tas nav labÄkais veids, kÄ atrisinÄt problÄmu - mÄs to izmantojam kÄ piemÄru, kÄ vieglÄko.
Skripts vispirms lejupielÄdÄ MNIST datus no OpenML un pÄc tam izmanto klasi LogisticRegression lai apmÄcÄ«tu modeli un pÄc tam izdrukÄtu iegÅ«to precizitÄti:
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)
Ja mÄs izpildÄ«sim apmÄcÄ«bas skriptu, izmantojot Azure ML, mums bÅ«s divas galvenÄs priekÅ”rocÄ«bas:
ApmÄcÄ«bas vadÄ«Å”ana uz patvaļīga skaitļoÅ”anas resursa, kas, kÄ likums, ir produktÄ«vÄks par vietÄjo datoru. TajÄ paÅ”Ä laikÄ Azure ML pati parÅ«pÄsies par mÅ«su skripta iesaiÅoÅ”anu ar visiem failiem no paÅ”reizÄjÄ direktorija docker konteinerÄ, instalÄs nepiecieÅ”amÄs atkarÄ«bas un nosÅ«tÄ«s to izpildei.
Rakstiet rezultÄtus vienÄ reÄ£istrÄ Azure ML darbvietÄ. Lai izmantotu Ŕīs funkcijas priekÅ”rocÄ«bas, mÅ«su skriptam jÄpievieno dažas koda rindiÅas, lai reÄ£istrÄtu iegÅ«to precizitÄti:
from azureml.core.run import Run
...
try:
run = Run.get_submitted_run()
run.log('accuracy', acc)
except:
pass
Tiek izsaukta atbilstoÅ”Ä skripta versija train_universal.py (tas ir nedaudz viltÄ«gÄks, nekÄ rakstÄ«ts augstÄk, bet ne daudz). Å o skriptu var palaist gan lokÄli, gan attÄlÄ skaitļoÅ”anas resursÄ.
Lai palaistu to Azure ML no VS Code, jums ir jÄveic Å”Ädas darbÄ«bas:
PÄrliecinieties, vai Azure paplaÅ”inÄjums ir savienots ar jÅ«su abonementu. KreisajÄ pusÄ esoÅ”ajÄ izvÄlnÄ atlasiet Azure ikonu. Ja neesat izveidojis savienojumu, apakÅ”ÄjÄ labajÄ stÅ«rÄ« tiks parÄdÄ«ts paziÅojums (kÄ Å”is), noklikŔķinot uz kura var ievadÄ«t caur pÄrlÅ«kprogrammu. Varat arÄ« noklikŔķinÄt Ctrl-Shift-P lai izsauktu VS Code komandrindu, un ierakstiet Azure pierakstÄ«Å”anÄs.
Å eit jums vajadzÄtu redzÄt dažÄdas objektu grupas darbvietÄ: skaitļoÅ”anas resursi, eksperimenti utt.
Dodieties uz failu sarakstu, ar peles labo pogu noklikŔķiniet uz skripta train_universal.py un izvÄlieties Azure ML: palaist kÄ eksperimentu pakalpojumÄ Azure.
Tam sekos vairÄki dialoglodziÅi VS Code komandrindas apgabalÄ: apstipriniet abonementu un Azure ML darbvietu, kuru izmantojat, un atlasiet Izveidojiet jaunu eksperimentu:
IzvÄlieties, lai izveidotu jaunu skaitļoÅ”anas resursu Izveidot jaunu aprÄÄ·inu:
RÄÄ·inÄt nosaka skaitļoÅ”anas resursu, uz kura notiks apmÄcÄ«ba. Varat izvÄlÄties vietÄjo datoru vai AmlCompute mÄkoÅkopu. Es iesaku izveidot mÄrogojamu maŔīnu kopu STANDARD_DS3_v2, ar minimÄlo iekÄrtu skaitu 0 (un ne vairÄk kÄ 1 vai vairÄk, atkarÄ«bÄ no jÅ«su apetÄ«tes). To var izdarÄ«t, izmantojot VS Code saskarni vai iepriekÅ”, izmantojot ML portÄls.
TÄlÄk jums jÄizvÄlas konfigurÄcija AprÄÄ·inÄt konfigurÄciju, kas nosaka apmÄcÄ«bai izveidotÄ konteinera parametrus, jo Ä«paÅ”i visas nepiecieÅ”amÄs bibliotÄkas. MÅ«su gadÄ«jumÄ, tÄ kÄ mÄs izmantojam Scikit Learn, mÄs atlasÄm SkLearnun pÄc tam vienkÄrÅ”i apstipriniet piedÄvÄto bibliotÄku sarakstu, nospiežot taustiÅu Enter. Ja izmantojat papildu bibliotÄkas, tÄs Å”eit ir jÄnorÄda.
Tiks atvÄrts logs ar JSON failu, kurÄ aprakstÄ«ts eksperiments. TajÄ varat labot dažus parametrus - piemÄram, eksperimenta nosaukumu. PÄc tam noklikŔķiniet uz saites Iesniegt eksperimentu tieÅ”i Å”ajÄ failÄ:
PÄc veiksmÄ«gas eksperimenta iesniegÅ”anas, izmantojot VS Code, paziÅojumu apgabala labajÄ pusÄ redzÄsit saiti uz Azure ML portÄls, kur varat izsekot eksperimenta statusam un rezultÄtiem.
PÄc tam to vienmÄr varat atrast sadaÄ¼Ä EksperimentiAzure ML portÄls, vai sadaÄ¼Ä Azure maŔīnmÄcÄ«Å”anÄs eksperimentu sarakstÄ:
Ja pÄc tam veicÄt dažus koda labojumus vai mainÄ«jÄt parametrus, eksperimenta atsÄkÅ”ana bÅ«s daudz ÄtrÄka un vienkÄrÅ”Äka. Ar peles labo pogu noklikŔķinot uz faila, jÅ«s redzÄsit jaunu izvÄlnes vienumu AtkÄrtojiet pÄdÄjo skrÄjienu - vienkÄrÅ”i atlasiet to, un eksperiments nekavÄjoties sÄksies:
Visu palaiÅ”anas metrikas rezultÄtus vienmÄr varat atrast Azure ML portÄlÄ, nav nepiecieÅ”ams tos pierakstÄ«t.
Tagad jÅ«s zinÄt, ka eksperimentu veikÅ”ana ar Azure ML ir vienkÄrÅ”a un nesÄpÄ«ga, un, to darot, jÅ«s gÅ«stat vairÄkas jaukas priekÅ”rocÄ«bas.
Bet jÅ«s varat redzÄt arÄ« trÅ«kumus. PiemÄram, skripta palaiÅ”ana prasÄ«ja ievÄrojami ilgÄku laiku. Protams, skripta iesaiÅoÅ”ana konteinerÄ un izvietoÅ”ana serverÄ« prasa laiku. Ja tajÄ paÅ”Ä laikÄ klasteris tika izgriezts lÄ«dz 0 mezglu izmÄram, virtuÄlÄs maŔīnas palaiÅ”ana prasÄ«s vÄl vairÄk laika, un tas viss ir ļoti pamanÄms, eksperimentÄjot ar vienkÄrÅ”iem uzdevumiem, piemÄram, MNIST, kas tiek atrisinÄti dažu sekunžu laikÄ. . TomÄr reÄlajÄ dzÄ«vÄ, kad apmÄcÄ«ba ilgst vairÄkas stundas vai pat dienas vai nedÄļas, Å”is papildu laiks kļūst nenozÄ«mÄ«gs, jo Ä«paÅ”i uz daudz augstÄkas veiktspÄjas fona, ko var nodroÅ”inÄt skaitļoÅ”anas klasteris.
Ko tÄlÄk?
Es ceru, ka pÄc Ŕī raksta izlasÄ«Å”anas jÅ«s varat un izmantosit Azure ML savÄ darbÄ, lai palaistu skriptus, pÄrvaldÄ«tu skaitļoÅ”anas resursus un centralizÄti uzglabÄtu rezultÄtus. TomÄr Azure ML var sniegt jums vÄl vairÄk priekÅ”rocÄ«bu!
DarbvietÄ varat glabÄt datus, tÄdÄjÄdi izveidojot centralizÄtu repozitoriju visiem saviem uzdevumiem, kam ir viegli piekļūt. TurklÄt eksperimentus var palaist nevis no Visual Studio Code, bet izmantojot API ā tas var bÅ«t Ä«paÅ”i noderÄ«gi, ja nepiecieÅ”ams veikt hiperparametru optimizÄciju un skripts jÄpalaiž daudzas reizes ar dažÄdiem parametriem. TurklÄt Azure ML ir iebÅ«vÄta Ä«paÅ”a tehnoloÄ£ija HiperpiedziÅa, kas ļauj veikt sarežģītÄku hiperparametru meklÄÅ”anu un optimizÄciju. Par Ŕīm iespÄjÄm es runÄÅ”u savÄ nÄkamajÄ ierakstÄ.
Noderīgi resursi
Lai uzzinÄtu vairÄk par Azure ML, jums var bÅ«t noderÄ«gi Å”Ädi Microsoft Learn kursi: