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

Poznám veľa Data Scientists – a možno som jedným z nich –, ktorí pracujú na strojoch GPU, lokálnych alebo virtuálnych, umiestnených v cloude, buď prostredníctvom Jupyter Notebooku alebo prostredníctvom nejakého vývojového prostredia Python. Pracoval som 2 roky ako expert vývojár v AI/ML, presne toto som robil pri príprave dát na bežnom serveri alebo pracovnej stanici a pri školení na virtuálnom stroji s GPU v Azure.

Samozrejme, všetci sme o tom počuli Azure Machine Learning — špeciálna cloudová platforma pre strojové učenie. Avšak po prvom pohľade na úvodné články, zdá sa, že Azure ML vám viac problémov vytvorí, ako vyrieši. Napríklad vo vyššie uvedenom príklade školenia sa školenie o Azure ML spúšťa z notebooku Jupyter, zatiaľ čo samotný školiaci skript sa navrhuje vytvoriť a upraviť ako textový súbor v jednej z buniek - bez použitia automatického dopĺňania, zvýrazňovania syntaxe a iných výhody bežného vývojového prostredia. Z tohto dôvodu sme Azure ML pri našej práci dlho vážne nepoužívali.

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?

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

Hlavným tajomstvom je Rozšírenie Visual Studio Code pre Azure ML. Umožňuje vám vyvíjať školiace skripty priamo vo VS Code s plným využitím výhod prostredia – a dokonca môžete skript spustiť lokálne a potom ho jednoducho niekoľkými kliknutiami poslať trénovať na klastri Azure ML. Pohodlné, nie?

Pri používaní Azure ML získate nasledujúce výhody:

  • Väčšinu času môžete pracovať lokálne na vašom počítači vo vhodnom IDE a používajte GPU iba na tréning modelu. Súčasne sa fond tréningových zdrojov môž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 stroj „na požiadanie“, ak existujú tréningové úlohy.
  • Môžete uložiť všetky výsledky vzdelávania na jednom mieste, vrátane dosiahnutých metrík a výsledných modelov – nie je potrebné vymýšľať nejaký systém alebo poriadok na ukladanie všetkých výsledkov.
  • V tomto prípade, Na jednom projekte môže pracovať viacero ľudí - môžu používať rovnaký výpočtový klaster, všetky experimenty budú zaradené do frontu a môžu tiež vidieť výsledky svojich experimentov. Jeden taký scenár je používanie Azure ML pri výučbe hlbokého učenia, kde namiesto toho, aby ste každému študentovi dali virtuálny stroj s GPU, môžete vytvoriť jeden klaster, ktorý budú centrálne využívať všetci. Všeobecná tabuľka výsledkov s presnosťou modelu môže navyše slúžiť ako dobrý konkurenčný prvok.
  • Pomocou Azure ML môžete jednoducho spustiť sériu experimentov, napr. optimalizácia hyperparametrov - dá sa to urobiť pomocou niekoľkých riadkov kódu, nie je potrebné vykonávať sériu experimentov manuálne.

Dúfam, že som vás presvedčil, aby ste vyskúšali Azure ML! Tu je návod, ako začať:

Azure ML Workspace a Azure ML Portal

Azure ML je organizovaný okolo konceptu pracovná oblasť - Pracovný priestor. V pracovnom priestore môžu byť uložené dáta, môžu sa doň odosielať experimenty na školenie a tiež sa tam ukladajú výsledky školenia – výsledné metriky a modely. Môžete vidieť, čo je vo vnútri pracovného priestoru pomocou Portál Azure ML - a odtiaľ môžete vykonávať mnoho operácií, od načítania údajov až po monitorovanie experimentov a nasadzovanie modelov.

Cez webové rozhranie si vytvoríte pracovný priestor 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

Niektoré sú tiež spojené s pracovným priestorom výpočtových zdrojov (Vypočítať). Po vytvorení skriptu na trénovanie modelu môžete poslať experiment na vykonanie do pracovnej oblasti a špecifikujte vypočítať cieľ - v tomto prípade sa skript zabalí, spustí v požadovanom výpočtovom prostredí a potom sa všetky výsledky experimentu uložia do pracovného priestoru na ďalšiu analýzu a použitie.

Školiaci skript pre MNIST

Pozrime sa na klasický problém rozpoznávanie ručne písaných číslic pomocou súboru údajov MNIST. Podobne v budúcnosti budete môcť vykonávať ktorýkoľvek zo svojich tréningových skriptov.

V našom úložisku je skript train_local.py, ktorá trénuje najjednoduchší lineárny regresný model pomocou knižnice SkLearn. Samozrejme chápem, že to nie je najlepší spôsob riešenia problému - používame to ako príklad, ako najjednoduchší.

Skript najprv stiahne dáta MNIST z OpenML a potom použije triedu LogisticRegression na trénovanie modelu a potom vytlačí 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 za pár sekúnd dostanete výsledok.

Spustenie skriptu v Azure ML

Ak spustíme školiaci skript cez Azure ML, budeme mať dve hlavné výhody:

  • Spustenie školenia na ľubovoľnom výpočtovom zdroji, ktorý je zvyčajne produktívnejší ako lokálny počítač. Samotný Azure ML sa v tomto prípade postará o zabalenie nášho skriptu so všetkými súbormi z aktuálneho adresára do docker kontajnera, nainštalovanie požadovaných závislostí a odoslanie na spustenie.
  • Zapisujte výsledky do jedného registra v rámci pracovného priestoru Azure ML. Aby sme mohli využiť túto funkciu, musíme do nášho skriptu pridať pár riadkov kódu, aby sme zaznamenali výslednú presnosť:

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 prefíkanejšie navrhnuté ako vyššie popísané, ale nie moc). Tento skript je možné spustiť lokálne aj na vzdialenom výpočtovom prostriedku.

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. Vyberte ikonu Azure z ponuky vľavo. Ak nie ste pripojení, v pravom dolnom rohu sa zobrazí upozornenie (Páči sa ti to), kliknutím na ktorý sa môžete prihlásiť cez prehliadač. Môžete tiež kliknúť Ctrl-Shift-P otvorte príkazový riadok kódu VS a zadajte Prihlásenie do Azure.

  2. Potom v sekcii Azure (ikona vľavo) nájdite sekciu VZDELÁVANIE STROJOV:

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

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

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

  1. Potom bude nasledovať séria dialógových okien v oblasti príkazového riadka VS Code: potvrďte svoje predplatné a pracovný priestor Azure ML a vyberte Vytvorte 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, ak chcete vytvoriť nový výpočtový zdroj 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 strojov STANDARD_DS3_v2, s minimálnym počtom strojov 0 (a maximálny môže byť 1 alebo viac, v závislosti od vášho apetítu). Dá sa to urobiť cez rozhranie VS Code alebo predtým cez Portál ML.

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

  2. Ďalej musíte vybrať konfiguráciu Výpočet konfigurácie, ktorý definuje parametre kontajnera vytvoreného na školenie, najmä všetkých potrebných knižníc. V našom prípade, keďže používame Scikit Learn, vyberáme SkLearna potom jednoducho potvrďte navrhovaný zoznam knižníc stlačením klávesu Enter. Ak používate ďalšie knižnice, musíte ich špecifikovať tu.

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

  3. Potom sa otvorí okno so súborom JSON popisujúcim experiment. Môžete v ňom opraviť 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 kódu VS sa v oblasti oznámení na pravej strane zobrazí odkaz na Portál Azure ML, kde môžete sledovať stav a výsledky experimentu.

Ako prekonať strach a začať používať Azure Machine Learning
Následne ho vždy nájdete v sekcii pokusy Portál Azure ML, alebo v sekcii Azure Machine Learning v zozname experimentov:

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

  1. Ak ste následne 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 myši na súbor sa zobrazí nová položka ponuky Opakujte posledný chod - 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í môžete vždy nájsť na portáli Azure ML, nie je potrebné ich zaznamenávať.

Teraz už viete, že spúšťanie experimentov pomocou Azure ML je jednoduché, bezbolestné a prináša niekoľko zaujímavých výhod.

Možno ste si však všimli nejaké 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 sa klaster zmenšil na veľkosť 0 uzlov, spustenie virtuálneho stroja bude trvať ešte dlhšie, a to všetko je veľmi viditeľné, keď experimentujeme na jednoduchých problémoch, ako je MNIST, ktoré sú vyriešené za pár sekúnd. V reálnom živote, keď školenie trvá niekoľko hodín alebo dokonca dní alebo týždňov, sa tento dodatočný čas stáva bezvýznamným, najmä na pozadí oveľa vyššieho výkonu, ktorý môže poskytnúť výpočtový klaster.

Čo bude ďalej?

Dúfam, že po prečítaní tohto článku môžete a budete používať Azure ML vo svojej práci na spúšťanie skriptov, správu výpočtových zdrojov a centrálne ukladanie výsledkov. Azure ML vám však môže poskytnúť ešte viac výhod!

Dáta môžete ukladať do pracovného priestoru, čím vytvoríte centralizované úložisko pre všetky vaše úlohy, ku ktorému je jednoduchý prístup. Okrem toho môžete experimenty spúšťať pomocou API namiesto kódu Visual Studio – to môže byť užitočné najmä vtedy, ak potrebujete vykonať optimalizáciu hyperparametrov a potrebujete spustiť skript mnohokrát s rôznymi parametrami. Okrem toho je v Azure ML zabudovaná špeciálna technológia 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

Ak sa chcete dozvedieť viac o Azure ML, môžu byť užitočné nasledujúce kurzy Microsoft Learn:

Zdroj: hab.com

Pridať komentár