Jak překonat strach a začít používat Azure Machine Learning

Znám mnoho Data Scientistů – a sám jsem pravděpodobně jedním z nich – kteří pracují na strojích GPU, lokálních nebo virtuálních, umístěných v cloudu, buď prostřednictvím Jupyter Notebooku nebo prostřednictvím nějakého vývojového prostředí Pythonu. Pracoval jsem 2 roky jako expert na AI/ML vývojář, přesně tohle jsem dělal, připravoval jsem data na běžném serveru nebo pracovní stanici a vedl školení na virtuálním počítači s GPU v Azure.

Samozřejmě jsme o tom všichni slyšeli Azure Machine Learning — speciální cloudová platforma pro strojové učení. Nicméně po prvním pohledu na úvodní články, zdá se, že Azure ML vám více problémů vytvoří, než vyřeší. Například ve výše uvedeném tutoriálu se školení o Azure ML spouští z notebooku Jupyter, zatímco samotný školicí skript se navrhuje vytvořit a upravit jako textový soubor v jedné z buněk – bez použití automatického dokončování, syntaxe zvýraznění a další výhody běžného vývojového prostředí. Z tohoto důvodu jsme Azure ML v naší práci dlouho vážně nepoužívali.

Nedávno jsem však objevil způsob, jak ve své práci začít efektivně využívat Azure ML! Zajímají vás podrobnosti?

Jak překonat strach a začít používat Azure Machine Learning

Hlavním tajemstvím je Rozšíření Visual Studio Code pro Azure ML. Umožňuje vám vyvíjet školicí skripty přímo ve VS Code s plným využitím výhod prostředí – a dokonce můžete skript spustit lokálně a poté jej jednoduše odeslat na školení v clusteru Azure ML pomocí pár kliknutí. Pohodlné, že?

Díky tomu získáte z používání Azure ML následující výhody:

  • Většinu času můžete pracovat lokálně na vašem počítači v pohodlném IDE a používejte GPU pouze pro trénink modelu. Současně se fond tréninkových zdrojů může automaticky přizpůsobit požadované zátěži a nastavením minimálního počtu uzlů na 0 můžete automaticky spustit virtuální stroj „na vyžádání“ v přítomnosti tréninkových úkolů.
  • možná budete ukládat všechny výsledky učení na jednom místě, včetně dosažených metrik a výsledných modelů – není potřeba vymýšlet nějaký systém nebo příkaz k ukládání všech výsledků.
  • V tomto případě, Na stejném projektu může pracovat více lidí - mohou používat stejný výpočetní cluster, všechny experimenty budou zařazeny do fronty a mohou také vidět výsledky svých experimentů. Jeden takový scénář je používání Azure ML při výuce Deep Learningkdyž místo toho, abyste každému studentovi dali virtuální stroj s GPU, můžete vytvořit jeden cluster, který budou všichni používat centrálně. Obecná tabulka výsledků s přesností modelu může navíc sloužit jako dobrý konkurenční prvek.
  • S Azure ML můžete snadno provádět řadu experimentů, například pro optimalizace hyperparametrů - to lze provést pomocí několika řádků kódu, není třeba provádět sérii experimentů ručně.

Doufám, že jsem vás přesvědčil, abyste vyzkoušeli Azure ML! Zde je návod, jak začít:

Azure ML Workspace a Azure ML Portal

Azure ML je uspořádán podle konceptu pracovní oblast — pracovní prostor. V pracovním prostoru lze ukládat data, posílají se do něj experimenty na školení, ukládají se tam i výsledky školení – výsledné metriky a modely. Můžete vidět, co je uvnitř pracovního prostoru Portál Azure ML - a odtud můžete provádět mnoho operací, od načítání dat po sledování experimentů a nasazování modelů.

Prostřednictvím webového rozhraní můžete vytvořit pracovní prostor Azure Portal (viz pokyny krok za krokem), nebo pomocí příkazového řádku Azure CLI (instrukce):

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

Existují také některé související výpočetní prostředky (Vypočítat). Jakmile vytvoříte skript pro trénování modelu, můžete odeslat experiment k provedení do pracovního prostoru a specifikujte vypočítat cíl - v tomto případě bude skript zabalen, spuštěn v požadovaném výpočetním prostředí a poté budou všechny výsledky experimentu uloženy v pracovním prostoru pro další analýzu a použití.

Učební skript pro MNIST

Zvažte klasický problém rozpoznávání ručně psaných číslic pomocí datové sady MNIST. Podobně můžete v budoucnu spouštět jakýkoli ze svých tréninkových skriptů.

V našem úložišti je skript train_local.py, kterou trénujeme nejjednodušší lineární regresní model pomocí knihovny SkLearn. Samozřejmě chápu, že to není nejlepší způsob řešení problému - používáme to pro příklad, jako nejjednodušší.

Skript nejprve stáhne data MNIST z OpenML a poté třídu použije LogisticRegression trénovat model a poté vytisknout výslednou přesnost:

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 spustit na svém počítači a výsledek získáte během několika sekund.

Spusťte skript v Azure ML

Pokud spustíme školicí skript prostřednictvím Azure ML, budeme mít dvě hlavní výhody:

  • Spuštění školení na libovolném výpočetním zdroji, který je zpravidla produktivnější než místní počítač. Samotné Azure ML se přitom postará o zabalení našeho skriptu se všemi soubory z aktuálního adresáře do docker kontejneru, instalaci požadovaných závislostí a odeslání ke spuštění.
  • Zapisujte výsledky do jednoho registru v pracovním prostoru Azure ML. Abychom tuto funkci využili, musíme do našeho skriptu přidat několik řádků kódu, abychom zaznamenali výslednou přesnost:

from azureml.core.run import Run
...
try:    
    run = Run.get_submitted_run()
    run.log('accuracy', acc)
except:
    pass

Zavolá se odpovídající verze skriptu train_universal.py (je to trochu mazanější, než se píše výše, ale nic moc). Tento skript lze spustit lokálně i na vzdáleném výpočetním prostředku.

Chcete-li jej spustit v Azure ML z VS Code, musíte provést následující:

  1. Ujistěte se, že je rozšíření Azure připojeno k vašemu předplatnému. Vyberte ikonu Azure z nabídky vlevo. Pokud nejste připojeni, v pravém dolním rohu se zobrazí upozornění (tady je), kliknutím na který můžete vstoupit prostřednictvím prohlížeče. Můžete také kliknout Ctrl-Shift-P zavolejte příkazový řádek VS Code a zadejte Přihlášení k Azure.

  2. Poté v sekci Azure (ikona vlevo) najděte sekci STROJOVÉ UČENÍ:

Jak překonat strach a začít používat Azure Machine Learning
Zde byste měli vidět různé skupiny objektů uvnitř pracovního prostoru: výpočetní zdroje, experimenty atd.

  1. Přejděte na seznam souborů, klikněte pravým tlačítkem na skript train_universal.py a vyberte Azure ML: Spustit jako experiment v Azure.

Jak překonat strach a začít používat Azure Machine Learning

  1. Poté bude následovat řada dialogových oken v oblasti příkazového řádku kódu VS: potvrďte předplatné a pracovní prostor Azure ML, které používáte, a vyberte Vytvořit nový experiment:

Jak překonat strach a začít používat Azure Machine Learning
Jak překonat strach a začít používat Azure Machine Learning
Jak překonat strach a začít používat Azure Machine Learning

  1. Zvolte vytvoření nového výpočetního prostředku Vytvořit nový výpočet:

    • Vypočítat určuje výpočetní zdroj, na kterém bude školení probíhat. Můžete si vybrat místní počítač nebo cloudový cluster AmlCompute. Doporučuji vytvořit škálovatelný cluster strojů STANDARD_DS3_v2, s minimálním počtem strojů 0 (a maximálně 1 nebo více, v závislosti na vaší chuti). To lze provést prostřednictvím rozhraní VS Code nebo dříve prostřednictvím Portál ML.

    Jak překonat strach a začít používat Azure Machine Learning

  2. Dále musíte vybrat konfiguraci Výpočetní konfigurace, který definuje parametry kontejneru vytvořeného pro trénování, zejména všech potřebných knihoven. V našem případě, protože používáme Scikit Learn, vybíráme SkLearna poté stačí potvrdit navrhovaný seznam knihoven stisknutím klávesy Enter. Pokud používáte nějaké další knihovny, musí být specifikovány zde.

    Jak překonat strach a začít používat Azure Machine Learning
    Jak překonat strach a začít používat Azure Machine Learning

  3. Tím se otevře okno se souborem JSON popisujícím experiment. V něm můžete opravit některé parametry – například název experimentu. Poté klikněte na odkaz Odeslat experiment přímo v tomto souboru:

Jak překonat strach a začít používat Azure Machine Learning

  1. Po úspěšném odeslání experimentu prostřednictvím kódu VS se na pravé straně oznamovací oblasti zobrazí odkaz na Portál Azure ML, kde můžete sledovat stav a výsledky experimentu.

Jak překonat strach a začít používat Azure Machine Learning
Následně jej vždy najdete v sekci Experimenty Portál Azure ML, nebo v sekci Azure Machine Learning v seznamu experimentů:

Jak překonat strach a začít používat Azure Machine Learning

  1. Pokud jste poté provedli nějaké opravy v kódu nebo změnili parametry, restartování experimentu bude mnohem rychlejší a jednodušší. Po kliknutí pravým tlačítkem myši na soubor se zobrazí nová položka nabídky Opakujte poslední běh - stačí jej vybrat a experiment se okamžitě spustí:

Jak překonat strach a začít používat Azure Machine Learning
Výsledky metrik ze všech spuštění vždy najdete na Azure ML Portal, není potřeba si je zapisovat.

Nyní víte, že spouštění experimentů s Azure ML je jednoduché a bezbolestné a získáte tím řadu příjemných výhod.

Ale můžete vidět i nevýhody. Například spuštění skriptu trvalo podstatně déle. Zabalení skriptu do kontejneru a jeho nasazení na server samozřejmě nějakou dobu trvá. Pokud byl současně cluster oříznut na velikost 0 uzlů, spuštění virtuálního počítače bude trvat ještě déle, a to vše je velmi patrné, když experimentujeme na jednoduchých úlohách, jako je MNIST, které jsou vyřešeny během několika sekund . V reálném životě, kdy školení trvá několik hodin, nebo dokonce dní či týdnů, se tato dodatečná doba stává bezvýznamnou, zejména na pozadí mnohem vyššího výkonu, který může poskytnout výpočetní cluster.

Co bude dál?

Doufám, že po přečtení tohoto článku můžete a budete používat Azure ML ve své práci ke spouštění skriptů, správě výpočetních prostředků a centrálnímu ukládání výsledků. Azure ML vám však může poskytnout ještě více výhod!

Uvnitř pracovního prostoru můžete ukládat data a vytvořit tak centralizované úložiště pro všechny vaše úkoly, ke kterému je snadný přístup. Navíc můžete experimenty spouštět nikoli z Visual Studio Code, ale pomocí API – to se může hodit zejména v případě, že potřebujete provést optimalizaci hyperparametrů a potřebujete skript spustit mnohokrát s různými parametry. Navíc je do Azure ML zabudována speciální technologie Hyperpohon, který umožňuje složitější vyhledávání a optimalizaci hyperparametrů. O těchto možnostech budu mluvit v mém dalším příspěvku.

Užitečné zdroje

Pro podrobnější pochopení Azure ML mohou být užitečné následující kurzy Microsoft Learn:

Zdroj: www.habr.com

Přidat komentář