Conozco a muchos científicos de datos, y probablemente me relaciono con ellos, que trabajan en máquinas con GPU, locales o virtuales, ubicadas en la nube, ya sea a través de Jupyter Notebook o a través de algún entorno de desarrollo de Python. Trabajando durante 2 años como experto en desarrollo de IA / ML, hice exactamente eso, mientras preparaba los datos en un servidor o estación de trabajo normal, y comencé a entrenar en una máquina virtual con una GPU en Azure.
Por supuesto, todos escuchamos sobre Azure Machine Learning , una plataforma especial basada en la nube para el aprendizaje automático. Sin embargo, después de un primer vistazo a los artículos introductorios , parece que Azure ML creará más problemas de los que resolverá. Por ejemplo, en el ejemplo de capacitación mencionado anteriormente, la capacitación de Azure ML se inicia desde Jupyter Notebook, mientras que el script de capacitación en sí mismo se propone crear y editar como un archivo de texto en una de las celdas, sin usar autocompletado, resaltado de sintaxis y otras ventajas de un entorno de desarrollo normal. Por esta razón, hace mucho tiempo que no usamos Azure ML en nuestro trabajo.
Sin embargo, ¡recientemente descubrí una manera de comenzar a usar Azure ML de manera efectiva en mi trabajo! Detalles interesantes

El secreto principal es la extensión de Visual Studio Code para Azure ML . Le permite desarrollar scripts de capacitación directamente en VS Code, utilizando todas las ventajas del entorno: incluso puede ejecutar el script localmente, y luego simplemente tomarlo y enviarlo para capacitación en el clúster de Azure ML con unos pocos clics del mouse. Conveniente, ¿no es así?
Al hacerlo, obtiene los siguientes beneficios al usar Azure ML:
- Puede trabajar la mayor parte del tiempo localmente en su máquina en un IDE conveniente, y usar la GPU solo para entrenar el modelo . Al mismo tiempo, el conjunto de recursos de capacitación puede adaptarse automáticamente a la carga requerida, y al establecer el número mínimo de nodos en 0, puede iniciar automáticamente la máquina virtual "a pedido" en presencia de tareas de capacitación.
- Puede almacenar todos los resultados de aprendizaje en un solo lugar , incluidas las métricas logradas y los modelos resultantes; no es necesario inventar ningún sistema o procedimiento para almacenar todos los resultados.
- Al mismo tiempo, varias personas pueden trabajar en un proyecto : pueden usar el mismo clúster informático, todos los experimentos estarán alineados y también pueden ver los resultados de los experimentos de cada uno. Uno de estos escenarios es el uso de Azure ML en la enseñanza de Deep Learning , cuando en lugar de proporcionar a cada alumno una máquina virtual con una GPU, puede crear un clúster que todos usarán de manera centralizada. Además, una tabla general de resultados con precisión del modelo puede servir como un buen elemento competitivo.
- Con Azure ML, puede realizar fácilmente una serie de experimentos, por ejemplo, para optimizar los hiperparámetros ; esto se puede hacer con unas pocas líneas de código, no es necesario realizar una serie de experimentos manualmente.
¡Espero haberte convencido de probar Azure ML! Aquí le mostramos cómo comenzar:
Azure ML Workspace y Azure ML Portal
Azure ML está organizado en torno al concepto del espacio de trabajo : espacio de trabajo. Los datos pueden almacenarse en el espacio de trabajo, los experimentos se envían para capacitación, los resultados de aprendizaje se almacenan en el mismo lugar: las métricas y los modelos obtenidos. Puede ver lo que hay dentro del espacio de trabajo a través del portal Azure ML , y desde allí puede realizar muchas operaciones, desde la carga de datos hasta los experimentos de monitoreo y la implementación del modelo.
Puede crear un espacio de trabajo a través de la interfaz web de Azure Portal (consulte las 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 hay algunos recursos de cómputo asociados con el espacio de trabajo. Después de crear un script para entrenar el modelo, puede enviar el experimento al espacio de trabajo y especificar el objetivo de cálculo ; esto empacará el script, lo 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 entrenamiento para MNIST
Considere el clásico problema de reconocimiento de escritura a mano usando el conjunto de datos MNIST. Del mismo modo, en el futuro podrá ejecutar cualquiera de sus scripts de entrenamiento.
Nuestro repositorio tiene un script train_local.py
que train_local.py
modelo de regresión lineal más simple usando la biblioteca SkLearn. Por supuesto, entiendo que esta no es la mejor manera de resolver el problema: lo usamos como ejemplo, ya que es el más fácil.
El script primero descarga los datos MNIST de OpenML, y luego usa la clase LogisticRegression
para entrenar el modelo, y luego imprime 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 en unos segundos obtendrá el resultado.
Ejecute el script en Azure ML
Si ejecutamos el script para capacitación a través de Azure ML, tendremos dos ventajas principales:
- Comenzar a capacitarse en un recurso informático arbitrario, que, por regla general, es más productivo que una computadora local. Al mismo tiempo, Azure ML se encargará de empaquetar nuestro script con todos los archivos del directorio actual en el contenedor de Docker, instalar las dependencias requeridas y enviarlo para su ejecución.
- Registre los resultados en un único registro dentro del espacio de trabajo de Azure ML. Para aprovechar esta oportunidad, necesitamos 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 train_universal.py
que el escrito anteriormente, 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, haga lo siguiente:
Asegúrese de que Azure Extension esté conectado 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 ( esta ), haciendo clic en el que puede ingresar a través del navegador. También puede presionar Ctrl-Shift-P para invocar la línea de comando del Código VS y escribir Azure Sign In .
Después de eso, en la sección de Azure (icono a la izquierda) encuentre la sección APRENDIZAJE DE MÁQUINAS :

Aquí debería ver diferentes grupos de objetos dentro del espacio de trabajo: recursos informáticos, experimentos, etc.
- Vaya a la lista de archivos, haga clic con el botón derecho en el script
train_universal.py
y seleccione Azure ML: Ejecutar como experimento en Azure .

- Esto será seguido por una serie de cuadros de diálogo en el área de la línea de comandos del Código VS: confirme la suscripción utilizada y el espacio de trabajo de Azure ML, y también seleccione Crear nuevo experimento :



Seleccione Crear nueva computación :
- Computar define el recurso informático en el que se realizará la capacitación. Puede elegir una computadora local o un clúster de nube AmlCompute. Recomiendo crear un grupo escalable de máquinas
STANDARD_DS3_v2
, con un número mínimo de máquinas 0 (y el máximo puede ser 1 o más, dependiendo de sus apetitos). Esto se puede hacer a través de la interfaz VS Code, o previamente a través del Portal ML .

A continuación, debe seleccionar la configuración Compute Configuration , que determina los parámetros del contenedor creado para la capacitación, en particular, todas las bibliotecas necesarias. En nuestro caso, dado que usamos Scikit Learn, seleccione SkLearn y luego simplemente confirme la lista propuesta de bibliotecas con Enter. Si utiliza bibliotecas adicionales, debe especificarlas aquí.


Después de eso, se abre 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 directamente dentro de este archivo:

- Después de enviar con éxito el experimento a través del Código VS, a la derecha en el área de notificación, verá un enlace al Portal Azure Azure , donde puede realizar un seguimiento del estado y los resultados del experimento.

Posteriormente, siempre puede encontrarlo en la sección Experimentos Azure ML Portal , o en la sección Azure Machine Learning en la lista de experimentos:

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

Siempre puede encontrar los resultados de las métricas de todos los lanzamientos en Azure ML Portal, no es necesario registrarlos.
Ahora sabe que ejecutar experimentos con Azure ML es fácil e indoloro, y obtiene numerosos beneficios.
Pero es posible que haya notado fallas. Por ejemplo, llevó mucho más tiempo ejecutar el script. Por supuesto, lleva tiempo empaquetar el script en un contenedor e implementarlo en el servidor. Si al mismo tiempo el clúster se redujo a un tamaño de 0 nodos, tomará aún más tiempo iniciar la máquina virtual, y todo esto es muy notable cuando experimentamos con tareas simples 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 extra se vuelve insignificante, especialmente en el contexto del rendimiento mucho más alto que puede proporcionar un clúster informático.
Que sigue
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 de forma centralizada los resultados. Sin embargo, Azure ML puede proporcionarle aún más beneficios.
Dentro del espacio de trabajo, puede almacenar datos, creando así un repositorio centralizado para todas sus tareas, de fácil acceso. Además, puede ejecutar experimentos no desde Visual Studio Code, sino utilizando la API; esto puede ser especialmente útil si necesita optimizar hiperparámetros, y necesita ejecutar el script muchas veces con diferentes parámetros. Además, en Azure ML, la tecnología Hyperdrive especial está integrada , lo que le permite realizar una búsqueda más astuta y optimizar los hiperparámetros. Hablaré sobre estas características en mi próximo artículo.
Recursos utiles
Para un estudio más profundo de Azure ML, puede encontrar útiles los siguientes cursos de Microsoft Learn: