Hogyan győzhetjük le a félelmet és kezdhetjük el az Azure Machine Learning használatát

Tudok sok Data Scientist-t, és magam is ide tartozom, akik GPU-val rendelkező helyi vagy virtuális gépeken dolgoznak az felhőben, akár Jupyter Notebookon, akár valamilyen Python fejlesztési környezetben. Két évig AI/ML fejlesztő szakértőként pontosan így dolgoztam, az adatokat pedig egy hagyományos szerveren vagy munkaállomáson készítettem elő, míg a tanítást GPU-s virtuális gépen az Azure-ban indítottam.

Természetesen mindannyian hallottunk Azure Machine Learningről — egy különleges felhő alapú platform a gépi tanuláshoz. Azonban az első pillantásra úgy tűnik, hogy az Azure ML több problémát okoz, mint amennyit megold. Például a fent említett tréning példa alapján az Azure ML-en a tanítás a Jupyter Notebookból indul, és a tanító szkriptet egy szövegfájlként kell létrehozni és szerkeszteni az egyik cellában — anélkül, hogy kihasználhatnánk az automatikus kiegészítést, a szintaxis kiemelését és a normál fejlesztési környezet többi előnyét. Emiatt sokáig nem használtuk komolyan az Azure ML-t a munkánkban. de nemrég felfedeztem egy módot, hogyan lehet hatékonyan használni az Azure ML-t a munkámban! Érdekelnek a részletek?A fő titok a

Visual Studio Code kiterjesztés Azure ML-hez

Hogyan győzhetjük le a félelmet és kezdhetjük el az Azure Machine Learning használatát

. Ez lehetővé teszi, hogy a tanító szkripteket közvetlenül a VS Code-ban fejleszthessük, kihasználva a környezet minden előnyét — ráadásul akár helyileg is futtathatjuk a szkriptet, majd egyszerűen csak néhány kattintással elküldhetjük tanításra az Azure ML klaszterbe. Praktikus, ugye? Ezek mellett a következő előnyöket kapod az Azure ML használatával:A legtöbb időt a saját gépeden kényelmes IDE-ben dolgozhatsz, és

a GPU-t csak a modell tanításához használod

  • . A tanítási források poolja automatikusan alkalmazkodhat a szükséges terheléshez, és ha a minimális csomópontot 0-ra állítod, automatikusan elindíthatod a virtuális gépet "igény szerint" az oktatási feladatok megléte esetén. az összes tanulási eredményt egy helyen tárolhatod, beleértve a megvalósított metrikákat és a kapott modelleket — nincs szükséged arra, hogy saját rendszert vagy sorrendet találj ki az összes eredmény tárolásához.
  • Ön létrehozhat többen is dolgozhatnak egy projekten, beleértve az elért mutatókat és a kapott modelleket — nincs szükség saját rendszer vagy rend kitalálására az összes eredmény tárolásához.
  • Ez idő alatt egy projekten több ember is dolgozhat – ugyanazt a számítási klasztert használhatják, minden kísérlet ugyanakkor sorba áll, és látják egymás kísérleteinek eredményeit. Az egyik ilyen forgatókönyv a Azure ML használata a mélytanulás oktatásában, amikor ahelyett, hogy minden diáknak virtuális gépet biztosítanának GPU-val, létrehozhat egy klasztert, amelyet központilag mindenki használhat. Ezen kívül, a közös eredménytáblázat a modell pontosságával jó versenyzési elemet nyújthat.
  • Az Azure ML segítségével könnyen végrehajthatók kísérletsorozatok, például a hiperparaméterek optimalizálásához – ezt néhány sor kód segítségével megteheti, nincs szükség kézi kísérletsorozatok futtatására.

Remélem, meggyőztelek, hogy próbáld ki az Azure ML-t! Íme, hogyan kezdheted el:

Azure ML Workspace és Azure ML Portal

Az Azure ML a munkaterület köré szerveződik. A munkaterületen tárolhatók adatok, ide küldik a kísérleteket a tanulásra, és itt tárolják a tanulási eredményeket – a kapott metrikákat és modelleket. A munkaterület belső tartalmát az Azure ML portálon lehet megnézni – és innen számos műveletet végezhet, az adatok feltöltésétől kezdve a kísérletek figyeléséig és a modellek telepítéséig.

A munkaterületet a Azure Portal (lásd webes felületenlépésről lépésre útmutatók segítségévelutasítást):

), vagy az Azure CLI parancssor használatával (

az kiterjesztés hozzáadása -n azure-cli-ml az csoport létrehozása -n myazml -l Észak-Európa az ml munkaterület létrehozása -w myworkspace -g myazml A munkaterülethez kapcsolódnak bizonyos (Számításszámítási erőforrások. Az oktatási modell tanító szkriptjének létrehozásával elküldheti a kísérletet végrehajtásra a munkaterületre, és megadja a számítási célt

– így a szkript becsomagolva, a szükséges számítási környezetben fut, majd az összes kísérleti eredmény a munkaterületen tárolásra kerül a további elemzés és felhasználás céljából.

MNIST modell tanító szkript Tekintsük a klasszikus feladatot a kézírásos számok felismerésére az MNIST adathalmazon keresztül. Hasonlóan, a jövőben bármilyen saját tanító scriptet végrehajthat.

A tárolónkban található egy script train_local.py, amely a SkLearn könyvtár használatával egy egyszerű lineáris regressziós modellt tanít. Természetesen tudom, hogy ez nem a legjobb módja a feladat megoldásának — ezt csupán példaként használjuk, mint a legegyszerűbbet.

A script először letölti az MNIST adatokat az OpenML-ből, majd a LogisticRegression osztályt használja a modell betanítására, és ezután kiírja a kapott pontosságot:

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('Összesített pontosság:', acc)

Futtathatja a scriptet a saját számítógépén, és néhány másodperc múlva megkapja az eredményt.

A script futtatása Azure ML-ben

Ha a scriptet Azure ML-en keresztül futtatjuk, két fő előnyünk lesz:

  • A tanulás elindítása tetszőleges számítási erőforráson, amely általában hatékonyabb, mint a helyi számítógép. Az Azure ML automatikusan gondoskodik arról, hogy a scriptünket az összes fájllal együtt becsomagolja egy docker-konténerbe, telepítse a szükséges függőségeket, és elindítsa a végrehajtást.
  • Az eredmények egységes nyilvántartásba történő rögzítése az Azure ML munkaterületén belül. Ehhez néhány kódsort kell hozzáadnunk a scriptünkhöz az eredmény pontosságának rögzítéséhez:

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

A megfelelő verziójú script neve train_universal.py (picit bonyolultabb, mint ahogyan fent írtam, de nem túlzottan). Ezt a scriptet helyileg és távoli számítási erőforráson is futtathatjuk.

Ahhoz, hogy Azure ML-ben indítsuk el a VS Code-ból, a következőket kell tennünk:

  1. Győződjön meg arról, hogy az Azure kiterjesztés csatlakozik a fiókjához. Válassza ki az Azure ikont a bal oldali menüben. Ha nem csatlakozik, az alján értesítést fog látni (valami ilyesmit), amire kattintva bejelentkezhet a böngészőn keresztül. Az is lehetséges, hogy megnyomja a Ctrl-Shift-P kombinációt a VS Code parancssorának megnyitásához, és beírja Azure Sign In.

  2. Ezután az Azure részben (bal oldali ikon) keresse meg a szekciót MACHINE LEARNING:

Hogyan győzhetjük le a félelmet és kezdhetjük el az Azure Machine Learning használatát
Itt különböző objektumcsoportokat kell látnia a munkaterületen: számítási erőforrásokat, kísérleteket stb.

  1. Lépjen a fájllista oldalra, és kattintson a jobb gombbal a szkriptre train_universal.py és válassza a Azure ML: Futtatás kísérletként az Azure-ban.

Hogyan győzhetjük le a félelmet és kezdhetjük el az Azure Machine Learning használatát

  1. Ezután egy párbeszédablak sorozata következik a VS Code parancssorában: erősítse meg a használni kívánt előfizetést és az Azure ML munkaterületet, valamint válassza ki Új kísérlet létrehozása:

Hogyan győzhetjük le a félelmet és kezdhetjük el az Azure Machine Learning használatát
Hogyan győzhetjük le a félelmet és kezdhetjük el az Azure Machine Learning használatát
Hogyan győzhetjük le a félelmet és kezdhetjük el az Azure Machine Learning használatát

  1. Válassza az új számítási erőforrás létrehozását Új számítás létrehozása:

    • Számítás meghatározza a számítási erőforrást, ahol a tanulás zajlik. Választhat helyi számítógépet vagy Azure ML AmlCompute felhő klasztert. Én skálázható gépek klaszterének létrehozását javaslom STANDARD_DS3_v2, legalább 0 géppel (maximális szám 1 vagy több lehet, az ön igényeitől függően). Ezt a VS Code felületén, vagy előre a ML Portal.

    Hogyan győzhetjük le a félelmet és kezdhetjük el az Azure Machine Learning használatát

  2. A következő lépés az konfiguráció választása Számítási konfiguráció, amely meghatározza a tanuláshoz létrehozott tartály paramétereit, különösen az összes szükséges könyvtárat. Az esetünkben, mivel Scikit Learn-t használunk, válasszuk a SkLearn, majd egyszerűen erősítsük meg a javasolt könyvtárak listáját az Enter megnyomásával. Ha további könyvtárakat használ, azokat itt kell megadnia.

    Hogyan győzhetjük le a félelmet és kezdhetjük el az Azure Machine Learning használatát
    Hogyan győzhetjük le a félelmet és kezdhetjük el az Azure Machine Learning használatát

  3. Ezután megnyílik egy ablak, amely egy JSON-fájlt ír le a kísérletről. Itt módosíthat néhány paramétert – például a kísérlet nevét. Ezután kattintson a hivatkozásra Kísérlet beküldése közvetlenül ebben a fájlban:

Hogyan győzhetjük le a félelmet és kezdhetjük el az Azure Machine Learning használatát

  1. Miután a VS Code-on keresztül sikeresen benyújtotta a kísérletet, jobbra az értesítési területen látni fog egy hivatkozást a Azure ML Portal, ahol nyomon követheti a kísérlet állapotát és eredményeit.

Hogyan győzhetjük le a félelmet és kezdhetjük el az Azure Machine Learning használatát
Később mindig megtalálhatja a következő részben Kísérletek Azure ML Portal, vagy a Azure Machine Learningről kísérletek listájában:

Hogyan győzhetjük le a félelmet és kezdhetjük el az Azure Machine Learning használatát

  1. Ha ezután bármilyen módosítást végzett a kódban, vagy megváltoztatta a paramétereket, a kísérlet újraindítása sokkal gyorsabb és egyszerűbb lesz. A fájl jobb gombbal kattintva látni fogja az új menüpontot Utolsó futás megismétlése – csak válassza azt, és a kísérlet azonnal elindul:

Hogyan győzhetjük le a félelmet és kezdhetjük el az Azure Machine Learning használatát
Az összes futás metrikáinak eredményeit mindig megtalálhatja az Azure ML Portal-on, nem szükséges őket feljegyezni.

Most már tudja, hogy a kísérletek futtatása az Azure ML segítségével egyszerű és fájdalommentes, és számos kellemes előnnyel jár.

De észlelhettétek a hátrányait is. Például a szkript futtatása lényegesen több időt vett igénybe. Természetesen a szkript konténerbe csomagolása és a szerveren való felállítása időt igényel. Ha a klaszter 0 csomópont méretre van csökkentve - a virtuális gép indításához még több idő szükséges, ami különösen észlelhető, amikor egyszerű feladatokon kísérletezünk, mint például az MNIST, amit néhány másodperc alatt megoldhatunk. Azonban a valós életben, amikor a tanulás órákig, sőt napokig vagy hetekig is eltart, ez a plusz idő lényegtelennek tűnik, főleg a számítási klaszter által nyújtott jelentősebb teljesítmény mellett.

Mi következik?

Remélem, hogy a cikk elolvasása után képesek lesznek használni az Azure ML-t a munkájuk során szkriptek futtatására, a számítási erőforrások kezelésére és az eredmények központosított tárolására. Az Azure ML azonban még több előnyt is kínálhat!

A munkaterületen adatokat tárolhatunk, így központosított tárolót hozhatunk létre minden feladatunk számára, amelyhez könnyen hozzáférhetünk. Ezenkívül API használatával kísérleteket indíthatunk, nem csak a Visual Studio Code-ból - ez különösen hasznos lehet, ha hiperparaméterek optimalizálására van szükség, és több alkalommal kell futtatni a szkriptet különböző paraméterekkel. Továbbá, az Azure ML-ben egy speciális technológia van beépítve, Hyperdrive, amely lehetővé teszi a okosabb hiperparaméter-keresést és optimalizálást. Ezekről a lehetőségekről a következő bejegyzésemben fogok beszámolni.

Hasznos források

Az Azure ML részletesebb tanulmányozásához az alábbi Microsoft Learn tanfolyamok hasznosak lehetnek:

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster