Paano madaig ang takot at simulan ang paggamit ng Azure Machine Learning

Kilala ko ang maraming Data Scientist - at malamang na isa rin ako sa kanila - na nagtatrabaho sa mga GPU machine, lokal o virtual, na matatagpuan sa cloud, alinman sa pamamagitan ng Jupyter Notebook o sa pamamagitan ng ilang uri ng Python development environment. Nagtatrabaho sa loob ng 2 taon bilang isang dalubhasang developer ng AI/ML, eksaktong ginawa ko ito, habang naghahanda ng data sa isang regular na server o workstation, at nagpapatakbo ng pagsasanay sa isang virtual machine na may GPU sa Azure.

Siyempre, narinig na nating lahat Pag-aaral ng Azure Machine β€” isang espesyal na cloud platform para sa machine learning. Gayunpaman, pagkatapos ng unang sulyap sa panimulang artikulo, mukhang gagawa ng mas maraming problema para sa iyo ang Azure ML kaysa sa malulutas nito. Halimbawa, sa tutorial na nabanggit sa itaas, ang pagsasanay sa Azure ML ay inilunsad mula sa isang Jupyter Notebook, habang ang script ng pagsasanay mismo ay iminungkahi na gawin at i-edit bilang isang text file sa isa sa mga cell - habang hindi gumagamit ng auto-completion, syntax pag-highlight, at iba pang mga pakinabang ng isang normal na kapaligiran sa pag-unlad. Para sa kadahilanang ito, hindi namin sineseryoso ang paggamit ng Azure ML sa aming trabaho sa mahabang panahon.

Gayunpaman, natuklasan ko kamakailan ang isang paraan upang simulan ang paggamit ng Azure ML nang epektibo sa aking trabaho! Interesado sa mga detalye?

Paano madaig ang takot at simulan ang paggamit ng Azure Machine Learning

Ang pangunahing sikreto ay Visual Studio Code extension para sa Azure ML. Binibigyang-daan ka nitong bumuo ng mga script ng pagsasanay sa mismong VS Code, na lubos na sinasamantala ang kapaligiran - at maaari mo ring patakbuhin ang script nang lokal at pagkatapos ay ipadala lang ito sa pagsasanay sa isang Azure ML cluster na may ilang mga pag-click. Maginhawa, hindi ba?

Sa paggawa nito, makukuha mo ang mga sumusunod na benepisyo mula sa paggamit ng Azure ML:

  • Maaari kang magtrabaho sa halos lahat ng oras nang lokal sa iyong makina sa isang maginhawang IDE, at gumamit lamang ng GPU para sa pagsasanay ng modelo. Kasabay nito, ang pool ng mga mapagkukunan ng pagsasanay ay maaaring awtomatikong mag-adjust sa kinakailangang pagkarga, at sa pamamagitan ng pagtatakda ng pinakamababang bilang ng mga node sa 0, maaari mong awtomatikong simulan ang virtual machine "on demand" sa pagkakaroon ng mga gawain sa pagsasanay.
  • Maaari mo iimbak ang lahat ng resulta ng pagkatuto sa isang lugar, kabilang ang mga nakamit na sukatan at ang mga resultang modelo - hindi na kailangang gumawa ng ilang uri ng system o order para iimbak ang lahat ng resulta.
  • Sa kasong ito, Maraming tao ang maaaring magtrabaho sa parehong proyekto - maaari nilang gamitin ang parehong cluster ng computing, ang lahat ng mga eksperimento ay ipipila, at maaari din nilang makita ang mga resulta ng mga eksperimento ng bawat isa. Ang isang ganyang senaryo ay gamit ang Azure ML sa pagtuturo ng Deep Learningkapag sa halip na bigyan ang bawat estudyante ng virtual machine na may GPU, maaari kang lumikha ng isang cluster na gagamitin ng lahat sa gitna. Bilang karagdagan, ang isang pangkalahatang talahanayan ng mga resulta na may katumpakan ng modelo ay maaaring magsilbi bilang isang mahusay na elemento ng mapagkumpitensya.
  • Sa Azure ML, madali kang makakapagsagawa ng serye ng mga eksperimento, halimbawa, para sa pag-optimize ng hyperparameter - ito ay maaaring gawin gamit ang ilang linya ng code, hindi na kailangang magsagawa ng serye ng mga eksperimento nang manu-mano.

Sana nakumbinsi kita na subukan ang Azure ML! Narito kung paano magsimula:

Azure ML Workspace at Azure ML Portal

Ang Azure ML ay nakaayos ayon sa konsepto lugar ng trabaho β€” workspace. Maaaring iimbak ang data sa workspace, ipinapadala dito ang mga eksperimento para sa pagsasanay, nakaimbak din doon ang mga resulta ng pagsasanay - ang mga resultang sukatan at modelo. Maaari mong makita kung ano ang nasa loob ng workspace sa pamamagitan ng Azure ML portal - at mula doon maaari kang magsagawa ng maraming operasyon, mula sa pag-load ng data hanggang sa pagsubaybay sa mga eksperimento at pag-deploy ng mga modelo.

Maaari kang lumikha ng workspace sa pamamagitan ng web interface Azure Portal (Tingnan. hakbang-hakbang na mga tagubilin), o gamit ang Azure CLI command line (tagubilin):

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

Nauugnay din sa workspace ang ilan mga mapagkukunan ng pag-compute (Magkuwenta). Kapag nakagawa ka na ng script para sanayin ang modelo, magagawa mo magpadala ng eksperimento para sa pagpapatupad sa workspace, at tukuyin kalkulahin ang target - sa kasong ito, ang script ay ipapakete, tatakbo sa gustong computing environment, at pagkatapos ay ise-save ang lahat ng resulta ng eksperimento sa workspace para sa karagdagang pagsusuri at paggamit.

Pag-aaral ng script para sa MNIST

Isaalang-alang ang klasikal na problema sulat-kamay na digit na pagkilala gamit ang dataset ng MNIST. Katulad nito, sa hinaharap, maaari mong patakbuhin ang alinman sa iyong mga script ng pagsasanay.

Mayroong isang script sa aming imbakan train_local.py, na sinasanay namin ang pinakasimpleng modelo ng linear regression gamit ang library ng SkLearn. Siyempre, naiintindihan ko na hindi ito ang pinakamahusay na paraan upang malutas ang problema - ginagamit namin ito para sa isang halimbawa, bilang ang pinakasimpleng.

Unang dina-download ng script ang data ng MNIST mula sa OpenML at pagkatapos ay ginagamit ang klase LogisticRegression upang sanayin ang modelo, at pagkatapos ay i-print ang resultang katumpakan:

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)

Maaari mong patakbuhin ang script sa iyong computer at makuha ang resulta sa loob ng ilang segundo.

Patakbuhin ang script sa Azure ML

Kung patakbuhin namin ang script ng pagsasanay sa pamamagitan ng Azure ML, magkakaroon kami ng dalawang pangunahing bentahe:

  • Pagpapatakbo ng pagsasanay sa isang di-makatwirang mapagkukunan ng computing, na, bilang panuntunan, ay mas produktibo kaysa sa lokal na computer. Kasabay nito, ang Azure ML mismo ang bahala sa pag-pack ng aming script ng lahat ng mga file mula sa kasalukuyang direktoryo sa isang docker container, pag-install ng mga kinakailangang dependency, at pagpapadala nito para sa pagpapatupad.
  • Sumulat ng mga resulta sa iisang registry sa loob ng isang Azure ML workspace. Upang samantalahin ang tampok na ito, kailangan naming magdagdag ng ilang linya ng code sa aming script upang maitala ang nagresultang katumpakan:

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

Ang kaukulang bersyon ng script ay tinatawag train_universal.py (ito ay medyo mas tuso kaysa sa nakasulat sa itaas, ngunit hindi gaanong). Ang script na ito ay maaaring patakbuhin nang lokal at sa isang remote na mapagkukunan ng computing.

Upang patakbuhin ito sa Azure ML mula sa VS Code, kailangan mong gawin ang sumusunod:

  1. Tiyaking nakakonekta ang Azure Extension sa iyong subscription. Piliin ang icon ng Azure mula sa menu sa kaliwa. Kung hindi ka nakakonekta, may lalabas na notification sa kanang sulok sa ibaba (narito ito), sa pamamagitan ng pag-click kung saan maaari kang pumasok sa pamamagitan ng browser. Maaari mo ring i-click Ctrl-Shift-P para tawagan ang command line ng VS Code, at i-type Azure Sign In.

  2. Pagkatapos nito, sa seksyong Azure (icon sa kaliwa), hanapin ang seksyon MAPA NG ARALIN:

Paano madaig ang takot at simulan ang paggamit ng Azure Machine Learning
Dito dapat mong makita ang iba't ibang pangkat ng mga bagay sa loob ng workspace: mga mapagkukunan sa pag-compute, mga eksperimento, atbp.

  1. Pumunta sa listahan ng mga file, i-right click sa script train_universal.py at piliin Azure ML: Patakbuhin bilang eksperimento sa Azure.

Paano madaig ang takot at simulan ang paggamit ng Azure Machine Learning

  1. Susundan ito ng isang serye ng mga dialog sa command line area ng VS Code: kumpirmahin ang subscription at Azure ML workspace na iyong ginagamit, at piliin Gumawa ng bagong eksperimento:

Paano madaig ang takot at simulan ang paggamit ng Azure Machine Learning
Paano madaig ang takot at simulan ang paggamit ng Azure Machine Learning
Paano madaig ang takot at simulan ang paggamit ng Azure Machine Learning

  1. Piliin upang lumikha ng bagong mapagkukunan ng pagkalkula Gumawa ng Bagong Compute:

    • Magkuwenta tinutukoy ang mapagkukunan ng computing kung saan magaganap ang pagsasanay. Maaari kang pumili ng isang lokal na computer, o isang AmlCompute cloud cluster. Inirerekomenda ko ang paglikha ng isang nasusukat na kumpol ng mga makina STANDARD_DS3_v2, na may minimum na bilang ng mga makina na 0 (at maximum na 1 o higit pa, depende sa iyong mga gana). Magagawa ito sa pamamagitan ng interface ng VS Code, o dati sa pamamagitan ng ML Portal.

    Paano madaig ang takot at simulan ang paggamit ng Azure Machine Learning

  2. Susunod, kailangan mong pumili ng isang pagsasaayos Compute Configuration, na tumutukoy sa mga parameter ng lalagyan na nilikha para sa pagsasanay, sa partikular, lahat ng kinakailangang aklatan. Sa aming kaso, dahil gumagamit kami ng Scikit Learn, pipili kami SkLearn, at pagkatapos ay kumpirmahin lamang ang iminungkahing listahan ng mga aklatan sa pamamagitan ng pagpindot sa Enter. Kung gumagamit ka ng anumang karagdagang mga aklatan, dapat na tinukoy ang mga ito dito.

    Paano madaig ang takot at simulan ang paggamit ng Azure Machine Learning
    Paano madaig ang takot at simulan ang paggamit ng Azure Machine Learning

  3. Magbubukas ito ng window na may JSON file na naglalarawan sa eksperimento. Sa loob nito, maaari mong iwasto ang ilang mga parameter - halimbawa, ang pangalan ng eksperimento. Pagkatapos nito, i-click ang link Isumite ang Eksperimento sa loob mismo ng file na ito:

Paano madaig ang takot at simulan ang paggamit ng Azure Machine Learning

  1. Pagkatapos matagumpay na magsumite ng eksperimento sa pamamagitan ng VS Code, sa kanang bahagi ng lugar ng notification, makakakita ka ng link sa Azure ML Portal, kung saan maaari mong subaybayan ang katayuan at mga resulta ng eksperimento.

Paano madaig ang takot at simulan ang paggamit ng Azure Machine Learning
Kasunod nito, palagi mo itong mahahanap sa seksyon Eksperimento Azure ML Portal, o sa seksyon Pag-aaral ng Azure Machine sa listahan ng mga eksperimento:

Paano madaig ang takot at simulan ang paggamit ng Azure Machine Learning

  1. Kung pagkatapos noon ay gumawa ka ng ilang pagwawasto sa code o binago ang mga parameter, ang pag-restart ng eksperimento ay magiging mas mabilis at mas madali. Sa pamamagitan ng pag-right click sa isang file, makakakita ka ng bagong item sa menu Ulitin ang huling pagtakbo - piliin lamang ito, at magsisimula kaagad ang eksperimento:

Paano madaig ang takot at simulan ang paggamit ng Azure Machine Learning
Palagi mong mahahanap ang mga resulta ng mga sukatan mula sa lahat ng paglulunsad sa Azure ML Portal, hindi na kailangang isulat ang mga ito.

Ngayon alam mo na na ang pagpapatakbo ng mga eksperimento sa Azure ML ay simple at walang sakit, at nakakakuha ka ng maraming magagandang benepisyo sa paggawa nito.

Ngunit maaari mo ring makita ang mga disadvantages. Halimbawa, mas matagal bago patakbuhin ang script. Siyempre, ang pag-iimpake ng script sa isang lalagyan at pag-deploy nito sa server ay nangangailangan ng oras. Kung sa parehong oras ang cluster ay pinutol sa isang sukat na 0 node, kakailanganin ng mas maraming oras upang simulan ang virtual machine, at lahat ng ito ay kapansin-pansin kapag nag-eksperimento tayo sa mga simpleng gawain tulad ng MNIST, na nalutas sa ilang segundo. . Gayunpaman, sa totoong buhay, kapag ang pagsasanay ay tumatagal ng ilang oras, o kahit na mga araw o linggo, ang karagdagang oras na ito ay nagiging hindi gaanong mahalaga, lalo na sa background ng mas mataas na pagganap na maaaring ibigay ng isang computing cluster.

Ano ang susunod?

Umaasa ako na pagkatapos basahin ang artikulong ito, magagamit mo at magagamit mo ang Azure ML sa iyong trabaho upang magpatakbo ng mga script, pamahalaan ang mga mapagkukunan ng computing, at mag-imbak ng mga resulta sa gitna. Gayunpaman, ang Azure ML ay maaaring magbigay sa iyo ng higit pang mga benepisyo!

Sa loob ng workspace, maaari kang mag-imbak ng data, sa gayon ay lumikha ng isang sentralisadong imbakan para sa lahat ng iyong mga gawain, na madaling ma-access. Bilang karagdagan, maaari kang magpatakbo ng mga eksperimento hindi mula sa Visual Studio Code, ngunit gamit ang API - maaari itong maging kapaki-pakinabang lalo na kung kailangan mong magsagawa ng hyperparameter optimization at kailangan mong patakbuhin ang script nang maraming beses na may iba't ibang mga parameter. Bukod dito, ang espesyal na teknolohiya ay binuo sa Azure ML Mga hyperdrive, na nagbibigay-daan sa iyong gumawa ng mas nakakalito na paghahanap at pag-optimize ng mga hyperparameter. Pag-uusapan ko ang mga posibilidad na ito sa aking susunod na post.

Kapaki-pakinabang na mapagkukunan

Upang matuto nang higit pa tungkol sa Azure ML, maaari mong makitang kapaki-pakinabang ang sumusunod na mga kurso sa Microsoft Learn:

Pinagmulan: www.habr.com

Magdagdag ng komento