Como vencer o medo e comezar a usar Azure Machine Learning

Coñezo a moitos Data Scientists -e quizais son un deles- que traballan en máquinas GPU, locais ou virtuais, situadas na nube, ben a través dun Jupyter Notebook ou a través dalgún tipo de contorno de desenvolvemento Python. Traballando durante 2 anos como desenvolvedor experto en IA/ML, fixen exactamente isto, mentres preparaba datos nun servidor ou estación de traballo normal e realizaba adestramento nunha máquina virtual cunha GPU en Azure.

Por suposto, todos escoitamos falar Aprendizaxe automática de Azure — unha plataforma de nube especial para a aprendizaxe automática. Con todo, despois da primeira ollada a artigos introdutorios, parece que Azure ML creará máis problemas para vostede dos que resolverá. Por exemplo, no exemplo de adestramento mencionado anteriormente, o adestramento sobre Azure ML lánzase desde Jupyter Notebook, mentres que o propio script de adestramento proponse que se cree e edite como un ficheiro de texto nunha das celas, sen utilizar o autocompletado, o resaltado de sintaxe e outros. vantaxes dun ambiente de desenvolvemento normal. Por este motivo, durante moito tempo non usamos seriamente Azure ML no noso traballo.

Non obstante, recentemente descubrín unha forma de comezar a usar Azure ML de forma eficaz no meu traballo. Interesado nos detalles?

Como vencer o medo e comezar a usar Azure Machine Learning

O segredo principal é Extensión de Visual Studio Code para Azure ML. Permítelle desenvolver scripts de adestramento directamente en VS Code, aproveitando ao máximo o ambiente, e incluso pode executar un script localmente e, a continuación, simplemente envialo para adestrar nun clúster de Azure ML con algúns clics. Conveniente, non?

Ao facelo, obtén os seguintes beneficios ao usar Azure ML:

  • Podes traballar a maior parte do tempo localmente na túa máquina nun IDE cómodo e use GPU só para adestramento de modelos. Ao mesmo tempo, o conxunto de recursos de adestramento pode axustarse automaticamente á carga necesaria e, configurando o número mínimo de nós en 0, pode iniciar automaticamente a máquina virtual "baixo demanda" se hai tarefas de adestramento.
  • podes almacena todos os resultados da aprendizaxe nun só lugar, incluíndo as métricas acadadas e os modelos resultantes - non hai necesidade de crear algún tipo de sistema ou orde para almacenar todos os resultados.
  • Neste caso, Varias persoas poden traballar nun proxecto - Poden usar o mesmo clúster de computación, todos os experimentos estarán en cola e tamén poden ver os resultados dos experimentos dos outros. Un destes escenarios é usando Azure ML na ensinanza de Deep Learning, onde en lugar de darlle a cada alumno unha máquina virtual cunha GPU, podes crear un clúster que será usado de forma centralizada por todos. Ademais, unha táboa xeral de resultados coa precisión do modelo pode servir como un bo elemento competitivo.
  • Usando Azure ML, pode executar facilmente unha serie de experimentos, por exemplo. optimización de hiperparámetros - isto pódese facer cunhas poucas liñas de código, non é necesario realizar unha serie de experimentos manualmente.

Espero haberte convencido para que probes Azure ML. Aquí tes como comezar:

Azure ML Workspace e Azure ML Portal

Azure ML está organizado arredor do concepto zona de traballo - Espazo de traballo. Os datos pódense almacenar no espazo de traballo, pódense enviar experimentos para adestramento e alí tamén se almacenan os resultados do adestramento (as métricas e modelos resultantes). Podes ver o que hai dentro do espazo de traballo usando Portal de Azure ML - e desde alí pode realizar moitas operacións, desde a carga de datos ata o seguimento de experimentos e a implantación de modelos.

Podes crear un espazo de traballo a través da interface web Azure Portal (Ver. instrucións paso a paso), ou usando a liña de comandos de Azure CLI (instrucións):

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

Tamén hai algúns asociados co espazo de traballo recursos informáticos (Calcular). Despois de crear un script para adestrar o modelo, podes facelo enviar un experimento para a súa execución á área de traballo, e especifique destino de cálculo — Neste caso, empaquetarase o script, lanzarase no ambiente informático desexado e, a continuación, todos os resultados do experimento gardaranse no espazo de traballo para a súa posterior análise e uso.

Guión de formación para MNIST

Consideremos o problema clásico recoñecemento de díxitos manuscritos usando o conxunto de datos MNIST. Do mesmo xeito, no futuro poderás executar calquera dos teus scripts de adestramento.

Hai un script no noso repositorio train_local.py, que adestra o modelo de regresión lineal máis sinxelo usando a biblioteca SkLearn. Por suposto, entendo que esta non é a mellor forma de resolver o problema: usámolo como exemplo, como o máis sinxelo.

O script descarga primeiro os datos MNIST de OpenML e despois usa a clase LogisticRegression para adestrar o modelo e, a continuación, imprime a precisión resultante:

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)

Podes executar o script no teu ordenador e nun par de segundos obterás o resultado.

Execución do script en Azure ML

Se executamos o script de adestramento a través de Azure ML, teremos dúas vantaxes principais:

  • Realizar adestramento nun recurso informático arbitrario, que adoita ser máis produtivo que un ordenador local. Neste caso, o propio Azure ML encargarase de empaquetar o noso script con todos os ficheiros do directorio actual nun contedor docker, instalar as dependencias necesarias e envialo para a súa execución.
  • Escriba os resultados nun único rexistro dentro dun espazo de traballo de Azure ML. Para aproveitar esta función, necesitamos engadir un par de liñas de código ao noso script para rexistrar a precisión resultante:

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

Chámase a versión correspondente do script train_universal.py (está un pouco máis astuto que o descrito anteriormente, pero non moito). Este script pódese executar tanto localmente como nun recurso informático remoto.

Para executalo en Azure ML desde VS Code, debes facer o seguinte:

  1. Asegúrate de que a extensión de Azure estea conectada á túa subscrición. Seleccione a icona de Azure no menú da esquerda. Se non estás conectado, aparecerá unha notificación na esquina inferior dereita (como isto), facendo clic na que pode iniciar sesión a través do navegador. Tamén podes facer clic Ctrl-Maiús-P para abrir a liña de comandos de VS Code e escriba Iniciar sesión en Azure.

  2. Despois diso, na sección Azure (icona da esquerda), busque a sección APRENDIZAXE MÁQUINA:

Como vencer o medo e comezar a usar Azure Machine Learning
Aquí deberías ver diferentes grupos de obxectos dentro do espazo de traballo: recursos informáticos, experimentos, etc.

  1. Vaia á lista de ficheiros, fai clic co botón dereito sobre o script train_universal.py e selecciona Azure ML: executar como experimento en Azure.

Como vencer o medo e comezar a usar Azure Machine Learning

  1. A isto seguirá unha serie de diálogos na área da liña de comandos de VS Code: confirme a súa subscrición e o espazo de traballo de Azure ML e seleccione Crea un novo experimento:

Como vencer o medo e comezar a usar Azure Machine Learning
Como vencer o medo e comezar a usar Azure Machine Learning
Como vencer o medo e comezar a usar Azure Machine Learning

  1. Seleccione para crear un novo recurso informático Crear un novo computador:

    • Calcular determina o recurso informático sobre o que se desenvolverá a formación. Podes escoller un ordenador local ou o clúster de nube AmlCompute. Recomendo crear un clúster escalable de máquinas STANDARD_DS3_v2, cun número mínimo de máquinas 0 (e o máximo pode ser 1 ou máis, dependendo dos teus apetitos). Isto pódese facer a través da interface VS Code ou previamente a través Portal ML.

    Como vencer o medo e comezar a usar Azure Machine Learning

  2. A continuación, cómpre seleccionar unha configuración Configuración de computación, que define os parámetros do contedor creado para a formación, en particular, todas as bibliotecas necesarias. No noso caso, xa que estamos a usar Scikit Learn, seleccionamos SkLearn, e, a continuación, simplemente confirme a lista de bibliotecas proposta premendo Intro. Se utiliza algunha biblioteca adicional, debe especificalas aquí.

    Como vencer o medo e comezar a usar Azure Machine Learning
    Como vencer o medo e comezar a usar Azure Machine Learning

  3. Despois disto, abrirase unha xanela cun ficheiro JSON que describe o experimento. Pode corrixir algúns parámetros nel, por exemplo, o nome do experimento. Despois diso, fai clic na ligazón Enviar experimento xusto dentro deste ficheiro:

Como vencer o medo e comezar a usar Azure Machine Learning

  1. Despois de enviar correctamente un experimento a través de VS Code, na área de notificación da dereita verá unha ligazón a Portal de Azure ML, onde podes seguir o estado e os resultados do experimento.

Como vencer o medo e comezar a usar Azure Machine Learning
Posteriormente, sempre podes atopalo na sección Experimentos Portal de Azure ML, ou na sección Aprendizaxe automática de Azure na lista de experimentos:

Como vencer o medo e comezar a usar Azure Machine Learning

  1. Se posteriormente fixeches algunhas correccións no código ou cambiaches os parámetros, volverá executar o experimento será moito máis rápido e sinxelo. Ao facer clic co botón dereito sobre o ficheiro, verá un novo elemento de menú Repita a última carreira - só tes que seleccionalo e o experimento lanzarase inmediatamente:

Como vencer o medo e comezar a usar Azure Machine Learning
Sempre podes atopar os resultados das métricas de todas as execucións no portal de Azure ML; non é necesario rexistralos.

Agora sabes que executar experimentos usando Azure ML é sinxelo, indolor e contén algúns beneficios interesantes.

Pero quizais teñas notado algunhas desvantaxes. Por exemplo, levou moito máis tempo executar o script. Por suposto, empaquetar o script nun contedor e implantalo no servidor leva tempo. Se o clúster quedase reducido a un tamaño de 0 nodos, tardará aínda máis tempo en iniciar a máquina virtual, e todo isto nótase moito cando experimentamos problemas sinxelos como MNIST, que se solucionan en poucos segundos. Non obstante, na vida real, cando o adestramento dura varias horas, ou mesmo días ou semanas, este tempo adicional vólvese insignificante, especialmente no contexto do rendemento moito maior que pode proporcionar un clúster de computación.

Cal é o próximo?

Espero que despois de ler este artigo poidas usar Azure ML no teu traballo para executar scripts, xestionar recursos informáticos e almacenar de forma centralizada os resultados. Non obstante, Azure ML pode darche aínda máis beneficios.

Podes almacenar datos dentro dun espazo de traballo, creando así un repositorio centralizado para todas as túas tarefas ao que sexa fácil acceder. Ademais, pode realizar experimentos usando a API en lugar de Visual Studio Code; isto pode ser especialmente útil se precisa realizar unha optimización de hiperparámetros e necesita executar o script moitas veces con diferentes parámetros. Ademais, a tecnoloxía especial está integrada en Azure ML hiperunidade, que permite unha busca máis sofisticada e optimización de hiperparámetros. Destas posibilidades falarei no meu próximo post.

Recursos útiles

Para obter máis información sobre Azure ML, podes atopar útiles os seguintes cursos de Microsoft Learn:

Fonte: www.habr.com

Engadir un comentario