Ako prekonať strach a začať používať Azure Machine Learning

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 Azure Machine Learning — špecializovaná cloudová platforma pre strojové učenie. Avšak po prvom pohľade na úvodné články, 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?

Ako prekonať strach a začať používať Azure Machine Learning

Hlavné tajomstvo je toto Rozšírenie Visual Studio Code pre Azure MLUmožň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ť:

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 Portál Azure ML — 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. Azure Portal (Viď. pokyny krok za krokom) alebo pomocou príkazového riadka Azure CLI (inštrukcie):

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

Existujú 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 rozpoznávanie ručne písaných číslic 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:
    pass

Zodpovedajú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é:

  1. 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 (takto), 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.

  2. Potom v sekcii Azure (ikona vľavo) vyhľadajte sekciu VZDELÁVANIE STROJOV:

Ako prekonať strach a začať používať Azure Machine Learning
Tu by ste mali vidieť rôzne skupiny objektov v rámci pracovného priestoru: výpočtové zdroje, experimenty atď.

  1. Prejdite do zoznamu súborov, kliknite pravým tlačidlom myši na skript train_universal.py a vyberte Azure ML: Spustiť ako experiment v Azure.

Ako prekonať strach a začať používať Azure Machine Learning

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

Ako prekonať strach a začať používať Azure Machine Learning
Ako prekonať strach a začať používať Azure Machine Learning
Ako prekonať strach a začať používať Azure Machine Learning

  1. 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 Portál strojového učenia.

    Ako prekonať strach a začať používať Azure Machine Learning

  2. Ď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ť.

    Ako prekonať strach a začať používať Azure Machine Learning
    Ako prekonať strach a začať používať Azure Machine Learning

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

Ako prekonať strach a začať používať Azure Machine Learning

  1. Po úspešnom odoslaní experimentu prostredníctvom VS Code sa zobrazí odkaz na Portál strojového učenia Azure, kde môžete sledovať stav a výsledky experimentu.

Ako prekonať strach a začať používať Azure Machine Learning
Vždy to nájdete neskôr v danej sekcii. pokusy Portál strojového učenia Azurealebo v sekcii Azure Machine Learning v zozname experimentov:

Ako prekonať strach a začať používať Azure Machine Learning

  1. 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í:

Ako prekonať strach a začať používať Azure Machine Learning
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. Hyperpohon, č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

Kúpte si spoľahlivý hosting pre stránky s DDoS ochranou, VPS VDS servery 🔥 Kúpte si spoľahlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster