Poznám veľa dátových vedcov – a pravdepodobne som jedným z nich aj ja – ktorí pracujú na počítačoch vybavených grafickou kartou, či už lokálnych alebo virtuálnych, hostovaných v cloude, s použitím buď Jupyter Notebook, alebo nejakého vývojového prostredia v Pythone. Počas mojich dvoch rokov ako expertný vývojár v oblasti AI/ML som robil presne to isté, pripravoval som dáta na bežnom serveri alebo pracovnej stanici a spúšťal školenia na virtuálnom počítači vybavenom grafickou kartou v Azure.
Samozrejme, všetci sme už počuli o — špecializovaná cloudová platforma pre strojové učenie. Avšak po prvom pohľade na , zdá sa, že Azure ML vytvorí viac problémov, ako ich vyrieši. Napríklad v uvedenom príklade tréningu je tréning Azure ML spustený z Jupyter Notebooku, ale samotný tréningový skript je vytvorený a upravený ako textový súbor v jednej z buniek – bez výhody automatického dopĺňania, zvýrazňovania syntaxe alebo iných výhod bežného vývojového prostredia. Z tohto dôvodu sme Azure ML dlho vážne nepoužívali v našej práci.
Nedávno som však objavil spôsob, ako začať efektívne používať Azure ML vo svojej práci! Chcete sa dozvedieť viac?

Hlavné tajomstvo je toto Umožňuje vám vyvíjať tréningové skripty priamo vo VS Code a naplno využívať prostredie. Skript môžete dokonca spustiť lokálne a potom ho jednoducho odoslať do klastra Azure ML na trénovanie len niekoľkými kliknutiami. Pohodlné, však?
Zároveň získate nasledujúce výhody používania Azure ML:
- Väčšinu času môžete pracovať lokálne na svojom počítači v pohodlnom IDE a používať GPU iba na trénovanie modeluFond tréningových zdrojov sa dokáže automaticky prispôsobiť požadovanému zaťaženiu a nastavením minimálneho počtu uzlov na 0 môžete automaticky spustiť virtuálny počítač „na požiadanie“, keď sú k dispozícii tréningové úlohy.
- Môžete ukladať všetky výsledky učenia na jednom mieste, vrátane dosiahnutých metrík a výsledných modelov – nie je potrebné vymýšľať žiadny systém ani poriadok na ukladanie všetkých výsledkov.
- V tomto prípade, na jednom projekte môže pracovať viacero ľudí — môžu používať ten istý výpočtový klaster, všetky experimenty budú zaradené do fronty a môžu si tiež pozrieť výsledky experimentov ostatných. Jedným z takýchto scenárov je Používanie Azure ML vo výučbe hlbokého učeniaNamiesto toho, aby ste každému študentovi poskytli virtuálny stroj s grafickým procesorom, môžete vytvoriť jeden klaster, ktorý môže každý centrálne používať. Okrem toho môže zdieľaná výsledková tabuľka s presnosťou modelu slúžiť ako dobrý prvok súťaživosti.
- Pomocou Azure ML môžete jednoducho spustiť sériu experimentov, ako napríklad optimalizácia hyperparametrov - Toto sa dá urobiť pomocou niekoľkých riadkov kódu, nie je potrebné manuálne vykonávať sériu experimentov.
Dúfam, že som vás presvedčil, aby ste vyskúšali Azure ML! Tu je postup, ako začať:
- Uistite sa, že ho máte nainštalovaný , ako aj rozšírenia и
- Naklonujte úložisko — obsahuje demo kód na trénovanie modelu rozpoznávania ručne písaných číslic na dátovej sade MNIST.
- Otvorte klonovaný repozitár v programe Visual Studio Code.
- Čítajte ďalej!
Pracovný priestor Azure ML a portál Azure ML
Azure ML je organizované okolo konceptu pracovná oblasť — Pracovný priestor. Pracovný priestor môže ukladať dáta, odosielajú sa doň experimenty na trénovanie a ukladajú sa tam aj výsledky trénovania – výsledné metriky a modely. Obsah pracovného priestoru si môžete pozrieť pomocou — a odtiaľ môžete vykonávať rôzne operácie, od načítavania údajov až po monitorovanie experimentov a nasadzovanie modelov.
Pracovný priestor si môžete vytvoriť prostredníctvom webového rozhrania. (Viď. ) alebo pomocou príkazového riadka Azure CLI ():
az extension add -n azure-cli-ml
az group create -n myazml -l northeurope
az ml workspace create -w myworkspace -g myazmlExistujú aj niektoré súvisiace s pracovnou oblasťou výpočtové zdroje (Vypočítať). Keď vytvoríte skript na trénovanie modelu, môžete odoslať experiment na vykonanie do pracovnej oblasti a špecifikujte vypočítať cieľ — skript bude zabalený, spustený v požadovanom výpočtovom prostredí a potom budú všetky výsledky experimentu uložené v pracovnom priestore pre ďalšiu analýzu a použitie.
Tréningový skript pre MNIST
Zoberme si klasický problém pomocou súboru údajov MNIST. Rovnakým spôsobom môžete spustiť ľubovoľný z vlastných trénovacích skriptov.
V našom repozitári je skript train_local.py, ktorý trénuje jednoduchý model lineárnej regresie pomocou knižnice SkLearn. Samozrejme, chápem, že to nie je najlepší spôsob riešenia problému – používame ho ako príklad, pretože je najjednoduchší.
Skript najprv stiahne dáta MNIST z OpenML a potom použije triedu LogisticRegression na trénovanie modelu a potom vypíše výslednú presnosť:
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)Skript môžete spustiť na počítači a výsledok získate za pár sekúnd.
Spustite skript v Azure ML
Ak spustíme tréningový skript cez Azure ML, budeme mať dve hlavné výhody:
- Spustite tréning na ľubovoľnom výpočtovom zdroji, ktorý je zvyčajne výkonnejší ako lokálny počítač. Azure ML automaticky zabalí náš skript so všetkými súbormi z aktuálneho adresára do kontajnera Docker, nainštaluje požadované závislosti a odošle ho na spustenie.
- Zápis výsledkov do jednotného registra v rámci pracovného priestoru Azure ML. Aby sme mohli túto funkciu využiť, musíme do nášho skriptu pridať niekoľko riadkov kódu na zaznamenanie 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 to trochu sofistikovanejšie, ako je popísané vyššie, ale nie o veľa.) Tento skript je možné spustiť lokálne aj na vzdialenom výpočtovom zdroji.
Ak ho chcete spustiť v Azure ML z VS Code, musíte urobiť nasledovné:
Uistite sa, že rozšírenie Azure je pripojené k vášmu predplatnému. V ľavej ponuke vyberte ikonu Azure. Ak nie ste pripojení, v pravom dolnom rohu sa zobrazí upozornenie (), kliknutím na ktoré sa môžete prihlásiť cez prehliadač. Môžete tiež kliknúť Ctrl-Shift-P otvorte príkazový riadok VS Code a zadajte Prihlásenie do Azure.
Potom v sekcii Azure (ikona vľavo) vyhľadajte sekciu VZDELÁVANIE STROJOV:

Tu by ste mali vidieť rôzne skupiny objektov v rámci pracovného priestoru: výpočtové zdroje, experimenty atď.
- Prejdite do zoznamu súborov, kliknite pravým tlačidlom myši na skript
train_universal.pya vyberte Azure ML: Spustiť ako experiment v Azure.

- Následne sa zobrazí séria dialógových okien v oblasti príkazového riadka VS Code: potvrďte predplatné Azure ML a pracovný priestor, ktorý používate, a vyberte Vytvoriť nový experiment:



Vyberte vytvorenie nového výpočtového zdroja Vytvoriť nový výpočet:
- Vypočítať Určuje výpočtový zdroj, na ktorom bude prebiehať školenie. Môžete si vybrať lokálny počítač alebo cloudový klaster AmlCompute. Odporúčam vytvoriť škálovateľný klaster počítačov.
STANDARD_DS3_v2, s minimálnym počtom strojov 0 (a maximálnym môže byť 1 alebo viac, v závislosti od vašej chuti). Toto je možné vykonať prostredníctvom rozhrania VS Code alebo vopred prostredníctvom .

- Vypočítať Určuje výpočtový zdroj, na ktorom bude prebiehať školenie. Môžete si vybrať lokálny počítač alebo cloudový klaster AmlCompute. Odporúčam vytvoriť škálovateľný klaster počítačov.
Ďalej je potrebné vybrať konfiguráciu Konfigurácia výpočtov, ktorý definuje parametre kontajnera vytvoreného pre tréning, najmä všetky potrebné knižnice. V našom prípade, keďže používame Scikit Learn, vyberieme SkLearna potom jednoducho potvrďte navrhovaný zoznam knižníc stlačením klávesu Enter. Ak používate ďalšie knižnice, mali by ste ich tu zadať.


Otvorí sa okno so súborom JSON popisujúcim experiment. Tu 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 sa zobrazí odkaz na , kde môžete sledovať stav a výsledky experimentu.

Vždy to nájdete neskôr v danej sekcii. pokusy alebo v sekcii Azure Machine Learning v zozname experimentov:

- Ak ste odvtedy vykonali nejaké zmeny v kóde alebo zmenili nejaké parametre, opätovné spustenie experimentu bude oveľa rýchlejšie a jednoduchšie. Kliknutím pravým tlačidlom myši na súbor sa zobrazí nová položka ponuky. Zopakujte posledný beh — stačí ho vybrať a experiment sa okamžite spustí:

Výsledky metrík zo všetkých spustení nájdete vždy na portáli Azure ML; nie je potrebné ich zaznamenávať.
Teraz viete, že spúšťanie experimentov s Azure ML je jednoduché a bezbolestné a získate množstvo pekných výhod.
Možno ste si však všimli aj niektoré nevýhody. Napríklad spustenie skriptu trvalo výrazne dlhšie. Samozrejme, zabalenie skriptu do kontajnera a jeho nasadenie na server si vyžaduje čas. Ak by bol klaster zmenšený na 0 uzlov, spustenie virtuálneho počítača by trvalo ešte dlhšie. Toto je obzvlášť viditeľné, keď experimentujeme s jednoduchými problémami, ako je MNIST, ktorých riešenie trvá niekoľko sekúnd. V reálnom živote, keď trénovanie trvá hodiny, alebo dokonca dni či týždne, sa tento dodatočný čas stáva nevýznamným, najmä v porovnaní s výrazne vyšším výkonom, ktorý môže výpočtový klaster poskytnúť.
Čo bude ďalej?
Dúfam, že po prečítaní tohto článku budete vedieť a budete používať Azure ML vo svojom pracovnom postupe na spúšťanie skriptov, správu výpočtových zdrojov a centralizáciu výsledkov. Azure ML vám však môže ponúknuť ešte viac výhod!
Dáta môžete ukladať vo svojom pracovnom priestore a vytvoriť tak centralizované a ľahko dostupné úložisko pre všetky vaše úlohy. Experimenty môžete spúšťať aj pomocou rozhrania API namiesto kódu Visual Studio – to môže byť obzvlášť užitočné, ak potrebujete vykonať optimalizáciu hyperparametrov a spustiť skript viackrát s rôznymi parametrami. Azure ML má navyše na to zabudovanú technológiu. , čo umožňuje sofistikovanejšie vyhľadávanie a optimalizáciu hyperparametrov. O týchto možnostiach budem hovoriť v ďalšom príspevku.
Užitočné zdroje
Pre hlbšie pochopenie Azure ML vám môžu byť užitočné nasledujúce kurzy Microsoft Learn:
Zdroj: hab.com



