Cómo superar el miedo y empezar a utilizar Azure Machine Learning

Conozco a muchos científicos de datos, y probablemente yo mismo sea uno de ellos, que trabajan en máquinas GPU, locales o virtuales, ubicadas en la nube, ya sea a través de un Jupyter Notebook o mediante algún tipo de entorno de desarrollo de Python. Trabajé durante 2 años como desarrollador experto en inteligencia artificial y aprendizaje automático. Hice exactamente esto, mientras preparaba los datos en un servidor o estación de trabajo normal y ejecutaba la capacitación en una máquina virtual con una GPU en Azure.

Por supuesto, todos hemos oído hablar de Azure Machine Learning — una plataforma en la nube especial para el aprendizaje automático. Sin embargo, después de una primera mirada a artículos introductorios, parece que Azure ML le creará más problemas de los que resuelve. Por ejemplo, en el tutorial mencionado anteriormente, el entrenamiento en Azure ML se inicia desde un Jupyter Notebook, mientras que se propone crear y editar el script de entrenamiento como un archivo de texto en una de las celdas, sin usar la función de autocompletado, sintaxis resaltado y otras ventajas de un entorno de desarrollo normal. Por esta razón, no hemos usado seriamente Azure ML en nuestro trabajo durante mucho tiempo.

Sin embargo, recientemente descubrí una manera de comenzar a usar Azure ML de manera efectiva en mi trabajo. ¿Interesado en los detalles?

Cómo superar el miedo y empezar a utilizar Azure Machine Learning

El secreto principal es Extensión de Visual Studio Code para Azure ML. Le permite desarrollar secuencias de comandos de capacitación directamente en VS Code, aprovechando al máximo el entorno, e incluso puede ejecutar la secuencia de comandos localmente y luego simplemente enviarla a capacitación en un clúster de Azure ML con unos pocos clics. Conveniente, ¿no?

Al hacerlo, obtiene los siguientes beneficios del uso de Azure ML:

  • Puede trabajar la mayor parte del tiempo localmente en su máquina en un IDE conveniente, y usar GPU solo para entrenamiento de modelos. Al mismo tiempo, el conjunto de recursos de capacitación puede ajustarse automáticamente a la carga requerida y, al establecer la cantidad mínima de nodos en 0, puede iniciar automáticamente la máquina virtual "a pedido" en presencia de tareas de capacitación.
  • usted puede almacenar todos los resultados de aprendizaje en un solo lugar, incluidas las métricas obtenidas y los modelos resultantes: no es necesario crear algún tipo de sistema u orden para almacenar todos los resultados.
  • En este caso, Varias personas pueden trabajar en el mismo proyecto. - pueden usar el mismo clúster informático, todos los experimentos se pondrán en cola y también pueden ver los resultados de los experimentos de los demás. Uno de esos escenarios es usando Azure ML en la enseñanza de Deep Learningcuando en lugar de darle a cada estudiante una máquina virtual con una GPU, puede crear un clúster que será utilizado por todos de forma centralizada. Además, una tabla general de resultados con precisión de modelo puede servir como un buen elemento competitivo.
  • Con Azure ML, puede realizar fácilmente una serie de experimentos, por ejemplo, para optimización de hiperparámetros - esto se puede hacer con unas pocas líneas de código, no hay necesidad de realizar una serie de experimentos manualmente.

¡Espero haberlo convencido para probar Azure ML! Aquí le mostramos cómo comenzar:

Azure ML Workspace y Azure ML Portal

Azure ML está organizado en torno al concepto área de trabajo — espacio de trabajo. Los datos se pueden almacenar en el espacio de trabajo, los experimentos se envían para el entrenamiento, los resultados del entrenamiento también se almacenan allí: las métricas y los modelos resultantes. Puede ver lo que hay dentro del espacio de trabajo a través de Portal de aprendizaje automático de Azure - y desde allí puede realizar muchas operaciones, desde cargar datos hasta monitorear experimentos e implementar modelos.

Puede crear un espacio de trabajo a través de la interfaz web Portal Azure (Ver. instrucciones paso a paso), o mediante la línea de comandos de la CLI de Azure (instrucciones):

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

También asociados con el espacio de trabajo hay algunos recursos informáticos (Calcular). Una vez que haya creado un script para entrenar el modelo, puede enviar experimento para ejecución al espacio de trabajo y especifique computar objetivo - en este caso, el script se empaquetará, se ejecutará en el entorno informático deseado y luego todos los resultados del experimento se guardarán en el espacio de trabajo para su posterior análisis y uso.

Guión de aprendizaje para MNIST

Considere el problema clásico reconocimiento de dígitos escritos a mano utilizando el conjunto de datos MNIST. De manera similar, en el futuro, puede ejecutar cualquiera de sus scripts de entrenamiento.

Hay un script en nuestro repositorio. train_local.py, en el que entrenamos el modelo de regresión lineal más simple utilizando la biblioteca SkLearn. Por supuesto, entiendo que esta no es la mejor manera de resolver el problema; lo usamos como ejemplo, como el más simple.

El script primero descarga los datos MNIST de OpenML y luego usa la clase LogisticRegression para entrenar el modelo y luego imprimir la 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)

Puede ejecutar el script en su computadora y obtener el resultado en un par de segundos.

Ejecute el script en Azure ML

Si ejecutamos el script de entrenamiento a través de Azure ML, tendremos dos ventajas principales:

  • Ejecutar la capacitación en un recurso informático arbitrario que, por regla general, es más productivo que la computadora local. Al mismo tiempo, el propio Azure ML se encargará de empaquetar nuestro script con todos los archivos del directorio actual en un contenedor docker, instalar las dependencias necesarias y enviarlo para su ejecución.
  • Escriba los resultados en un solo registro dentro de un área de trabajo de Azure ML. Para aprovechar esta función, debemos agregar un par de líneas de código a nuestro script para registrar la precisión resultante:

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

La versión correspondiente del script se llama train_universal.py (es un poco más astuto de lo que está escrito arriba, pero no mucho). Este script se puede ejecutar tanto localmente como en un recurso informático remoto.

Para ejecutarlo en Azure ML desde VS Code, debe hacer lo siguiente:

  1. Asegúrese de que la extensión de Azure esté conectada a su suscripción. Seleccione el icono de Azure en el menú de la izquierda. Si no está conectado, aparecerá una notificación en la esquina inferior derecha (aqui esta), haciendo clic en el que puede ingresar a través del navegador. También puede hacer clic Ctrl-Mayús-P para llamar a la línea de comando de VS Code y escriba Iniciar sesión.

  2. Después de eso, en la sección Azure (icono a la izquierda), busque la sección APRENDIZAJE AUTOMÁTICO:

Cómo superar el miedo y empezar a utilizar Azure Machine Learning
Aquí debería ver diferentes grupos de objetos dentro del espacio de trabajo: recursos informáticos, experimentos, etc.

  1. Vaya a la lista de archivos, haga clic derecho en el script train_universal.py y seleccione Azure ML: ejecutar como experimento en Azure.

Cómo superar el miedo y empezar a utilizar Azure Machine Learning

  1. Esto será seguido por una serie de cuadros de diálogo en el área de la línea de comandos de VS Code: confirme la suscripción y el espacio de trabajo de Azure ML que está utilizando, y seleccione Crear nuevo experimento:

Cómo superar el miedo y empezar a utilizar Azure Machine Learning
Cómo superar el miedo y empezar a utilizar Azure Machine Learning
Cómo superar el miedo y empezar a utilizar Azure Machine Learning

  1. Elija crear un nuevo recurso informático Crear nuevo cálculo:

    • Calcular determina el recurso informático en el que se llevará a cabo el entrenamiento. Puede elegir una computadora local o un clúster en la nube de AmlCompute. Recomiendo crear un clúster escalable de máquinas STANDARD_DS3_v2, con un número mínimo de máquinas de 0 (y un máximo de 1 o más, dependiendo de tus apetitos). Esto se puede hacer a través de la interfaz de VS Code, o previamente a través de Portal de aprendizaje automático.

    Cómo superar el miedo y empezar a utilizar Azure Machine Learning

  2. A continuación, debe seleccionar una configuración Configuración de cómputo, que define los parámetros del contenedor creado para el entrenamiento, en particular, todas las bibliotecas necesarias. En nuestro caso, dado que estamos usando Scikit Learn, seleccionamos SkLearn, y luego simplemente confirme la lista propuesta de bibliotecas presionando Enter. Si utiliza bibliotecas adicionales, debe especificarlas aquí.

    Cómo superar el miedo y empezar a utilizar Azure Machine Learning
    Cómo superar el miedo y empezar a utilizar Azure Machine Learning

  3. Esto abrirá una ventana con un archivo JSON que describe el experimento. En él, puede corregir algunos parámetros, por ejemplo, el nombre del experimento. Después de eso, haga clic en el enlace Enviar experimento justo dentro de este archivo:

Cómo superar el miedo y empezar a utilizar Azure Machine Learning

  1. Después de enviar correctamente un experimento a través de VS Code, en el lado derecho del área de notificación, verá un enlace a Portal de aprendizaje automático de Azure, donde puede realizar un seguimiento del estado y los resultados del experimento.

Cómo superar el miedo y empezar a utilizar Azure Machine Learning
Posteriormente, siempre podrás encontrarlo en la sección Experimentos Portal de aprendizaje automático de Azure, o en la sección Azure Machine Learning en la lista de experimentos:

Cómo superar el miedo y empezar a utilizar Azure Machine Learning

  1. Si después de eso hiciste algunas correcciones en el código o cambiaste los parámetros, reiniciar el experimento será mucho más rápido y fácil. Al hacer clic derecho en un archivo, verá un nuevo elemento de menú Repetir última ejecución - simplemente selecciónelo y el experimento comenzará de inmediato:

Cómo superar el miedo y empezar a utilizar Azure Machine Learning
Siempre puede encontrar los resultados de las métricas de todos los lanzamientos en Azure ML Portal, no es necesario anotarlos.

Ahora sabe que ejecutar experimentos con Azure ML es simple e indoloro, y obtiene una serie de beneficios agradables al hacerlo.

Pero también puedes ver las desventajas. Por ejemplo, tomó mucho más tiempo ejecutar el script. Por supuesto, empaquetar el script en un contenedor e implementarlo en el servidor lleva tiempo. Si al mismo tiempo se recortó el clúster a un tamaño de 0 nodos, tardará aún más en arrancar la máquina virtual, y todo esto se nota mucho cuando experimentamos en tareas sencillas como MNIST, que se resuelven en unos segundos. . Sin embargo, en la vida real, cuando el entrenamiento dura varias horas, o incluso días o semanas, este tiempo adicional se vuelve insignificante, especialmente en el contexto del rendimiento mucho mayor que puede proporcionar un clúster de computación.

¿Qué será lo próximo?

Espero que después de leer este artículo, pueda y use Azure ML en su trabajo para ejecutar scripts, administrar recursos informáticos y almacenar resultados de forma centralizada. Sin embargo, Azure ML puede brindarle aún más beneficios.

Dentro del espacio de trabajo, puede almacenar datos, creando así un repositorio centralizado para todas sus tareas, al que es fácil acceder. Además, puede ejecutar experimentos no desde Visual Studio Code, sino mediante la API; esto puede ser especialmente útil si necesita realizar una optimización de hiperparámetros y necesita ejecutar el script muchas veces con diferentes parámetros. Además, la tecnología especial está integrada en Azure ML Hyperdrive, que le permite realizar búsquedas más complejas y optimización de hiperparámetros. Hablaré de estas posibilidades en mi próxima publicación.

Recursos útiles

Para obtener más información sobre Azure ML, puede encontrar útiles los siguientes cursos de Microsoft Learn:

Fuente: habr.com

Añadir un comentario