Poznám veľa Data Scientistov — a možno sa aj sám radím medzi nich — ktorí pracujú na strojoch s GPU, lokálnych alebo virtuálnych, umiestnených v cloude, buď cez Jupyter Notebook, alebo prostredníctvom nejakej vývojovej platformy Python. Počas dvoch rokov ako expert na vývoj AI/ML som presne takto pracoval, pričom som pripravoval dáta na bežnom serveri alebo pracovnej stanici a spúšťal učenie na virtuálke s GPU v Azure.
Samozrejme, všetci sme počuli o — špeciálnej cloudovej platforme pre strojové učenie. Avšak po prvom pohľade na , vzniká dojem, že Azure ML vám skôr spôsobí viac problémov, ako vyrieši. Napríklad v spomenutom vzorovom učení sa učenie na Azure ML spúšťa z Jupyter Notebooku, pričom samotný učenia skript sa navrhuje vytvárať a upravovať ako textový súbor v jednej z buniek — pričom sa nevyužívajú automatické doplňovanie, zvýraznenie syntaxe a ďalšie výhody riadnej vývojovej platformy. Z tohto dôvodu sme dlhú dobu vážne nepoužívali Azure ML vo svojej práci.
Nedávno som však objavil spôsob, ako začať efektívne využívať Azure ML vo svojej práci! Zaujímajú vás podrobnosti?

Hlavné tajomstvo spočíva v . Umožňuje vám vyvíjať vzdelávacie skripty priamo vo VS Code, pričom využívate všetky výhody prostredia — a môžete dokonca spustiť skript lokálne a potom ho jednoducho odoslať na učenie do clustera Azure ML niekoľkými kliknutiami myši. Pohodlné, nie?
Zároveň získavate nasledujúce výhody z používania Azure ML:
- Môžete pracovať väčšinu času lokálne na svojom stroji v pohodlnom IDE, a využiť GPU len pre učenie modelu. Zároveň sa skupina učebných zdrojov môže automaticky prispôsobiť požadovanej záťaži, a nastavením minimálneho počtu uzlov na 0 môžete automaticky spustiť virtuálku "na požiadanie" pri dostupnosti učenia.
- Môžete uchovávať všetky výsledky učenia na jednom mieste, vrátane dosiahnutých metrík a získaných modelov — nie je potrebné si sám vymýšľať nejaký systém alebo poradie pre uchovávanie všetkých výsledkov.
- Pri tom na jednom projekte môžu pracovať viacerí ľudia — môžu používať rovnaký výpočtový kluster, všetky experimenty budú zoradené a môžu vidieť výsledky experimentov iných. Jedným zo scenárov je využitie Azure ML pri vyučovaní Deep Learning, kedy namiesto toho, aby sa každému študentovi poskytol virtuálny stroj s GPU, môžete vytvoriť jeden kluster, ktorý budú všetci centralizovane používať. Okrem toho môže spoločná tabuľka výsledkov s presnosťou modelu slúžiť ako dobrý súťažný prvok.
- S pomocou Azure ML môžete jednoducho vykonávať série experimentov, napríklad pre optimalizáciu hyperparametrov — môžete to robiť s niekoľkými riadkami kódu, nie je potrebné vykonávať série experimentov manuálne.
Dúfam, že som vás presvedčil vyskúšať Azure ML! Tu je, ako začať:
- Uistite sa, že máte nainštalované , ako aj rozšírenia a
- Klonujte repozitár — obsahuje niekoľko ukážkových kódov na tréning modelu rozpoznávania ručne písaných číslic na datasete MNIST.
- Otvorenie skloneného repozitára vo Visual Studio Code.
- Čítajte ďalej!
Azure ML Workspace a Azure ML Portal
Azure ML je organizovaný okolo konceptu pracovnej oblasti — Workspace. V pracovnej oblasti môžu byť uložené dáta, do nej sa posielajú experimenty na školenie, tam sa ukladajú aj výsledky školenia — získané metriky a modely. Prezrieť si, čo je v pracovnej oblasti, môžete prostredníctvom — a odtiaľ môžete vykonávať množstvo operácií, od nahrávania dát po monitorovanie experimentov a nasadenie modelov.
Vytvoriť pracovnú oblasť môžete prostredníctvom webového rozhrania (pozri. ), alebo pomocou príkazového riadku Azure CLI ():
az extension add -n azure-cli-ml
az group create -n myazml -l northeurope
az ml workspace create -w myworkspace -g myazmlS pracovnou oblasťou sú tiež spojené niektoré výpočtové zdroje (Compute). Po vytvorení skriptu na školenie modelu môžete poslať experiment na vykonanie do pracovnej oblasti a určiť cílenie na výpočty — skript bude zabalený, spustený v potrebnom výpočtovom prostredí, a potom budú všetky výsledky experimentu uložené v pracovnej oblasti na ďalšiu analýzu a využitie.
Skripty na školenie pre MNIST
Pozrime sa na klasickú úlohu s použitím sady údajov MNIST. Podobne v budúcnosti budete môcť vykonávať akékoľvek svoje tréningové skripty.
V našom repozitári je skript train_local.py, ktorý trénuje najjednoduchší model lineárnej regresie s použitím knižnice SkLearn. Samozrejme, chápem, že to nie je najlepší spôsob, ako vyriešiť úlohu — používame ho ako príklad, ako najjednoduchší.
Skript najprv sťahuje dáta MNIST z OpenML a potom používa triedu LogisticRegression na trénovanie modelu a potom vytlačí dosiahnutú presnosť:
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('Celkova presnosť:', acc)Môžete spustiť skript na svojom počítači a za pár sekúnd dostanete výsledok.
Spúšťame skript v Azure ML
Ak však budeme spúšťať skript na trénovanie cez Azure ML, budeme mať dve hlavné výhody:
- Spustenie trénovania na libovolnom výpočtovom zdroji, ktorý je zvyčajne výkonnejší ako lokálny počítač. Azure ML sa postará o to, aby zabalil náš skript so všetkými súbormi z aktuálneho adresára do docker kontajnera, nainštaloval potrebné závislosti a poslal ho na vykonanie.
- Zápis výsledkov do jedného registra v rámci pracovnej oblasti Azure ML. Aby sme mohli využiť túto možnosť, musíme pridať pár riadkov kódu do nášho skriptu na zápis výslednej presnosti:
from azureml.core.run import Run
...
try:
run = Run.get_submitted_run()
run.log('accuracy', acc)
except:
passZodpovedajúca verzia skriptu sa nazýva train_universal.py (je o niečo zložitejšia, ako je napísané vyššie, ale nie príliš). Tento skript možno spustiť ako lokálne, tak aj na vzdialenom výpočtovom zdroji.
Aby ste ho mohli spustiť v Azure ML z VS Code, musíte urobiť nasledovné:
Uistite sa, že rozšírenie Azure je pripojené k vašej predplatnej. Vyberte ikonu Azure v menu vľavo. Ak nie ste pripojení, v pravom dolnom rohu sa objaví oznámenie (), na ktoré kliknutím môžete vstúpiť cez prehliadač. Môžete tiež stlačiť Ctrl-Shift-P , aby ste otvorili príkazový riadok VS Code a napisali Azure Sign In.
Po tom v sekcii Azure (ikona vľavo) nájdite časť STROJOVÉ UČENIE:

Tu by ste mali vidieť rôzne skupiny objektov v pracovnej oblasti: výpočtové zdroje, experimenty atď.
- Prejdite na zoznam súborov, kliknite pravým tlačidlom na skript
train_universal.pya vyberte Azure ML: Spustiť ako experiment v Azure.

- Potom sa objaví séria dialógov v príkazovom riadku VS Code: potvrďte používané predplatné a pracovnú oblasť Azure ML a vyberte Vytvoriť nový experiment:



Vyberte možnosť vytvorenia nového výpočtového zdroja Vytvoriť nový výpočtový zdroj:
- Compute definuje výpočtový zdroj, na ktorom sa bude trénovať. Môžete si vybrať lokálny počítač alebo cloudový klastra AmlCompute. Odporúčam vytvoriť škálovateľný klaster strojov
STANDARD_DS3_v2, s minimálnym počtom strojov 0 (a maximálnym môže byť 1 alebo viac, v závislosti od vašich potrieb). To sa dá urobiť prostredníctvom rozhrania VS Code alebo vopred cez .

- Compute definuje výpočtový zdroj, na ktorom sa bude trénovať. Môžete si vybrať lokálny počítač alebo cloudový klastra AmlCompute. Odporúčam vytvoriť škálovateľný klaster strojov
Ďalej je potrebné vybrať konfiguráciu Konfigurácia výpočtu, ktorá definuje parametre, ktoré sa vytvorí pre trénovací kontajner, najmä všetky potrebné knižnice. V našom prípade, keďže používame Scikit Learn, vyberáme SkLearn, a potom jednoducho potvrdíme navrhnutý zoznam knižníc stlačením Enter. Ak používate nejaké ďalšie knižnice — je potrebné ich tu zadať.


Potom sa otvorí okno s JSON súborom, ktorý popisuje experiment. V ňom môžete upraviť niektoré parametre — napríklad názov experimentu. Potom kliknite na odkaz Odoslať experiment priamo v tomto súbore:

- Po úspešnom odoslaní experimentu prostredníctvom VS Code uvidíte napravo v oblasti oznamov odkaz na , kde môžete sledovať stav a výsledky experimentu.

Neskôr ho vždy nájdete v sekcii Experimenty , alebo v sekcii Azure Machine Learning v zozname experimentov:

- Ak ste potom vykonali nejaké opravy v kóde alebo zmenili parametre — opätovné spustenie experimentu bude oveľa rýchlejšie a jednoduchšie. Kliknutím pravým tlačidlom na súbor uvidíte novú položku v ponuke Opakovať posledný beh — stačí si ju vybrať a experiment sa okamžite spustí:

Výsledky metrík zo všetkých behov vždy nájdete na Azure ML Portal, nie je potrebné ich zapisovať.
Teraz už viete, že spúšťanie experimentov pomocou Azure ML je jednoduché a bezbolestné, a pritom získavate množstvo výhod.
Avšak mohli ste si všimnúť aj nedostatky. Napríklad spustenie skriptu si vyžaduje podstatne viac času. Samozrejme, zabalenie skriptu do kontajnera a jeho nasadenie na server si vyžaduje čas. Ak je pritom klaster zredukovaný na veľkosť 0 uzlov, spustenie virtuálneho stroja bude trvať ešte dlhšie, a to sa stáva veľmi zreteľným, keď experimentujeme na jednoduchých úlohách, ako je MNIST, ktoré sa riešia za niekoľko sekúnd. V skutočnom živote však, keď učenie trvá niekoľko hodín, ba dokonca dní alebo týždňov, tento dodatočný čas sa stáva nevýznamným, najmä na pozadí výrazne vyššieho výkonu, ktorý môže poskytnúť výpočtový klaster.
Čo ďalej?
Dúfam, že po prečítaní tohto článku budete schopní a ochotní používať Azure ML vo svojej práci na spúšťanie skriptov, správu výpočtových zdrojov a centralizované ukladanie výsledkov. Azure ML vám však môže poskytnúť ešte viac výhod!
V rámci pracovného priestoru môžete uchovávať dáta a tým vytvárať centralizované úložisko pre všetky svoje úlohy, ku ktorému sa dá ľahko pristupovať. Okrem toho môžete spúšťať experimenty nielen z Visual Studio Code, ale aj pomocou API – to môže byť obzvlášť užitočné, ak potrebujete optimalizovať hyperparametre a potrebujete spustiť skript viackrát s rôznymi parametrami. Navyše, Azure ML obsahuje špeciálnu technológiu , ktorá umožňuje lepšie vyhľadávanie a optimalizáciu hyperparametrov. O týchto možnostiach sa zmienim vo svojej ďalšej poznámke.
Užitočné zdroje
Pre podrobnejšie preskúmanie Azure ML vám môžu byť užitočné nasledujúce kurzy Microsoft Learn:
Zdroj: habr.com



