Hvernig á að sigrast á ótta og byrja að nota Azure Machine Learning

Ég þekki marga Data Scientists - og ég er líklega einn af þeim sjálfur - sem vinna á GPU vélum, staðbundnum eða sýndar, staðsettar í skýinu, annað hvort í gegnum Jupyter Notebook eða í gegnum einhvers konar Python þróunarumhverfi. Þar sem ég vann í 2 ár sem sérfræðingur í gervigreind/ml þróunaraðili, gerði ég nákvæmlega þetta, á meðan ég undirbjó gögn á venjulegum netþjóni eða vinnustöð og keyrði þjálfun á sýndarvél með GPU í Azure.

Auðvitað höfum við öll heyrt um Azure vélanám — sérstakur skýjapallur fyrir vélanám. Hins vegar, eftir fyrstu sýn á kynningargreinar, það virðist sem Azure ML muni skapa fleiri vandamál fyrir þig en það leysir. Til dæmis, í kennslunni sem minnst er á hér að ofan, er þjálfun á Azure ML hleypt af stokkunum frá Jupyter Notebook, á meðan lagt er til að þjálfunarforritið sjálft sé búið til og breytt sem textaskrá í einni af frumunum - án þess að nota sjálfvirka útfyllingu, setningafræði hápunktur og aðrir kostir eðlilegs þróunarumhverfis. Af þessum sökum höfum við ekki notað Azure ML alvarlega í starfi okkar í langan tíma.

Hins vegar uppgötvaði ég nýlega leið til að byrja að nota Azure ML á áhrifaríkan hátt í starfi mínu! Hefur þú áhuga á smáatriðum?

Hvernig á að sigrast á ótta og byrja að nota Azure Machine Learning

Aðalleyndarmálið er Visual Studio Code viðbót fyrir Azure ML. Það gerir þér kleift að þróa þjálfunarforskriftir beint í VS kóða og nýta umhverfið til fulls - og þú getur jafnvel keyrt skriftuna á staðnum og síðan einfaldlega sent það í þjálfun í Azure ML klasa með nokkrum smellum. Þægilegt, er það ekki?

Með því að gera það færðu eftirfarandi ávinning af því að nota Azure ML:

  • Þú getur unnið mest af tímanum á staðnum á vélinni þinni í þægilegri IDE, og notaðu aðeins GPU fyrir líkanaþjálfun. Á sama tíma getur hópurinn af þjálfunarauðlindum sjálfkrafa lagað sig að nauðsynlegu álagi og með því að stilla lágmarksfjölda hnúta á 0 geturðu sjálfkrafa ræst sýndarvélina „á eftirspurn“ í viðurvist þjálfunarverkefna.
  • getur þú geyma allar námsárangur á einum stað, þar með talið mæligildi sem náðst hafa og módel sem af því leiðir - það er engin þörf á að koma með einhvers konar kerfi eða röð til að geyma allar niðurstöður.
  • Í þessu tilviki, Margir geta unnið að sama verkefninu - þeir geta notað sama tölvuklasann, allar tilraunir verða í biðröð og þeir geta líka séð niðurstöður tilrauna hvers annars. Ein slík atburðarás er að nota Azure ML við kennslu í djúpnámiþegar í stað þess að gefa hverjum nemanda sýndarvél með GPU geturðu búið til einn þyrping sem verður notaður af öllum miðlægt. Að auki getur almenn tafla yfir niðurstöður með nákvæmni líkans þjónað sem góður samkeppnisþáttur.
  • Með Azure ML geturðu auðveldlega framkvæmt röð tilrauna, til dæmis fyrir hámarksfínstillingu - þetta er hægt að gera með nokkrum línum af kóða, það er engin þörf á að framkvæma röð tilrauna handvirkt.

Ég vona að ég hafi sannfært þig um að prófa Azure ML! Svona á að byrja:

Azure ML vinnusvæði og Azure ML gátt

Azure ML er skipulagt í kringum hugmyndina vinnusvæði - vinnurými. Hægt er að geyma gögn á vinnusvæðinu, tilraunir eru sendar til þess til þjálfunar, þjálfunarniðurstöður eru einnig vistaðar þar - mælikvarðar og líkön sem myndast. Þú getur séð hvað er inni á vinnusvæðinu í gegnum Azure ML vefgátt - og þaðan er hægt að framkvæma margar aðgerðir, allt frá því að hlaða gögnum til að fylgjast með tilraunum og útfæra líkön.

Þú getur búið til vinnusvæði í gegnum vefviðmótið Azure Portal (sjá skref fyrir skref leiðbeiningar), eða með því að nota Azure CLI skipanalínuna (leiðbeiningar):

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

Einnig tengt vinnurýminu eru nokkur tölvuauðlindir (Reiknið). Þegar þú hefur búið til handrit til að þjálfa líkanið geturðu það senda tilraun til framkvæmdar á vinnusvæðið og tilgreinið reikna markmið - í þessu tilviki verður handritinu pakkað, keyrt í viðkomandi tölvuumhverfi og síðan verða allar niðurstöður tilraunarinnar vistaðar á vinnusvæðinu til frekari greiningar og notkunar.

Lærdómshandrit fyrir MNIST

Lítum á klassíska vandamálið handskrifaða tölustafagreiningu með því að nota MNIST gagnasafnið. Á sama hátt geturðu í framtíðinni keyrt hvaða þjálfunarforskrift sem er.

Það er handrit í geymslunni okkar train_local.py, sem við þjálfum einfaldasta línulega aðhvarfslíkanið með því að nota SkLearn bókasafnið. Auðvitað skil ég að þetta er ekki besta leiðin til að leysa vandamálið - við notum það sem dæmi, sem einfaldasta.

Handritið hleður fyrst niður MNIST gögnum frá OpenML og notar síðan bekkinn LogisticRegression til að þjálfa líkanið og prenta síðan út nákvæmni:

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)

Þú getur keyrt handritið á tölvunni þinni og fengið niðurstöðuna á nokkrum sekúndum.

Keyrðu handritið í Azure ML

Ef við keyrum þjálfunarforskriftina í gegnum Azure ML munum við hafa tvo megin kosti:

  • Að keyra þjálfun á handahófskenndri tölvuauðlind, sem að jafnaði er afkastameiri en staðbundin tölva. Á sama tíma mun Azure ML sjálft sjá um að pakka handritinu okkar með öllum skrám úr núverandi möppu í docker gám, setja upp nauðsynlegar ósjálfstæði og senda það til framkvæmdar.
  • Skrifaðu niðurstöður í eina skrásetningu inni í Azure ML vinnusvæði. Til að nýta þennan eiginleika þurfum við að bæta nokkrum línum af kóða við handritið okkar til að skrá nákvæmni sem fæst:

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

Samsvarandi útgáfa af handritinu er kölluð train_universal.py (það er aðeins slægara en það er skrifað hér að ofan, en ekki mikið). Þetta handrit er hægt að keyra bæði á staðnum og á fjartölvuforriti.

Til að keyra það í Azure ML frá VS kóða þarftu að gera eftirfarandi:

  1. Gakktu úr skugga um að Azure viðbótin sé tengd við áskriftina þína. Veldu Azure táknið í valmyndinni til vinstri. Ef þú ert ekki tengdur mun tilkynning birtast neðst í hægra horninu (svona), með því að smella á sem þú getur farið inn í gegnum vafrann. Þú getur líka smellt Ctrl-Shift-P til að hringja í VS Code skipanalínuna og slá inn Azure Innskráning.

  2. Eftir það, í Azure hlutanum (táknið til vinstri), finndu hlutann Vélarnám:

Hvernig á að sigrast á ótta og byrja að nota Azure Machine Learning
Hér ættir þú að sjá mismunandi hópa af hlutum inni á vinnusvæðinu: tölvuauðlindir, tilraunir o.s.frv.

  1. Farðu í lista yfir skrár, hægrismelltu á handritið train_universal.py og veldu Azure ML: Keyra sem tilraun í Azure.

Hvernig á að sigrast á ótta og byrja að nota Azure Machine Learning

  1. Þessu verður fylgt eftir með röð af gluggum á skipanalínusvæðinu í VS Code: staðfestu áskriftina og Azure ML vinnusvæðið sem þú ert að nota og veldu Búðu til nýja tilraun:

Hvernig á að sigrast á ótta og byrja að nota Azure Machine Learning
Hvernig á að sigrast á ótta og byrja að nota Azure Machine Learning
Hvernig á að sigrast á ótta og byrja að nota Azure Machine Learning

  1. Veldu að búa til nýtt tölvuforrit Búðu til nýjan Compute:

    • Reiknið ákvarðar tölvuforða sem þjálfun fer fram á. Þú getur valið staðbundna tölvu, eða AmlCompute skýjaklasa. Ég mæli með því að búa til stigstærðan þyrping af vélum STANDARD_DS3_v2, með lágmarksfjölda véla upp á 0 (og að hámarki 1 eða fleiri, allt eftir matarlyst). Þetta er hægt að gera í gegnum VS kóða viðmótið, eða áður í gegnum ML gátt.

    Hvernig á að sigrast á ótta og byrja að nota Azure Machine Learning

  2. Næst þarftu að velja stillingar Reikna stillingar, sem skilgreinir færibreytur ílátsins sem búið er til fyrir þjálfun, einkum öll nauðsynleg bókasöfn. Í okkar tilviki, þar sem við erum að nota Scikit Learn, veljum við SkLearn, og staðfestu síðan fyrirhugaðan lista yfir bókasöfn með því að ýta á Enter. Ef þú notar einhver viðbótarsöfn verður að tilgreina þau hér.

    Hvernig á að sigrast á ótta og byrja að nota Azure Machine Learning
    Hvernig á að sigrast á ótta og byrja að nota Azure Machine Learning

  3. Þetta mun opna glugga með JSON skrá sem lýsir tilrauninni. Í henni er hægt að leiðrétta nokkrar breytur - til dæmis nafn tilraunarinnar. Eftir það smellirðu á hlekkinn Sendu inn tilraun beint inni í þessari skrá:

Hvernig á að sigrast á ótta og byrja að nota Azure Machine Learning

  1. Eftir að hafa sent inn tilraun með VS kóða, hægra megin á tilkynningasvæðinu, muntu sjá hlekk á Azure ML gátt, þar sem þú getur fylgst með stöðu og niðurstöðum tilraunarinnar.

Hvernig á að sigrast á ótta og byrja að nota Azure Machine Learning
Í kjölfarið geturðu alltaf fundið það í hlutanum Tilraunir Azure ML gátt, eða í kaflanum Azure vélanám á listanum yfir tilraunir:

Hvernig á að sigrast á ótta og byrja að nota Azure Machine Learning

  1. Ef þú gerðir nokkrar leiðréttingar á kóðanum eftir það eða breyttir breytum, verður endurræsing tilraunarinnar miklu hraðari og auðveldari. Með því að hægrismella á skrá sérðu nýtt valmyndaratriði Endurtaktu síðasta hlaup - veldu það bara og tilraunin byrjar strax:

Hvernig á að sigrast á ótta og byrja að nota Azure Machine Learning
Þú getur alltaf fundið niðurstöður mælinga frá öllum kynningum á Azure ML Portal, það er engin þörf á að skrifa þær niður.

Nú veistu að það er einfalt og sársaukalaust að keyra tilraunir með Azure ML og þú færð ýmsa góða kosti við að gera það.

En þú getur líka séð ókostina. Til dæmis tók það verulega lengri tíma að keyra handritið. Auðvitað tekur það tíma að pakka handritinu í gám og dreifa því á þjóninum. Ef þyrpingin var á sama tíma skorin niður í stærðina 0 hnúta mun það taka enn lengri tíma að ræsa sýndarvélina og allt er þetta mjög áberandi þegar við gerum tilraunir með einföld verkefni eins og MNIST, sem leysast á nokkrum sekúndum . Hins vegar, í raunveruleikanum, þegar þjálfun stendur yfir í nokkrar klukkustundir, eða jafnvel daga eða vikur, verður þessi viðbótartími óverulegur, sérstaklega í ljósi mun meiri frammistöðu sem tölvuklasi getur veitt.

Hvað er næst?

Ég vona að eftir að hafa lesið þessa grein geturðu og munt nota Azure ML í vinnunni þinni til að keyra forskriftir, stjórna tölvuauðlindum og geyma niðurstöður miðlægt. Hins vegar getur Azure ML veitt þér enn meiri ávinning!

Inni á vinnusvæðinu geturðu geymt gögn og búið þannig til miðlæga geymslu fyrir öll þín verkefni sem auðvelt er að nálgast. Að auki getur þú keyrt tilraunir ekki frá Visual Studio Code, heldur með því að nota API - þetta getur verið sérstaklega gagnlegt ef þú þarft að framkvæma fínstillingu ofraparameters og þarft að keyra skriftuna oft með mismunandi breytum. Þar að auki er sérstök tækni innbyggð í Azure ML ofur drif, sem gerir þér kleift að gera erfiðari leit og fínstillingu á ofbreytum. Ég mun tala um þessa möguleika í næstu færslu minni.

Gagnlegar auðlindir

Til að læra meira um Azure ML gætirðu fundið eftirfarandi Microsoft Learn námskeið gagnlegt:

Heimild: www.habr.com

Bæta við athugasemd