Com superar la por i començar a utilitzar Azure Machine Learning

Conec molts Data Scientists -i potser sóc un d'ells- que treballen en màquines GPU, locals o virtuals, situades al núvol, ja sigui a través d'un quadern Jupyter o mitjançant algun tipus d'entorn de desenvolupament Python. Treballant durant 2 anys com a desenvolupador expert en IA/ML, vaig fer exactament això, mentre preparava dades en un servidor o estació de treball normal i feia formació en una màquina virtual amb una GPU a Azure.

Per descomptat, tots n'hem sentit parlar Aprenentatge automàtic d'Azure — una plataforma especial al núvol per a l'aprenentatge automàtic. Tanmateix, després del primer cop d'ull a articles introductoris, sembla que Azure ML us crearà més problemes dels que resoldrà. Per exemple, a l'exemple d'entrenament esmentat anteriorment, l'entrenament sobre Azure ML es llança des de Jupyter Notebook, mentre que es proposa que l'script d'entrenament en si es creï i editi com a fitxer de text en una de les cel·les, sense utilitzar l'autocompleció, el ressaltat de sintaxi i altres avantatges d'un entorn de desenvolupament normal. Per aquest motiu, durant molt de temps no vam fer servir Azure ML de manera seriosa en la nostra feina.

Tanmateix, recentment he descobert una manera de començar a utilitzar Azure ML amb eficàcia en el meu treball! T'interessen els detalls?

Com superar la por i començar a utilitzar Azure Machine Learning

El secret principal és Extensió de codi de Visual Studio per a Azure ML. Us permet desenvolupar scripts d'entrenament directament a VS Code, aprofitant al màxim l'entorn, i fins i tot podeu executar un script localment i, a continuació, simplement enviar-lo per entrenar en un clúster Azure ML amb uns quants clics. Convenient, no?

En fer-ho, obtindreu els avantatges següents de l'ús d'Azure ML:

  • Podeu treballar la major part del temps localment a la vostra màquina en un IDE convenient i utilitzeu la GPU només per a l'entrenament del model. Al mateix temps, el conjunt de recursos d'entrenament es pot ajustar automàticament a la càrrega requerida i, establint el nombre mínim de nodes a 0, podeu llançar automàticament la màquina virtual "a demanda" si hi ha tasques d'entrenament.
  • vostè pot emmagatzemar tots els resultats d'aprenentatge en un sol lloc, incloses les mètriques aconseguides i els models resultants, no cal crear cap tipus de sistema o ordre per emmagatzemar tots els resultats.
  • En aquest cas, Diverses persones poden treballar en un projecte - poden utilitzar el mateix clúster informàtic, tots els experiments es posaran a la cua i també poden veure els resultats dels experiments dels altres. Un d'aquests escenaris és utilitzant Azure ML en l'ensenyament de l'aprenentatge profund, on en comptes de donar a cada estudiant una màquina virtual amb una GPU, podeu crear un clúster que serà utilitzat de manera centralitzada per tothom. A més, una taula general de resultats amb precisió del model pot servir com a bon element competitiu.
  • Amb Azure ML, podeu executar fàcilment una sèrie d'experiments, p. optimització d'hiperparàmetres - això es pot fer amb unes poques línies de codi, no cal fer una sèrie d'experiments manualment.

Espero haver-vos convençut de provar Azure ML! A continuació s'explica com començar:

Azure ML Workspace i Azure ML Portal

Azure ML s'organitza al voltant del concepte zona de treball - Espai de treball. Les dades es poden emmagatzemar a l'espai de treball, s'hi poden enviar experiments d'entrenament i també s'hi emmagatzemen els resultats de l'entrenament (les mètriques i els models resultants). Podeu veure què hi ha dins de l'espai de treball fent servir Portal Azure ML - i a partir d'aquí podeu realitzar moltes operacions, des de carregar dades fins a supervisar experiments i desplegar models.

Podeu crear un espai de treball mitjançant la interfície web Portal Azure (Veure instruccions pas a pas), o utilitzant la línia d'ordres de la CLI d'Azure (instruccions):

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

També n'hi ha associats amb l'espai de treball recursos informàtics (Calcular). Un cop hàgiu creat un script per entrenar el model, podeu fer-ho enviar un experiment per a l'execució a l'àrea de treball, i especificar objectiu de càlcul - En aquest cas, l'script s'empaquetarà, s'iniciarà a l'entorn informàtic desitjat i, a continuació, es desaran tots els resultats de l'experiment a l'espai de treball per a una posterior anàlisi i ús.

Guió de formació per a MNIST

Considerem el problema clàssic reconeixement de dígits escrits a mà utilitzant el conjunt de dades MNIST. De la mateixa manera, en el futur podreu executar qualsevol dels vostres scripts d'entrenament.

Hi ha un script al nostre repositori train_local.py, que entrena el model de regressió lineal més senzill mitjançant la biblioteca SkLearn. Per descomptat, entenc que aquesta no és la millor manera de resoldre el problema: l'utilitzem com a exemple, com la més senzilla.

L'script primer baixa les dades MNIST d'OpenML i després utilitza la classe LogisticRegression per entrenar el model i després imprimeix la precisió resultant:

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)

Podeu executar l'script al vostre ordinador i en un parell de segons obtindreu el resultat.

Execució de l'script a Azure ML

Si executem l'script d'entrenament mitjançant Azure ML, tindrem dos avantatges principals:

  • Execució de la formació en un recurs informàtic arbitrari, que sol ser més productiu que un ordinador local. En aquest cas, el mateix Azure ML s'encarregarà d'empaquetar el nostre script amb tots els fitxers del directori actual en un contenidor docker, instal·lant les dependències necessàries i enviant-lo per a l'execució.
  • Escriu resultats en un registre únic dins d'un espai de treball Azure ML. Per aprofitar aquesta característica, hem d'afegir un parell de línies de codi al nostre script per registrar la precisió resultant:

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

S'anomena la versió corresponent de l'script train_universal.py (està dissenyat una mica més astutament que el descrit anteriorment, però no gaire). Aquest script es pot executar tant localment com en un recurs informàtic remot.

Per executar-lo a Azure ML des de VS Code, heu de fer el següent:

  1. Assegureu-vos que l'extensió Azure estigui connectada a la vostra subscripció. Seleccioneu la icona Azure al menú de l'esquerra. Si no esteu connectat, apareixerà una notificació a l'extrem inferior dret (com això), fent clic a la qual podeu iniciar sessió mitjançant el navegador. També podeu fer clic Ctrl-Maj-P per obrir la línia d'ordres de VS Code i escriviu Inici de sessió d'Azure.

  2. Després d'això, a la secció Azure (icona de l'esquerra), cerqueu la secció APRENENTATGE A MÀQUINA:

Com superar la por i començar a utilitzar Azure Machine Learning
Aquí hauríeu de veure diferents grups d'objectes dins de l'espai de treball: recursos informàtics, experiments, etc.

  1. Aneu a la llista de fitxers, feu clic dret a l'script train_universal.py i seleccioneu Azure ML: s'executa com a experiment a Azure.

Com superar la por i començar a utilitzar Azure Machine Learning

  1. Això anirà seguit d'una sèrie de diàlegs a l'àrea de la línia d'ordres del VS Code: confirmeu la vostra subscripció i l'espai de treball Azure ML i seleccioneu Crea un nou experiment:

Com superar la por i començar a utilitzar Azure Machine Learning
Com superar la por i començar a utilitzar Azure Machine Learning
Com superar la por i començar a utilitzar Azure Machine Learning

  1. Seleccioneu per crear un recurs informàtic nou Crea un càlcul nou:

    • Calcular determina el recurs informàtic sobre el qual es realitzarà la formació. Podeu triar un ordinador local o el clúster de núvol AmlCompute. Recomano crear un clúster escalable de màquines STANDARD_DS3_v2, amb un nombre mínim de màquines 0 (i el màxim pot ser 1 o més, segons les vostres ganas). Això es pot fer mitjançant la interfície de VS Code, o prèviament mitjançant Portal ML.

    Com superar la por i començar a utilitzar Azure Machine Learning

  2. A continuació, heu de seleccionar una configuració Configuració del càlcul, que defineix els paràmetres del contenidor creat per a la formació, en particular, totes les biblioteques necessàries. En el nostre cas, com que estem utilitzant Scikit Learn, seleccionem SkLearn, i després simplement confirmeu la llista de biblioteques proposada prement Retorn. Si utilitzeu biblioteques addicionals, s'han d'especificar aquí.

    Com superar la por i començar a utilitzar Azure Machine Learning
    Com superar la por i començar a utilitzar Azure Machine Learning

  3. Després d'això, s'obrirà una finestra amb un fitxer JSON que descriu l'experiment. Hi podeu corregir alguns paràmetres, per exemple, el nom de l'experiment. Després d'això, feu clic a l'enllaç Envia l'experiment just dins d'aquest fitxer:

Com superar la por i començar a utilitzar Azure Machine Learning

  1. Després d'enviar correctament un experiment mitjançant VS Code, a l'àrea de notificació de la dreta veureu un enllaç a Azure ML Portal, on podeu fer un seguiment de l'estat i els resultats de l'experiment.

Com superar la por i començar a utilitzar Azure Machine Learning
Posteriorment, sempre el podreu trobar a la secció experiments Azure ML Portal, o a la secció Aprenentatge automàtic d'Azure a la llista d'experiments:

Com superar la por i començar a utilitzar Azure Machine Learning

  1. Si després heu fet algunes correccions al codi o heu canviat els paràmetres, tornar a executar l'experiment serà molt més ràpid i fàcil. Si feu clic amb el botó dret sobre el fitxer, veureu un nou element de menú Repetiu l'última carrera - només cal que seleccioneu-lo i l'experiment s'iniciarà immediatament:

Com superar la por i començar a utilitzar Azure Machine Learning
Sempre podeu trobar els resultats de les mètriques de totes les execucions a l'Azure ML Portal, no cal registrar-los.

Ara ja sabeu que executar experiments amb Azure ML és fàcil, indolor i inclou alguns avantatges interessants.

Però potser heu notat alguns inconvenients. Per exemple, va trigar molt més a executar l'script. Per descomptat, empaquetar l'script en un contenidor i desplegar-lo al servidor requereix temps. Si el clúster es reduïa a una mida de 0 nodes, encara trigarà més temps a iniciar la màquina virtual, i tot això es nota molt quan experimentem amb problemes senzills com el MNIST, que es resolen en pocs segons. Tanmateix, a la vida real, quan l'entrenament dura diverses hores, o fins i tot dies o setmanes, aquest temps addicional esdevé insignificant, sobretot en el context del rendiment molt més elevat que pot oferir un clúster informàtic.

Què serà el següent?

Espero que després de llegir aquest article pugueu fer servir Azure ML a la vostra feina per executar scripts, gestionar recursos informàtics i emmagatzemar els resultats de manera centralitzada. Tanmateix, Azure ML us pot oferir encara més avantatges!

Podeu emmagatzemar dades dins d'un espai de treball, creant així un repositori centralitzat per a totes les vostres tasques al qual és fàcil accedir. A més, podeu executar experiments amb l'API en comptes de Visual Studio Code; això pot ser especialment útil si necessiteu optimitzar els hiperparàmetres i heu d'executar l'script moltes vegades amb diferents paràmetres. A més, la tecnologia especial està integrada a Azure ML Hiperdrive, que permet una cerca i una optimització més sofisticades dels hiperparàmetres. En parlaré d'aquestes possibilitats en el meu proper post.

Recursos útils

Per obtenir més informació sobre Azure ML, podeu trobar útils els següents cursos de Microsoft Learn:

Font: www.habr.com

Compreu allotjament fiable per a llocs amb protecció DDoS, servidors VPS VDS 🔥 Compra allotjament web fiable amb protecció DDoS, servidors VPS VDS | ProHoster