Kuidas ĂŒletada hirm ja alustada Azure Machine Learning'i kasutamist

Ma tean paljusid andme teadlasi — ja ilmselt kuulun ka ise sinna hulka — kes töötavad GPU-dega masinatel, olgu need siis lokaalsed vĂ”i virtuaalsed, pilves, kas Jupyter Notebookis vĂ”i mĂ”nes Python arendus keskkonnas. Töötlusaja jooksul, olles 2 aastat AI/ML arenduse ekspert, tegin ma just nii, ettevalmistades andmeid tavalisel serveril vĂ”i tööjaamal ning kĂ€ivitades koolituse virtuaalmasinas, kus oli GPU Azure'is.

Loomulikult oleme kĂ”ik kuulnud Azure Machine Learning — spetsiaalne pilve platvorm masinĂ”ppe jaoks. Kuid esmapilgul, vaadates sissejuhatavaid artikleid, jÀÀb mulje, et Azure ML tekitab rohkem probleeme, kui lahendab. NĂ€iteks eelmainitud koolitusnĂ€ites kĂ€ivitatakse koolitus Azure ML-is Jupyter Notebookist, samas kui koolitus skripti on soovitatav luua ja redigeerida tekstifailina ĂŒhes rakkudes — ilma automaatse tĂ€itmise, sĂŒntaksi esiletĂ”stmise ja teiste tavapĂ€rase arenduskeskkonna eeliste kasutamiseta. Selle tĂ”ttu ei ole me Azure ML-i tĂ”siselt meie töös pikka aega kasutanud.

Kuid hiljuti avastasin, kuidas alustada Azure ML efektiivset kasutamist oma töös! Huvitavad ĂŒksikasjad?

Kuidas ĂŒletada hirm ja alustada Azure Machine Learning'i kasutamist

Peamine saladus on Visual Studio Code'i laiendus Azure ML. See vĂ”imaldab teil arendada koolitusskripte otse VS Code'is, kasutades kĂ”iki keskkonna eeliseid — samal ajal saate isegi skripti kohapeal kĂ€ivitada ja siis lihtsalt saata selle Ă”ppimiseks Azure ML klastrisse vaid mĂ”ne hiireklĂ”psuga. Mugav, kas pole?

Selle kasutamine annab teile jÀrgmised eelised:

  • Saate suurema osa ajast töötada oma masinas mugavas IDE-s ja kasutada GPU-d ainult mudeli koolitamiseks. Samal ajal vĂ”ivad koolitusressursid automaatselt kohanduda vajaliku koormuse jĂ€rgi, ja seades minimaalne sĂ”lmede arv 0, saate automaatselt kĂ€ivitada virtuaalmasina "nĂ”udmisel", kui koolitusĂŒlesanded on olemas.
  • Te saate hoida kĂ”iki koolituse tulemusi ĂŒhes kohas, sealhulgas saavutatud mÔÔdikud ja saadud mudelid — pole vaja ise vĂ€lja mĂ”elda mingit sĂŒsteemi vĂ”i jĂ€rjestust tulemuste salvestamiseks.
  • Samal ajal Ühe projekti kallal saavad töötada mitu inimest — nad saavad kasutada sama arvutusklastrit, kĂ”ik eksperimendid asetuvad jĂ€rjekorda ning nad saavad omavahel nĂ€ha eksperimenteeritud tulemusi. Üks selline stsenaarium on Azure ML-i kasutamine sĂŒvaĂ”ppe Ă”petamisel, kui igaĂŒhele mitte anda virtuaalmasinat GPU-ga, vaid luua ĂŒks klaster, mida saavad keskselt kasutada kĂ”ik. Lisaks vĂ”ib ĂŒldine tulemuste tabel mudeli tĂ€psuse osas olla hea konkurentsielement.
  • Azure ML-iga on lihtne lĂ€bi viia eksperimenteerimise seeria, nĂ€iteks hĂŒperparameetrite optimeerimine — seda saab teha paari koodi rea abil, ei ole vaja eksperimente kĂ€sitsi lĂ€bi viia.

Loodan, et olen teid veennud proovima Azure ML-i! NĂ€iteks kuidas alustada:

Azure ML Tööala ja Azure ML Portaal

Azure ML on korraldatud kontseptsiooni ĂŒmber tööala — Workspace. Tööalas saab hoida andmeid, sinna saadetakse eksperimendid koolitamiseks, seal salvestatakse koolitamise tulemused — saadud mÔÔdikud ja mudelid. Vaadata, mis tööalasse kuulub, saab lĂ€bi Azure ML portaali — ja sealt saab teostada mitmeid toiminguid, alates andmete ĂŒleslaadimisest kuni eksperimentide jĂ€lgimise ja mudelite juurutamiseni.

Tööala loomine on vÔimalik lÀbi veebiliidese Azure Portaal (vt. Samm-sammult juhised), vÔi kasutades Azure CLI kÀsurida (juhendis):

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

Tööalaga on seotud ka mĂ”ned arvutusressursid (Arvutus). Koolitusmudeli skripti loomisega saate saata eksperimendi tĂ€itmiseks tööalale ja mÀÀrata compute target — sel juhul pakendatakse skript, kĂ€ivitatakse vajalikus arvutuskeskkonnas, ja seejĂ€rel salvestatakse kĂ”ik eksperimendi tulemused tööalasse edasiseks analĂŒĂŒsiks ja kasutamiseks.

MNIST koolitusskript

Vaadake klassikalist ĂŒlesannet kĂ€ekirja numbrite tuvastamiseks MNIST andmehulgaga. Edaspidi saate oma koolitusskripte hĂ”lpsasti kĂ€ivitada.

Meie hoidlas on skript train_local.py, mis koolitab lihtsamat lineaarselt regressioonimudelit SkLearn raamatukogu abil. Muidugi, ma mĂ”istan, et see ei ole parim viis probleemi lahendamiseks — kasutame seda lihtsalt nĂ€itena kui kĂ”ige lihtsamat.

Skript esmalt allalaadib MNIST andmed OpenML-ist ja seejÀrel kasutab klassi LogisticRegression mudeli koolitamiseks ning seejÀrel prindib vÀlja saavutatud tÀpsuse:

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

shuffle_index = np.random.permutation(len(mnist['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('KokkuvÔtlik tÀpsus:', acc)

Saate skripti oma arvutis kÀivitada ja mÔne sekundi jooksul saate tulemuse.

KĂ€ivitame skripti Azure ML-is

Kui kÀivitame skripti Azure ML-i kaudu, on meil kaks peamist eelist:

  • KĂ€ivitage koolitus mis tahes arvutusressursil, mis on tavaliselt vĂ”imsam kui kohalik arvuti. Azure ML hoolitseb meie skripti, sealhulgas kĂ”ikide praeguse katalooge failide pakendamise, nĂ”utavate sĂ”ltuvuste installimise ja selle kĂ€itamiseks edastamise eest docker-konteineris.
  • Salvestage tulemused ĂŒhte registrisse Azure ML tööruumis. Selle funktsiooni kasutamiseks peame lisama koodi paar rida meie skripti, et salvestada saadud tĂ€psus:

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

Skripti vastav versioon on train_universal.py (see on pisut keerulisem, kui ĂŒlaltoodud, kuid mitte oluliselt). Seda skripti saab kĂ€ivitada nii kohalikult kui ka kaugussarvetel.

Selle kÀivitamiseks Azure ML-is VS Code'ist tuleb teha jÀrgmist:

  1. Veenduge, et Azure Extension on teie tellimusega ĂŒhendatud. Valige vasakult menĂŒĂŒst Azure ikoon. Kui te pole ĂŒhendatud, kuvatakse paremas alanurgas teade (selline), millele klikates saate sisse logida brauseri kaudu. Samuti saate vajutada Ctrl-Shift-P VS Code'i kĂ€surea avamiseks tippige Azure sisselogimine.

  2. SeejĂ€rel leidke Azure sektsioonis (ikoon vasakul) ala MASINÕPE:

Kuidas ĂŒletada hirm ja alustada Azure Machine Learning'i kasutamist
Siin peaksite nÀgema erinevaid objektigrupe tööruumis: arvutusressursid, eksperimendid jne.

  1. Liikuge failide nimekirja, paremklÔpsake skriptil train_universal.py ja vali Azure ML: KÀivita kui eksperiment Azure'is.

Kuidas ĂŒletada hirm ja alustada Azure Machine Learning'i kasutamist

  1. SeejÀrel jÀrgneb VS Code'i kÀsureal rida dialooge: kinnitage kasutatav tellimus ja Azure ML tööruum ning valige Loo uus eksperiment:

Kuidas ĂŒletada hirm ja alustada Azure Machine Learning'i kasutamist
Kuidas ĂŒletada hirm ja alustada Azure Machine Learning'i kasutamist
Kuidas ĂŒletada hirm ja alustada Azure Machine Learning'i kasutamist

  1. Valige uue arvutusressursi loomine Loo uus arvutus:

    • Arvutus mÀÀrab arvutusressursi, kus koolitus toimub. VĂ”ite valida kohaliku arvuti vĂ”i AmlCompute'i pilvklastri. Soovitan luua skaleeritava masinate klastrit STANDARD_DS3_v2, minimaalse masinate arvu 0 (ja maksimum vĂ”ib olla 1 vĂ”i rohkem, sĂ”ltuvalt teie soovidest). Seda saab teha lĂ€bi VS Code'i liidese vĂ”i eelnevalt ML Portaalis.

    Kuidas ĂŒletada hirm ja alustada Azure Machine Learning'i kasutamist

  2. JÀrgmiseks peate valima konfiguratsiooni Arvutuse konfiguratsioon, mis mÀÀrab loodava konteineri parameetrid, sealhulgas kÔik vajalikud teegid. Meie puhul, kuna kasutame Scikit Learn'i, valime SkLearn, ja seejÀrel kinnitame lihtsalt soovitatud teegide nimekirja klahvivajutusega Enter. Kui kasutate mingeid tÀiendavaid teeke, tuleb need siin mÀrkida.

    Kuidas ĂŒletada hirm ja alustada Azure Machine Learning'i kasutamist
    Kuidas ĂŒletada hirm ja alustada Azure Machine Learning'i kasutamist

  3. PĂ€rast seda avaneb aken JSON-failiga, mis kirjeldab eksperimenti. Seal saab mĂ”ned parameetrid parandada — nĂ€iteks eksperimendi nimi. PĂ€rast seda klikka lingile Esita eksperiment otse selle faili sees:

Kuidas ĂŒletada hirm ja alustada Azure Machine Learning'i kasutamist

  1. PÀrast eksperimendi edukat esitamist lÀbi VS Code'i, nÀete paremal teavituste alal linki Azure ML Portaal, kus saate jÀlgida eksperimendi olekut ja tulemusi.

Kuidas ĂŒletada hirm ja alustada Azure Machine Learning'i kasutamist
Hiljem leiate selle alati jaotusest Eksperimendid Azure ML Portaal, vÔi jaotusest Azure Machine Learning eksperimentide loendis:

Kuidas ĂŒletada hirm ja alustada Azure Machine Learning'i kasutamist

  1. Kui olete pĂ€rast seda koodis mingeid parandusi teinud vĂ”i parameetreid muutnud, siis eksperimendi korduv kĂ€ivitamine on palju kiirem ja lihtsam. ParemklĂ”psates failil, nĂ€ete uut valikut menĂŒĂŒs Korda viimast kĂ€ivitamist — lihtsalt valige see, ja eksperiment kĂ€ivitatakse kohe:

Kuidas ĂŒletada hirm ja alustada Azure Machine Learning'i kasutamist
Kuna tulemused kĂ”igist kĂ€ivitustest leiate alati Azure ML Portaalist, pole vaja neid ĂŒles tĂ€hendada.

NĂŒĂŒd teate, et eksperimentide kĂ€itamine Azure ML-is on lihtne ja valutult, ning samal ajal pakub see mitmeid meeldivaid eeliseid.

Kuid olete vĂ”inud mĂ€rgata ka puudusi. NĂ€iteks, skripti kĂ€ivitamine vĂ”ttis oluliselt rohkem aega. Loomulikult kulub skripti konteinerisse pakkimiseks ja serverisse kĂ€ivitamiseks aega. Kui seejuures on klaster kĂ€rbitud 0 sĂ”lme suuruseks, kulub virtuaalmasina kĂ€ivitamiseks veel rohkem aega, ja see kĂ”ik on vĂ€ga mĂ€rgatav, kui katsetame lihtsate ĂŒlesannetega nagu MNIST, mis lahendatakse paari sekundiga. Siiski, reaalelus, kus koolitus kestab mitu tundi, pĂ€eva vĂ”i isegi nĂ€dalat, muutub see tĂ€iendav aeg ebaoluliseks, eriti vĂ”rreldes palju kĂ”rgema jĂ”udluse taustaga, mida vĂ”ib anda arvutusklaster.

Mis edasi?

Loodan, et pÀrast selle artikli lugemist suudate ja kasutate Azure ML oma töös skriptide kÀitamiseks, arvutusressursside haldamiseks ja tulemustega keskse salvestuse loomiseks. Azure ML vÔib aga pakkuda teile veelgi rohkem eeliseid!

Töölaua sees saate hoida andmeid, luues seelĂ€bi kĂ”igi oma ĂŒlesannete jaoks keskse andmehoidla, millele on lihtne juurde pÀÀseda. Samuti saate eksperimente kĂ€ivitada mitte Visual Studio Code'ist, vaid API kasutades — see vĂ”ib olla eriti kasulik, kui peate hĂŒperparameetreid optimeerima ja kĂ€ivitama skripti mitu korda erinevate parameetritega. Veelgi enam, Azure ML-is on sisseehitatud spetsiaalne tehnoloogia Hyperdrive, mis vĂ”imaldab teha nutikamat huvide ja hĂŒperparameetrite optimeerimist. Nendest vĂ”imalustest rÀÀgin oma jĂ€rgmisel postitusel.

Kasulikud ressursid

Azure ML-i pÔhjalikumaks uurimiseks vÔivad teile olla kasulikud jÀrgmised Microsoft Learn kursused:

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster