Cum să depășești frica și să începi să folosești Azure Machine Learning

Cunosc mulți Data Scientist-i — de fapt, mă consider și eu unul — care lucrează pe mașini cu GPU, locale sau virtuale, încloud, fie prin Jupyter Notebook, fie printr-un mediu de dezvoltare Python. Lucrând timp de 2 ani ca expert-developer în AI/ML, exact așa am procedat, pregătind datele pe un server normal sau pe o stație de lucru, iar antrenarea o realizam pe o mașină virtuală cu GPU în Azure.

Desigur, cu toții am auzit de Azure Machine Learning — o platformă specială de cloud pentru învățarea automată. Totuși, după prima privire la articolele introductive, se creează impresia că Azure ML îți va crea mai multe probleme decât va rezolva. De exemplu, în exemplul de antrenament menționat anterior, antrenarea în Azure ML se inițiază din Jupyter Notebook, iar scriptul de antrenare trebuie creat și editat ca un fișier text într-una dintre celule — fără a folosi completarea automată, evidențierea sintaxei și alte avantaje ale unui mediu normal de dezvoltare. Din acest motiv, nu am folosit serios Azure ML în activitățile noastre o perioadă îndelungată.

Totuși, recent am descoperit o modalitate de a începe să folosesc eficient Azure ML în munca mea! Ești interesat de detalii?

Cum să depășești frica și să începi să folosești Azure Machine Learning

Secretul principal este extensia Visual Studio Code pentru Azure ML. Aceasta îți permite să dezvolți scripturi de antrenare direct în VS Code, folosind toate avantajele mediului — poți chiar să rulezi scriptul local și apoi să-l trimiti pentru antrenare în clusterul Azure ML cu câteva clicuri. Convenabil, nu-i așa?

În plus, obții următoarele avantaje de la utilizarea Azure ML:

  • Poți lucra cea mai mare parte a timpului local pe mașina ta într-un IDE convenabil și folosi GPU-ul doar pentru antrenarea modelului. În plus, piscina de resurse de antrenare se poate adapta automat la încărcătura necesară, iar prin setarea unui număr minim de noduri la 0, poți lansa automat o mașină virtuală "la cerere" în cazul în care există sarcini de antrenare.
  • Poți salva toate rezultatele antrenării într-un singur loc, inclusiv metricile obținute și modelele create — nu este necesar să inventezi un sistem sau o ordine pentru a păstra toate rezultatele.
  • În plus, la un proiect pot lucra mai multe persoane. — ei pot utiliza același cluster de calcul, toate experimentele vor fi organizate în așteptare, iar ei pot vedea rezultatele experimentelor unul altuia. Unul dintre aceste scenarii este utilizarea Azure ML în predarea Deep Learning, când, în loc să oferiți fiecărui student o mașină virtuală cu GPU, puteți crea un singur cluster care va fi utilizat centralizat de toți. În plus, o tabelă comună de rezultate cu precizia modelului poate servi ca un bun element competițional.
  • Cu Azure ML, este ușor să efectuezi serii de experimente, de exemplu, pentru optimizarea hiperparametrilor — acest lucru se poate face cu câteva linii de cod, fără a fi necesară efectuarea manuală a seriilor de experimente.

Sper că te-am convins să încerci Azure ML! Iată cum poți începe:

Workspace Azure ML și Portal Azure ML

Azure ML este organizat în jurul conceptului de workspace — Spațiu de lucru. Înspațiul de lucru pot fi stocate date, experimentele sunt trimise pentru antrenare acolo, iar rezultatele antrenării — metrici și modele obținute — sunt stocate tot acolo. Poți vedea ce se află în interiorul workspace-ului prin portalul Azure ML — și de acolo poți efectua multe operații, de la încărcarea datelor până la monitorizarea experimentelor și desfășurarea modelelor.

Poți crea un workspace prin interfața web Azure Portal (vezi instrucțiuni pas cu pas), sau folosind linia de comandă Azure CLI (instrucțiuni):

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

Workspace-ul este, de asemenea, legat de unele resurse de calcul (Compute). După ce ai creat un script pentru antrenarea modelului, poți trimite experimentul pentru execuție în workspace și specifica ținta de calcul — astfel, scriptul va fi ambalat, rulat în mediul de calcul necesar, iar apoi toate rezultatele experimentului vor fi salvate în workspace pentru analiză ulterioară și utilizare.

Scriptul de antrenare pentru MNIST

Să examinăm o problemă clasică recunoașterea cifrelor scrise de mână utilizând setul de date MNIST. În mod similar, mai târziu veți putea rula toate scripturile dvs. de antrenare.

În depozitul nostru există un script train_local.py, care antrenează un model simplu de regresie liniară folosind biblioteca SkLearn. Desigur, înțeleg că aceasta nu este cea mai bună metodă de a rezolva problema — o folosim ca exemplu, ca cel mai simplu.

Scriptul descarcă mai întâi datele MNIST din OpenML și apoi folosește clasa LogisticRegression pentru a antrena modelul și apoi imprimă precizia obținută:

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('Precizia generală:', acc)

Puteți rula scriptul pe computerul dvs. și în câteva secunde veți obține rezultatul.

Rulăm scriptul în Azure ML

Dacă vom rula scriptul pentru antrenare prin Azure ML, vom avea două avantaje principale:

  • Rularea antrenamentului pe orice resursă de calcul, care de obicei este mai performantă decât computerul local. În plus, Azure ML se va ocupa de împachetarea scriptului nostru cu toate fișierele din directorul curent într-un container Docker, instalarea dependențelor necesare și trimiterea acestuia pentru a fi executat.
  • Înregistrarea rezultatelor într-un registru unificat în cadrul spațiului de lucru Azure ML. Pentru a beneficia de această funcționalitate, trebuie să adăugăm câteva linii de cod la scriptul nostru pentru a înregistra precizia rezultată:

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

Versiunea corespunzătoare a scriptului se numește train_universal.py (este puțin mai complexă decât cea menționată mai sus, dar nu semnificativ). Acest script poate fi rulat atât local, cât și pe o resursă de calcul la distanță.

Pentru a-l rula în Azure ML din VS Code, trebuie să faceți următoarele:

  1. Asigurați-vă că Extensia Azure este conectată la abonamentul dvs. Alegeți pictograma Azure din meniul din stânga. Dacă nu sunteți conectat, în colțul din dreapta jos va apărea o notificare (ceva de genul acesta), pe care, făcând clic, veți putea să vă conectați prin browser. Puteți de asemenea să apăsați Ctrl-Shift-P pentru a deschide linia de comandă VS Code și să tastați Azure Sign In.

  2. Apoi, în secțiunea Azure (pictograma din stânga) căutați secțiunea ÎNVĂȚAREA AUTOMATIZATĂ:

Cum să depășești frica și să începi să folosești Azure Machine Learning
Aici ar trebui să vedeți diferite grupuri de obiecte în interiorul spațiului de lucru: resurse de calcul, experimente etc.

  1. Accesați lista de fișiere, faceți clic dreapta pe script train_universal.py și selectați Azure ML: Rulați ca experiment în Azure.

Cum să depășești frica și să începi să folosești Azure Machine Learning

  1. După aceasta urmează o serie de dialoguri în zona de comandă VS Code: confirmați abonamentul și spațiul de lucru Azure ML utilizat și selectați Creați un nou experiment:

Cum să depășești frica și să începi să folosești Azure Machine Learning
Cum să depășești frica și să începi să folosești Azure Machine Learning
Cum să depășești frica și să începi să folosești Azure Machine Learning

  1. Selectați crearea unei noi resurse de calcul Creați noua resursă de calcul:

    • Compute definește resursa de calcul pe care va avea loc antrenamentul. Puteți alege între computerul local sau un cluster cloud AmlCompute. Recomand să creați un cluster de mașini scalabil STANDARD_DS3_v2, cu un număr minim de mașini 0 (iar maximul poate fi 1 sau mai mult, în funcție de nevoile dvs.). Acest lucru se poate face prin interfața VS Code sau anterior prin ML Portal.

    Cum să depășești frica și să începi să folosești Azure Machine Learning

  2. Apoi, trebuie să selectați configurația Configurare Compute, care definește parametrii containerului creat pentru antrenament, în special toate bibliotecile necesare. În cazul nostru, de vreme ce folosim Scikit Learn, alegem SkLearn, și apoi pur și simplu confirmăm lista propusă de biblioteci apăsând Enter. Dacă folosiți biblioteci suplimentare, acestea trebuie specificate aici.

    Cum să depășești frica și să începi să folosești Azure Machine Learning
    Cum să depășești frica și să începi să folosești Azure Machine Learning

  3. După aceasta, va apărea o fereastră cu un fișier JSON care descrie experimentul. Aici puteți corecta anumite parametri — de exemplu, numele experimentului. Apoi faceți clic pe linkul Trimiteți Experimentul direct în acest fișier:

Cum să depășești frica și să începi să folosești Azure Machine Learning

  1. După trimiterea cu succes a experimentului prin VS Code, în partea dreaptă a zonei de notificări veți vedea un link către Azure ML Portal, unde puteți urmări statusul și rezultatele experimentului.

Cum să depășești frica și să începi să folosești Azure Machine Learning
Ulterior, veți putea găsi întotdeauna experimentul în secțiunea Experimente Azure ML Portal, sau în secțiunea Azure Machine Learning din lista experimentelor:

Cum să depășești frica și să începi să folosești Azure Machine Learning

  1. Dacă ați făcut modificări în cod sau ați schimbat parametrii, reluarea experimentului va fi mult mai rapidă și mai simplă. Facând clic dreapta pe fișier, veți vedea o nouă opțiune de meniu Repetați ultima execuție — pur și simplu selectați-l, iar experimentul va fi lansat imediat:

Cum să depășești frica și să începi să folosești Azure Machine Learning
Rezultatele metricilor din toate execuțiile le veți găsi mereu pe Azure ML Portal, nu este necesar să le notați.

Acum știți că rularea experimentelor cu Azure ML este simplă și fără dureri, și în același timp obțineți o serie de avantaje plăcute.

Dar ați putea observa și dezavantaje. De exemplu, a fost nevoie de un timp mult mai lung pentru a rula scriptul. Desigur, pentru a ambala scriptul într-un container și a-l desfășura pe server, este necesar timp. Dacă clusterul a fost redus la dimensiunea de 0 noduri, va fi nevoie de și mai mult timp pentru a porni o mașină virtuală, și toate acestea se simt foarte bine atunci când experimentăm cu sarcini simple, precum MNIST, care se rezolvă în câteva secunde. Totuși, în viața reală, când antrenamentul durează câteva ore, zile sau chiar săptămâni, acest timp suplimentar devine neimportant, mai ales în fața performanței mult mai ridicate pe care o poate oferi un cluster de calcul.

Ce urmează?

Sper că după ce ați citit acest articol, veți putea și veți folosi Azure ML în munca dumneavoastră pentru a rula scripturi, a gestiona resursele de calcul și a stoca centralizat rezultatele. Totuși, Azure ML vă poate oferi și mai multe avantaje!

În interiorul zonei de lucru, puteți stoca date, creând astfel un depozit centralizat pentru toate sarcinile dumneavoastră, la care este ușor de accesat. În plus, puteți rula experimente nu din Visual Studio Code, ci folosind API-ul — acest lucru poate fi deosebit de util dacă trebuie să faceți optimizarea hiperparametrilor și trebuie să rulați scriptul de mai multe ori cu parametri diferiți. Mai mult, Azure ML include o tehnologie specială Hyperdrive, care permite o căutare și optimizare mai sofisticată a hiperparametrilor. Voi vorbi despre aceste posibilități în următoarea mea notă.

Resurse utile

Pentru a studia mai detaliat Azure ML, următoarele cursuri de pe Microsoft Learn vă pot fi utile:

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster