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 — spetsiaalne pilve platvorm masinõppe jaoks. Kuid esmapilgul, vaadates , 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?

Peamine saladus on . 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:
- Veenduge, et teil on installitud , samuti laiendused ja
- Kloonige hoidla — see sisaldab mõningast demonstratsioonikoodi käekirja numbrite tuvastamise mudeli treenimiseks MNIST andmestikul.
- Avage kloonitud hoidla Visual Studio Codes.
- Читайте дальше!
Azure ML Workspace и Azure ML Portal
Azure ML организован вокруг концепции рабочей области — Workspace. В рабочей области могут храниться данные, в неё отправляют эксперименты для обучения, там же хранятся результаты обучения — полученные метрики и модели. Посмотреть, что находится внутри рабочей области, можно через — и оттуда же можно совершать множество операций, начиная от загрузки данных и заканчивая мониторингом экспериментов и развертыванием моделей.
Создать рабочую область можно через веб-интерфейс (vt. ), или с использованием командной строки Azure CLI ():
az extension add -n azure-cli-ml
az group create -n myazml -l northeurope
az ml workspace create -w myworkspace -g myazmlС рабочей областью связаны также некоторые вычислительные ресурсы (Arvutus). Создав скрипт для обучения модели, вы можете послать эксперимент на выполнение в рабочую область, и указать compute target — при этом скрипт будет упакован, запущен в нужной вычислительной среде, а затем все результаты эксперимента будут сохранены в рабочей области для дальнейшего анализа и использования.
Обучающий скрипт для MNIST
Vaadake klassikalist ülesannet 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:
passSkripti 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:
Veenduge, et Azure Extension on teie tellimusega ühendatud. Valige vasakult menüüst Azure ikoon. Kui te pole ühendatud, kuvatakse paremas alanurgas teade (), millele klikates saate sisse logida brauseri kaudu. Samuti saate vajutada Ctrl-Shift-P VS Code'i käsurea avamiseks tippige Azure sisselogimine.
Seejärel leidke Azure sektsioonis (ikoon vasakul) ala MASINÕPE:

Siin peaksite nägema erinevaid objektigrupe tööruumis: arvutusressursid, eksperimendid jne.
- Liikuge failide nimekirja, paremklõpsake skriptil
train_universal.pyja vali Azure ML: Käivita kui eksperiment Azure'is.

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



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 .

- Arvutus määrab arvutusressursi, kus koolitus toimub. Võite valida kohaliku arvuti või AmlCompute'i pilvklastri. Soovitan luua skaleeritava masinate klastrit
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.


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:

- Pärast eksperimendi edukat esitamist läbi VS Code'i, näete paremal teavituste alal linki , kus saate jälgida eksperimendi olekut ja tulemusi.

Hiljem leiate selle alati jaotusest Eksperimendid , või jaotusest Azure Machine Learning eksperimentide loendis:

- 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:

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 , 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



