Hogyan győzheti le a félelmet, és kezdheti el az Azure Machine Learning használatát

Sok adattudóst ismerek – és talán én is közéjük tartozom –, aki a felhőben elhelyezett, helyi vagy virtuális GPU-gépeken dolgozik, akár Jupyter Notebookon, akár valamilyen Python fejlesztői környezeten keresztül. 2 évig AI/ML szakértő fejlesztőként dolgoztam, pontosan ezt tettem, miközben egy normál szerveren vagy munkaállomáson készítettem elő adatokat, és az Azure-ban egy GPU-s virtuális gépen tartottam a képzést.

Természetesen mindannyian hallottunk róla Azure Machine Learning — egy speciális felhőplatform a gépi tanuláshoz. Azonban az első pillantás után bevezető cikkek, úgy tűnik, hogy az Azure ML több problémát okoz Önnek, mint amennyit megold. Például a fent említett betanítási példában az Azure ML-re vonatkozó oktatás a Jupyter Notebookból indul el, míg magát a betanító szkriptet szöveges fájlként kell létrehozni és szerkeszteni az egyik cellában – automatikus kiegészítés, szintaktikai kiemelés és egyéb használata nélkül. a normál fejlesztési környezet előnyei. Emiatt sokáig nem használtuk komolyan az Azure ML-t munkánk során.

Nemrég azonban felfedeztem egy módszert, amellyel elkezdhetem hatékonyan használni az Azure ML-t a munkám során! Érdekelnek a részletek?

Hogyan győzheti le a félelmet, és kezdheti el az Azure Machine Learning használatát

A fő titok az Visual Studio Code bővítmény az Azure ML-hez. Lehetővé teszi, hogy közvetlenül a VS Code-ban fejleszthessen oktatási szkripteket, teljes mértékben kihasználva a környezet előnyeit – és akár helyben is futtathat egy szkriptet, majd néhány kattintással egyszerűen elküldheti egy Azure ML-fürtre való betanításra. Kényelmes, nem?

Ennek során a következő előnyöket élvezheti az Azure ML használatából:

  • Legtöbbször helyben dolgozhat a gépén egy kényelmes IDE-ben, ill csak modellképzéshez használja a GPU-t. Ugyanakkor a képzési erőforrások készlete automatikusan tud igazodni a szükséges terheléshez, és a csomópontok minimális számát 0-ra állítva automatikusan elindíthatja a virtuális gépet „igény szerint”, ha vannak betanítási feladatok.
  • Akkor tárolja az összes tanulási eredményt egy helyen, beleértve az elért mérőszámokat és az eredményül kapott modelleket - nem kell valamilyen rendszert vagy sorrendet kidolgozni az összes eredmény tárolására.
  • Ebben az esetben a Egy projekten többen is dolgozhatnak - ugyanazt a számítási klasztert használhatják, minden kísérlet sorba kerül, és láthatják egymás kísérleteinek eredményeit is. Az egyik ilyen forgatókönyv Az Azure ML használata a Deep Learning tanításában, ahol ahelyett, hogy minden diáknak adna egy virtuális gépet GPU-val, létrehozhat egy klasztert, amelyet mindenki központilag fog használni. Emellett jó versenyelemként szolgálhat egy általános, modellpontos eredménytáblázat.
  • Az Azure ML használatával egyszerűen futtathat kísérletsorozatokat, pl. hiperparaméter optimalizálás - ez néhány sornyi kóddal megtehető, nincs szükség manuális kísérletsorozatra.

Remélem sikerült meggyőzni, hogy próbálja ki az Azure ML-t! Így kezdheti el:

Azure ML Workspace és Azure ML Portal

Az Azure ML a koncepció köré szerveződik munkaterület - Munkaterület. A munkaterületen adatok tárolhatók, betanítási kísérletek küldhetők rá, és a képzési eredmények – a kapott mérőszámok és modellek – is ott tárolódnak. Használatával láthatja, hogy mi van a munkaterületen belül Azure ML portál - és onnantól kezdve számos műveletet hajthat végre az adatok betöltésétől a kísérletek megfigyeléséig és a modellek telepítéséig.

Munkaterületet a webes felületen keresztül hozhat létre Azure Portal (Lásd. lépésről lépésre utasításokat), vagy az Azure CLI parancssor használatával (utasítás):

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

Vannak olyanok is, amelyek a munkaterülethez kapcsolódnak számítási erőforrások (Kiszámít). Miután létrehozott egy szkriptet a modell betanításához, megteheti küldjön egy kísérletet végrehajtásra a munkaterületre, és adja meg kiszámítja a célt - ebben az esetben a szkript becsomagolásra kerül, elindításra kerül a kívánt számítási környezetben, majd a kísérlet összes eredménye elmentésre kerül a munkaterületen további elemzés és felhasználás céljából.

Képzési forgatókönyv az MNIST számára

Nézzük a klasszikus problémát kézzel írt számjegyek felismerése az MNIST adatkészlet segítségével. Hasonlóképpen, a jövőben bármelyik képzési szkriptet végrehajthatja.

Van egy szkript a tárhelyünkben train_local.py, amely a legegyszerűbb lineáris regressziós modellt tanítja a SkLearn könyvtár segítségével. Természetesen megértem, hogy nem ez a legjobb módja a probléma megoldásának – példaként használjuk, mint a legegyszerűbbet.

A szkript először letölti az MNIST-adatokat az OpenML-ből, majd az osztályt használja LogisticRegression a modell betanításához, majd kinyomtatja 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(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)

Futtathatja a szkriptet a számítógépén, és néhány másodpercen belül megkapja az eredményt.

A szkript futtatása az Azure ML-ben

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

  • Oktatás futtatása tetszőleges számítási erőforráson, amely általában termelékenyebb, mint egy helyi számítógép. Ebben az esetben az Azure ML maga gondoskodik arról, hogy a szkriptünket az aktuális könyvtár összes fájljával egy docker-tárolóba csomagolja, telepítse a szükséges függőségeket, és elküldje végrehajtásra.
  • Írjon eredményeket egyetlen nyilvántartásba az Azure ML-munkaterületen belül. Ennek a funkciónak a kihasználásához hozzá kell adnunk néhány sor kódot a szkriptünkhöz, hogy rögzítsük a kapott pontosságot:

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

A szkript megfelelő verzióját hívják meg train_universal.py (kicsit ravaszabb a tervezés, mint fentebb leírtuk, de nem sokkal). Ez a parancsfájl helyileg és távoli számítástechnikai erőforráson is futtatható.

Az Azure ML-ben való futtatásához a VS Code-ból, a következőket kell tennie:

  1. Győződjön meg arról, hogy az Azure-bővítmény csatlakozik az előfizetéshez. Válassza ki az Azure ikont a bal oldali menüből. Ha nem csatlakozik, egy értesítés jelenik meg a jobb alsó sarokban (mint ez), amelyre kattintva bejelentkezhet a böngészőn keresztül. Kattinthatsz is Ctrl-Shift-P a VS Code parancssor megnyitásához, és írja be Azure Bejelentkezés.

  2. Ezt követően az Azure részben (ikon a bal oldalon) keresse meg a részt GÉPI TANULÁS:

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

  1. Menjen a fájlok listájához, kattintson a jobb gombbal a szkriptre train_universal.py és válassza ki Azure ML: Futtassa kísérletként az Azure-ban.

Hogyan győzheti le a félelmet, és kezdheti el az Azure Machine Learning használatát

  1. Ezt egy sor párbeszédablak követi a VS Code parancssori területen: erősítse meg az előfizetést és az Azure ML munkaterületet, majd válassza Új kísérlet létrehozása:

Hogyan győzheti le a félelmet, és kezdheti el az Azure Machine Learning használatát
Hogyan győzheti le a félelmet, és kezdheti el az Azure Machine Learning használatát
Hogyan győzheti le a félelmet, és kezdheti el az Azure Machine Learning használatát

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

    • Kiszámít meghatározza azt a számítási erőforrást, amelyen a képzés zajlik. Választhat egy helyi számítógépet vagy az AmlCompute felhőfürtöt. Azt javaslom, hogy hozzon létre egy méretezhető gépcsoportot STANDARD_DS3_v2, minimális gépszámmal 0 (a maximum pedig lehet 1 vagy több is, étvágyától függően). Ez megtehető a VS Code interfészen keresztül, vagy korábban ezen keresztül ML portál.

    Hogyan győzheti le a félelmet, és kezdheti el az Azure Machine Learning használatát

  2. Ezután ki kell választania egy konfigurációt Számítási konfiguráció, amely meghatározza a képzéshez létrehozott tároló paramétereit, különösen az összes szükséges könyvtárat. Esetünkben, mivel Scikit Learnt használunk, kiválasztjuk SkLearn, majd egyszerűen erősítse meg a könyvtárak javasolt listáját az Enter megnyomásával. Ha további könyvtárakat használ, azokat itt meg kell adni.

    Hogyan győzheti le a félelmet, és kezdheti el az Azure Machine Learning használatát
    Hogyan győzheti le a félelmet, és kezdheti el az Azure Machine Learning használatát

  3. Ezt követően megnyílik egy ablak a kísérletet leíró JSON-fájllal. Javíthat benne néhány paramétert, például a kísérlet nevét. Ezt követően kattintson a linkre Kísérlet benyújtása közvetlenül ebben a fájlban:

Hogyan győzheti le a félelmet, és kezdheti el az Azure Machine Learning használatát

  1. Miután sikeresen elküldte a kísérletet a VS Code-on keresztül, a jobb oldali értesítési területen megjelenik egy link Azure ML Portal, ahol nyomon követheti a kísérlet állapotát és eredményeit.

Hogyan győzheti le a félelmet, és kezdheti el az Azure Machine Learning használatát
Ezt követően mindig megtalálhatja a részben kísérletek Azure ML Portal, vagy a szakaszban Azure Machine Learning a kísérletek listájában:

Hogyan győzheti le a félelmet, és kezdheti el az Azure Machine Learning használatát

  1. Ha ezt követően módosította a kódot, vagy módosította a paramétereket, a kísérlet újrafuttatása sokkal gyorsabb és egyszerűbb lesz. A fájlra jobb gombbal kattintva egy új menüpont jelenik meg Ismételje meg az utolsó futást - csak válassza ki, és a kísérlet azonnal elindul:

Hogyan győzheti le a félelmet, és kezdheti el az Azure Machine Learning használatát
Mindig megtalálhatja az Azure ML Portal összes futtatásából származó metrikák eredményeit; nincs szükség rögzítésre.

Most már tudja, hogy a kísérletek futtatása az Azure ML használatával egyszerű, fájdalommentes, és néhány izgalmas előnnyel jár.

De lehet, hogy észrevett néhány hátrányt. Például lényegesen tovább tartott a szkript futtatása. Természetesen a szkript tárolóba csomagolása és a kiszolgálón történő telepítése időt vesz igénybe. Ha a fürtöt 0 csomópontra csökkentettük, akkor még több időbe telik a virtuális gép elindítása, és mindez nagyon szembetűnő, ha olyan egyszerű problémákkal kísérletezünk, mint az MNIST, amelyek néhány másodperc alatt megoldódnak. A való életben azonban, amikor a képzés több órán át, sőt napokon vagy heteken át tart, ez a többletidő jelentéktelenné válik, különösen a számítástechnikai klaszter által nyújtott sokkal nagyobb teljesítmény hátterében.

Mi a következő lépés?

Remélem, hogy a cikk elolvasása után használhatja és fogja is használni az Azure ML-t a szkriptek futtatására, a számítási erőforrások kezelésére és az eredmények központi tárolására. Az Azure ML azonban még több előnnyel jár!

Az adatokat egy munkaterületen belül tárolhatja, így minden feladatához egy könnyen elérhető központosított tárolót hozhat létre. Ezenkívül a Visual Studio Code helyett az API használatával is futtathat kísérleteket – ez különösen akkor lehet hasznos, ha hiperparaméter-optimalizálást kell végrehajtania, és sokszor kell futtatnia a szkriptet különböző paraméterekkel. Ezenkívül speciális technológia van beépítve az Azure ML-be Hipermeghajtók, amely lehetővé teszi a hiperparaméterek kifinomultabb keresését és optimalizálását. Ezekről a lehetőségekről a következő bejegyzésemben fogok beszélni.

Hasznos források

Ha többet szeretne megtudni az Azure ML-ről, az alábbi Microsoft Learn tanfolyamok hasznosak lehetnek:

Forrás: will.com

Hozzászólás