Kuidas hirmust üle saada ja Azure'i masinõpet kasutama hakata

Tean paljusid andmeteadlasi – ja ilmselt olen ka ise üks neist –, kes töötavad kas Jupyteri sülearvuti või mõne Pythoni arenduskeskkonna kaudu pilves paiknevate kohalike või virtuaalsete GPU masinatega. Töötades 2 aastat asjatundliku AI/ML-arendajana, tegin täpselt seda, valmistades ette andmeid tavalises serveris või tööjaamas ning korraldades koolitust Azure'i GPU-ga virtuaalmasinas.

Muidugi oleme kõik sellest kuulnud Azure'i masinõpe — spetsiaalne pilveplatvorm masinõppeks. Kuid pärast esmapilgul sissejuhatavad artiklid, tundub, et Azure ML tekitab teile rohkem probleeme kui lahendab. Näiteks ülalmainitud õpetuses käivitatakse Azure ML-i koolitus Jupyteri sülearvutist, samas kui koolitusskript ise luuakse ja redigeeritakse tekstifailina ühes lahtris – ilma automaatse lõpetamiseta, süntaksita. esiletõstmine ja muud normaalse arenduskeskkonna eelised. Sel põhjusel pole me Azure ML-i oma töös pikka aega tõsiselt kasutanud.

Hiljuti avastasin aga viisi, kuidas Azure ML-i oma töös tõhusalt kasutama hakata! Kas olete huvitatud üksikasjadest?

Kuidas hirmust üle saada ja Azure'i masinõpet kasutama hakata

Peamine saladus on Visual Studio Code laiendus Azure ML-i jaoks. See võimaldab teil arendada koolitusskripte otse VS Code'is, kasutades keskkonda täielikult ära – ja saate isegi skripti kohapeal käitada ja seejärel lihtsalt mõne klõpsuga Azure ML-klastris koolitusele saata. Mugav, kas pole?

Seda tehes saate Azure ML-i kasutamisest järgmised eelised.

  • Saate suurema osa ajast oma masinas kohapeal töötada mugavas IDE-s ja kasutage GPU-d ainult mudelikoolituseks. Samal ajal saab treeningressursside kogum automaatselt kohaneda vajaliku koormusega ning seadistades minimaalseks sõlmede arvuks 0, saate treeningülesannete olemasolul virtuaalmasina "nõudmisel" automaatselt käivitada.
  • Te saate salvestada kõik õpitulemused ühte kohta, sealhulgas saavutatud mõõdikud ja sellest tulenevad mudelid – pole vaja välja mõelda mingit süsteemi või tellimust, et kõik tulemused salvestada.
  • Sel juhul Sama projektiga võivad töötada mitu inimest - nad saavad kasutada sama arvutusklastrit, kõik katsed pannakse järjekorda ja nad näevad ka üksteise katsete tulemusi. Üks selline stsenaarium on Azure ML-i kasutamine süvaõppe õpetamiselkui igale õpilasele GPU-ga virtuaalmasina andmise asemel saate luua ühe klastri, mida kõik kasutavad tsentraalselt. Lisaks võib mudeli täpsusega üldine tulemuste tabel olla hea konkurentsielement.
  • Azure ML-iga saate hõlpsalt läbi viia mitmeid katseid, näiteks hüperparameetrite optimeerimine - seda saab teha mõne koodireaga, pole vaja katseseeriat käsitsi läbi viia.

Loodan, et veensin teid Azure ML-i proovima! Alustamiseks tehke järgmist.

Azure ML tööruum ja Azure ML portaal

Azure ML on korraldatud kontseptsiooni ümber tööala - tööruum. Tööruumi saab salvestada andmeid, sinna saadetakse katsed koolituseks, sinna salvestatakse ka treeningtulemused - saadud mõõdikud ja mudelid. Näete läbi, mis tööruumi sees on Azure ML portaal - ja sealt saate teha palju toiminguid, alates andmete laadimisest kuni katsete jälgimise ja mudelite juurutamiseni.

Tööruumi saate luua veebiliidese kaudu Azure portaal (cm. samm-sammult juhised) või kasutades Azure CLI käsurida (juhiseid):

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

Tööruumiga on seotud ka mõned arvutusressursse (Arvutama). Kui olete mudeli koolitamiseks skripti loonud, saate seda teha saata katse teostamiseks tööalale ja täpsustage arvuta sihtmärk - sel juhul pakitakse skript, käivitatakse soovitud arvutuskeskkonnas ning seejärel salvestatakse kõik katse tulemused tööruumi edasiseks analüüsiks ja kasutamiseks.

MNIST-i skripti õppimine

Mõelge klassikalisele probleemile käsitsi kirjutatud numbrituvastus kasutades MNIST-i andmestikku. Samamoodi saate tulevikus käivitada mis tahes oma treeningskripte.

Meie hoidlas on skript train_local.py, mille abil koolitame SkLearni teeki kasutades lihtsaimat lineaarset regressioonimudelit. Muidugi saan aru, et see pole parim viis probleemi lahendamiseks – kasutame seda näitena, kui kõige lihtsamat.

Skript laadib esmalt OpenML-ist alla MNIST-i andmed ja seejärel kasutab klassi LogisticRegression mudeli koolitamiseks ja seejärel saadud täpsuse printimiseks:

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)

Saate skripti arvutis käivitada ja tulemuse saate mõne sekundiga.

Käivitage skript Azure ML-is

Kui käitame koolitusskripti Azure ML-i kaudu, on meil kaks peamist eelist.

  • Koolituse läbiviimine suvalisel arvutusressursil, mis reeglina on produktiivsem kui kohalik arvuti. Samal ajal hoolitseb Azure ML ise meie skripti koos kõigi praeguse kataloogi failidega dokkimiskonteinerisse pakkimise, vajalike sõltuvuste installimise ja täitmiseks saatmise eest.
  • Kirjutage tulemused ühte registrisse Azure ML-i tööruumis. Selle funktsiooni ärakasutamiseks peame tulemuse täpsuse salvestamiseks oma skriptile lisama paar koodirida:

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

Kutsutakse välja skripti vastav versioon train_universal.py (see on veidi kavalam, kui ülalpool kirjas, aga mitte palju). Seda skripti saab käivitada nii lokaalselt kui ka kaugarvutusressursil.

Selle käitamiseks Azure ML-is VS-koodist peate tegema järgmist.

  1. Veenduge, et Azure'i laiendus oleks teie tellimusega ühendatud. Valige vasakpoolsest menüüst Azure'i ikoon. Kui te pole ühendust, kuvatakse paremas alanurgas teade (nagu nii), millele klõpsates saate brauseri kaudu siseneda. Võite ka klõpsata Ctrl-Shift-P VS Code käsureale kutsumiseks ja tippige Azure'i sisselogimine.

  2. Pärast seda leidke jaotisest Azure (ikoon vasakul) üles jaotis MASINÕPE:

Kuidas hirmust üle saada ja Azure'i masinõpet kasutama hakata
Siin peaksite nägema tööruumis erinevaid objektide rühmi: arvutusressursse, katseid jne.

  1. Minge failide loendisse, paremklõpsake skriptil train_universal.py ja valige Azure ML: käitage Azure'is katsena.

Kuidas hirmust üle saada ja Azure'i masinõpet kasutama hakata

  1. Sellele järgneb rida dialooge VS Code käsurea alal: kinnitage tellimus ja Azure ML-i tööruum, mida kasutate, ning valige Loo uus katse:

Kuidas hirmust üle saada ja Azure'i masinõpet kasutama hakata
Kuidas hirmust üle saada ja Azure'i masinõpet kasutama hakata
Kuidas hirmust üle saada ja Azure'i masinõpet kasutama hakata

  1. Valige uue arvutusressursi loomine Loo uus arvutus:

    • Arvutama määrab arvutusressursi, millel koolitus toimub. Saate valida kohaliku arvuti või AmlCompute'i pilveklastri. Soovitan luua skaleeritava masinate klastri STANDARD_DS3_v2, minimaalse masinate arvuga 0 (ja maksimum võib olla 1 või rohkem, olenevalt teie isudest). Seda saab teha VS Code liidese kaudu või varem läbi ML portaal.

    Kuidas hirmust üle saada ja Azure'i masinõpet kasutama hakata

  2. Järgmisena peate valima konfiguratsiooni Arvuta konfiguratsioon, mis määrab koolituseks loodud konteineri parameetrid, eelkõige kõik vajalikud teegid. Kuna meie puhul kasutame Scikit Learni, siis valime SkLearnja seejärel lihtsalt kinnitage pakutud teekide loend, vajutades sisestusklahvi. Kui kasutate täiendavaid teeke, tuleb need siin täpsustada.

    Kuidas hirmust üle saada ja Azure'i masinõpet kasutama hakata
    Kuidas hirmust üle saada ja Azure'i masinõpet kasutama hakata

  3. See avab katset kirjeldava JSON-failiga akna. Selles saate mõnda parameetrit parandada - näiteks katse nime. Pärast seda klõpsake lingil Esitage katse otse selle faili sees:

Kuidas hirmust üle saada ja Azure'i masinõpet kasutama hakata

  1. Pärast katse edukat esitamist VS-koodi kaudu näete teavitusala paremas servas linki Azure ML portaal, kus saate jälgida katse olekut ja tulemusi.

Kuidas hirmust üle saada ja Azure'i masinõpet kasutama hakata
Edaspidi leiate selle alati jaotisest Katsed Azure ML portaal, või jaotises Azure'i masinõpe katsete loendis:

Kuidas hirmust üle saada ja Azure'i masinõpet kasutama hakata

  1. Kui pärast seda tegite koodis mõned parandused või muutsite parameetreid, on katse taaskäivitamine palju kiirem ja lihtsam. Paremklõpsates failil, näete uut menüüelementi Korda viimast jooksu - lihtsalt valige see ja katse algab kohe:

Kuidas hirmust üle saada ja Azure'i masinõpet kasutama hakata
Kõigi käivitamiste mõõdikute tulemused leiate alati Azure ML portaalist, neid pole vaja üles kirjutada.

Nüüd teate, et Azure ML-iga katsete käitamine on lihtne ja valutu ning sellega saate mitmeid häid eeliseid.

Kuid näete ka puudusi. Näiteks skripti käivitamine võttis oluliselt kauem aega. Loomulikult võtab skripti konteinerisse pakkimine ja serverisse juurutamine aega. Kui samal ajal lõigati klaster 0 sõlme suuruseks, kulub virtuaalmasina käivitamiseks veelgi rohkem aega ja see kõik on väga märgatav, kui katsetame lihtsaid ülesandeid nagu MNIST, mis lahendatakse mõne sekundiga. . Reaalses elus, kui koolitus kestab mitu tundi või isegi päevi või nädalaid, muutub see lisaaeg aga tähtsusetuks, eriti arvestades arvutusklastri palju suuremat jõudlust.

Mis edasi?

Loodan, et pärast selle artikli lugemist saate ja kasutate Azure ML-i oma töös skriptide käitamiseks, arvutusressursside haldamiseks ja tulemuste keskseks salvestamiseks. Siiski võib Azure ML pakkuda teile veelgi rohkem eeliseid!

Saate salvestada andmeid tööruumi, luues seeläbi kõigi oma ülesannete jaoks tsentraliseeritud hoidla, millele on lihtne juurde pääseda. Lisaks saate katseid käivitada API-ga, mitte Visual Studio Code'iga – see võib olla eriti kasulik, kui peate läbi viima hüperparameetrite optimeerimise ja skripti mitu korda erinevate parameetritega. Lisaks on Azure ML-i sisse ehitatud spetsiaalne tehnoloogia Hüperdraiv, mis võimaldab teha keerukamaid otsinguid ja hüperparameetrite optimeerimist. Nendest võimalustest räägin oma järgmises postituses.

Kasulikud ressursid

Azure ML-i kohta lisateabe saamiseks võivad olla kasulikud järgmised Microsoft Learni kursused.

Allikas: www.habr.com

Lisa kommentaar