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

Conozco a muchos Data Scientists — y supongo que yo mismo me incluyo — que trabajan en máquinas con GPU, ya sean locales o virtuales, ubicadas en la nube, ya sea a través de Jupyter Notebook o de algún entorno de desarrollo de Python. Durante mis 2 años como desarrollador experto en AI/ML, hice exactamente eso, preparando los datos en un servidor o estación de trabajo normal, y ejecutando el entrenamiento en una máquina virtual con GPU en Azure.

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

Sin embargo, recientemente descubrí una manera de comenzar a usar Azure ML de forma efectiva en mi trabajo. ¿Te gustaría saber más?

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

El secreto principal es una extensión de Visual Studio Code para Azure ML. Te permite desarrollar scripts de entrenamiento directamente en VS Code, aprovechando todas las ventajas del entorno — además, puedes incluso ejecutar el script localmente y luego simplemente enviarlo para su entrenamiento en el clúster de Azure ML con unos pocos clics. Conveniente, ¿verdad?

Además, obtienes las siguientes ventajas al usar Azure ML:

  • Puedes trabajar la mayor parte del tiempo localmente en tu máquina con un IDE cómodo, y utilizar la GPU solo para el entrenamiento de modelos. Además, el grupo de recursos de entrenamiento puede ajustarse automáticamente a la carga necesaria, y al establecer un número mínimo de nodos en 0, puedes iniciar automáticamente la máquina virtual "bajo demanda" cuando haya tareas de entrenamiento disponibles.
  • Puede almacenar todos los resultados de aprendizaje en un solo lugar, incluyendo las métricas alcanzadas y los modelos obtenidos — no hay necesidad de idear algún sistema o orden para almacenar todos los resultados.
  • Al mismo tiempo varias personas pueden trabajar en un mismo proyecto — pueden usar el mismo clúster computacional, todos los experimentos se pondrán en cola y podrán ver los resultados de los experimentos de los demás. Uno de esos escenarios es el uso de Azure ML en la enseñanza de Deep Learning, cuando en lugar de dar a cada estudiante una máquina virtual con GPU, se puede crear un solo clúster que será utilizado de forma centralizada por todos. Además, una tabla de resultados compartida con la precisión del modelo puede servir como un buen elemento competitivo.
  • Con Azure ML, se pueden realizar fácilmente series de experimentos, por ejemplo, para optimización de hiperparámetros — esto se puede hacer con varias líneas de código, no es necesario realizar series de experimentos manualmente.

¡Espero haberlo convencido de probar Azure ML! Aquí está cómo puedes comenzar:

Azure ML Workspace y Azure ML Portal

Azure ML está organizado en torno al concepto de espacio de trabajo — Workspace. En el espacio de trabajo se pueden almacenar datos, se envían experimentos para entrenamiento, allí también se almacenan los resultados de aprendizaje: métricas y modelos obtenidos. Puedes ver qué hay dentro del espacio de trabajo a través del portal de Azure ML — y desde allí se pueden realizar muchas operaciones, desde subir datos hasta monitorear experimentos y desplegar modelos.

Puedes crear un espacio de trabajo a través de la interfaz web Azure Portal (vea instrucciones paso a paso), o utilizando la línea de comandos de Azure CLI (la guía):

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

También están relacionados algunos recursos computacionales (Cómputo). Al crear un script para entrenar un modelo, puedes enviar un experimento para su ejecución en el espacio de trabajo, e indicar compute target — de esta manera, el script será empaquetado, ejecutado en el entorno computacional adecuado y luego todos los resultados del experimento se guardarán en el espacio de trabajo para un análisis y uso posterior.

Script de entrenamiento para MNIST

Consideremos la clásica tarea de reconocimiento de dígitos escritos a mano con el uso del conjunto de datos MNIST. De manera similar, más adelante podrá ejecutar cualquier script de entrenamiento que desee.

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

El script primero descarga los datos de MNIST de OpenML y luego utiliza la clase LogisticRegression para entrenar el modelo, y luego imprime la precisión obtenida:

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('Precisión general:', acc)

Puede ejecutar el script en su computadora y en unos segundos obtendrá el resultado.

Ejecutando el script en Azure ML

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

  • Ejecutar el entrenamiento en un recurso computacional cualquiera que, por lo general, es más potente que una computadora local. Azure ML se encargará de empaquetar nuestro script con todos los archivos de la directorio actual en un contenedor docker, instalar las dependencias necesarias y enviarlo a ejecutar.
  • Registrar los resultados en un único registro dentro del espacio de trabajo de Azure ML. Para aprovechar esta opción, necesitamos agregar un par de líneas de código en nuestro script para registrar la precisión obtenida:

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

La versión correspondiente del script se llama train_universal.py (es un poco más elaborado de lo que se ha escrito arriba, pero no mucho). Este script se puede ejecutar tanto localmente como en un recurso de computación 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. Elija el ícono de Azure en el menú de la izquierda. Si no está conectado, aparecerá una notificación en la esquina inferior derecha (así), al hacer clic en ella podrá iniciar sesión a través del navegador. También puede presionar Ctrl-Shift-P para abrir la línea de comandos de VS Code y escribir Azure Sign In.

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

Cómo superar el miedo y comenzar a utilizar Azure Machine Learning
Aquí deberías ver diferentes grupos de objetos dentro del área de trabajo: recursos computacionales, experimentos, etc.

  1. Ve a la lista de archivos, haz clic derecho en el script train_universal.py y seleccione Azure ML: Ejecutar como experimento en Azure.

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

  1. A continuación, se abrirá una serie de diálogos en la línea de comandos de VS Code: confirma la suscripción y el área de trabajo de Azure ML que estás utilizando, así como selecciona Crear un nuevo experimento:

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

  1. Selecciona la creación de un nuevo recurso computacional Crear nuevo cómputo:

    • Cómputo define el recurso computacional en el que se llevará a cabo el entrenamiento. Puedes elegir tu computadora local o un clúster en la nube AmlCompute. Te recomiendo crear un clúster de máquinas escalable STANDARD_DS3_v2, con un número mínimo de máquinas 0 (y un máximo que puede ser 1 o más, dependiendo de tus necesidades). Esto se puede hacer a través de la interfaz de VS Code o previamente a través de ML Portal.

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

  2. A continuación, es necesario seleccionar la 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, como estamos utilizando Scikit Learn, seleccionamos SkLearn, y luego simplemente confirmamos la lista de bibliotecas propuestas presionando Enter. Si usas alguna biblioteca adicional, debes especificarlas aquí.

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

  3. Después de esto, se abrirá una ventana con un archivo JSON que describe el experimento. En él puedes corregir algunos parámetros, como el nombre del experimento. Luego, haz clic en el enlace Enviar Experimento justo dentro de este archivo:

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

  1. Después de enviar el experimento correctamente a través de VS Code, verás un enlace en el área de notificaciones a la derecha para Azure ML Portal, donde podrás rastrear el estado y los resultados del experimento.

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

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

  1. Si después hiciste alguna corrección en el código o cambió los parámetros, reiniciar el experimento será mucho más rápido y sencillo. Al hacer clic derecho en el archivo, verás una nueva opción de menú Repetir la última ejecución — simplemente selecciónala, y el experimento se ejecutará de inmediato:

Cómo superar el miedo y comenzar a utilizar Azure Machine Learning
Siempre podrás encontrar los resultados de las métricas de todas las ejecuciones en Azure ML Portal, no es necesario anotarlas.

Ahora sabes que ejecutar experimentos con Azure ML es fácil y sin dolor, y además obtienes una serie de agradables beneficios.

Pero también puede que haya notado algunas desventajas. Por ejemplo, el tiempo requerido para ejecutar un script fue considerablemente mayor. Claro, se necesita tiempo para empaquetar el script en un contenedor y desplegarlo en el servidor. Si además el clúster se reduce a un tamaño de 0 nodos, llevará aún más tiempo iniciar la máquina virtual, y todo esto es muy evidente cuando experimentamos con tareas simples como MNIST, que se resuelven en unos pocos segundos. Sin embargo, en la vida real, cuando el entrenamiento dura varias horas, días o incluso semanas, ese tiempo adicional se vuelve insignificante, especialmente frente al aumento significativo en el rendimiento que puede ofrecer un clúster computacional.

¿Qué sigue?

Espero que después de leer este artículo, pueda y decida usar Azure ML en su trabajo para ejecutar scripts, gestionar recursos computacionales y almacenar resultados de manera centralizada. ¡Sin embargo, Azure ML puede ofrecerle aún más ventajas!

Dentro del área de trabajo, se pueden almacenar datos, creando así un repositorio centralizado para todas sus tareas, al cual es fácil acceder. Además, puede ejecutar experimentos no solo desde Visual Studio Code, sino utilizando la API — esto puede ser especialmente útil si necesita realizar una optimización de hiperparámetros y necesita ejecutar el script varias veces con diferentes parámetros. Además, Azure ML incorpora una tecnología especial Hyperdrive, que permite realizar búsquedas más sofisticadas y optimización de hiperparámetros. De estas capacidades hablaré en mi próxima nota.

Recursos útiles

Para un estudio más detallado de Azure ML, puede encontrar útiles los siguientes cursos de Microsoft Learn:

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster