Tutorial: Desarrollo de modelos en una estación de trabajo en la nube
Aprenda a desarrollar un script de entrenamiento con un cuaderno en una estación de trabajo en la nube de Azure Machine Learning. En este tutorial se describen los conceptos básicos que necesita para empezar a trabajar:
- Configure la estación de trabajo en la nube. La estación de trabajo en la nube cuenta con tecnología de una instancia de proceso de Azure Machine Learning, que está preconfigurada con entornos que podrá usar para satisfacer las distintas necesidades del proceso de desarrollo de modelos.
- Use entornos de desarrollo basados en la nube.
- Use MLflow para realizar un seguimiento de las métricas del modelo, todo desde un solo cuaderno.
Requisitos previos
Para usar Azure Machine Learning, primero necesitará un área de trabajo. Si no tiene una, complete Creación de los recursos necesarios para empezar a trabajar, para crear un área de trabajo y obtener más información sobre su uso.
Inicio con cuadernos
La sección Cuadernos del área de trabajo es un buen lugar para obtener información sobre Azure Machine Learning y sus funcionalidades. Aquí puede conectarse a los recursos del proceso, trabajar con un terminal y editar y ejecutar cuadernos y scripts de Jupyter Notebook.
Inicie sesión en Azure Machine Learning Studio.
Seleccione el área de trabajo si aún no está abierta.
En el panel de navegación izquierdo, seleccione Cuadernos.
Si no tiene una instancia de proceso, verá la opción Crear proceso en medio de la pantalla. Seleccione Crear proceso y rellene el formulario. Puede usar todos los valores predeterminados. (Si ya tiene una instancia de proceso, en su lugar verá Terminal en ese lugar. Tenga en cuenta que usará la opción Terminal más adelante en este tutorial).
Configuración de un nuevo entorno para la creación de prototipos (opcional)
Para que el script se ejecute, debe trabajar en un entorno configurado con las dependencias y bibliotecas que espera el código. En esta sección encontrará información para crear un entorno adaptado al código. Para crear el nuevo kernel de Jupyter al que se conecta el cuaderno, tendrá que usar un archivo YAML que defina las dependencias.
Cargar un archivo.
Los archivos que cargue se almacenarán en un recurso compartido de archivos de Azure, y estos archivos se montarán en cada instancia de proceso y se compartirán en el área de trabajo.
- Descargue este archivo del entorno Conda, workstation_env.yml, a su equipo con el botón Descargar archivo sin formato en la parte superior derecha.
Seleccione Agregar archivos y, después, Cargar archivos para cargarlos en el área de trabajo.
Haga clic en Examinar y seleccione los archivos.
Seleccione el archivo workstation_env.yml que descargó.
Seleccione Cargar.
Verá el archivo workstation_env.yml en la carpeta del nombre de usuario que está en la pestaña Archivos. Seleccione el archivo para obtener una vista previa y consulte las dependencias que especifica. El contenido aparece de esta forma:
name: workstation_env # This file serves as an example - you can update packages or versions to fit your use case dependencies: - python=3.8 - pip=21.2.4 - scikit-learn=0.24.2 - scipy=1.7.1 - pandas>=1.1,<1.2 - pip: - mlflow-skinny - azureml-mlflow - psutil>=5.8,<5.9 - ipykernel~=6.0 - matplotlib
Cree un kernel.
A continuación, use el terminal de Azure Machine Learning para crear un nuevo kernel de Jupyter, basado en el archivo workstation_env.yml.
Seleccione Terminal para abrir una ventana de terminal. También puede abrir el terminal desde la barra de comandos izquierda:
Si la instancia de proceso se detiene, seleccione Iniciar proceso y espere hasta que se ejecute.
Una vez que el proceso se está ejecutando, verá un mensaje de bienvenida en el terminal y puede empezar a escribir comandos.
Consulte los entornos de Conda actuales. El entorno activo se marca con un *.
conda env list
Si ha creado una subcarpeta para este tutorial,
cd
a esa carpeta.Cree el entorno en función del archivo Conda proporcionado. Recuerde que este entorno tarda unos minutos en crearse.
conda env create -f workstation_env.yml
Active el nuevo entorno.
conda activate workstation_env
Compruebe que el entorno correcto está activo; para ello, busque el entorno marcado con *.
conda env list
Cree un nuevo kernel de Jupyter basado en el entorno activo.
python -m ipykernel install --user --name workstation_env --display-name "Tutorial Workstation Env"
Cierre ventana de terminal.
Ya tiene un nuevo kernel. A continuación, abra un cuaderno y use este kernel.
Creación de un cuaderno
Seleccione Agregar archivos y elija Crear nuevo archivo.
Asigne un nombre al nuevo cuaderno develop-tutorial.ipynb (o escriba el nombre que quiera).
Si la instancia de proceso se detiene, seleccione Iniciar proceso y espere hasta que se ejecute.
Verá que el cuaderno está conectado al kernel predeterminado en la parte superior derecha. Cambie para usar el kernel Tutorial Workstation Env si ha creado el kernel.
Desarrollo de un script de entrenamiento
En esta sección, desarrollará un script de entrenamiento de Python capaz de predecir pagos predeterminados de la tarjeta de crédito mediante los conjuntos de datos de prueba y entrenamiento preparados del conjunto de datos de UCI.
Este código usa sklearn
para el entrenamiento y MLflow para registrar las métricas.
Comience con el código que importa los paquetes y las bibliotecas que usará en el script de entrenamiento.
import os import argparse import pandas as pd import mlflow import mlflow.sklearn from sklearn.ensemble import GradientBoostingClassifier from sklearn.metrics import classification_report from sklearn.model_selection import train_test_split
A continuación, cargue y procese los datos de este experimento. En este tutorial, tendrá que leer los datos de un archivo en Internet.
# load the data credit_df = pd.read_csv( "https://azuremlexamples.blob.core.windows.net/datasets/credit_card/default_of_credit_card_clients.csv", header=1, index_col=0, ) train_df, test_df = train_test_split( credit_df, test_size=0.25, )
Prepare los datos para el entrenamiento:
# Extracting the label column y_train = train_df.pop("default payment next month") # convert the dataframe values to array X_train = train_df.values # Extracting the label column y_test = test_df.pop("default payment next month") # convert the dataframe values to array X_test = test_df.values
Agregue código para iniciar el registro automático con
MLflow
, de modo que pueda realizar un seguimiento de las métricas y los resultados. Gracias a la naturaleza iterativa del desarrollo de modelos,MLflow
le permite registrar los parámetros y los resultados del modelo. Consulte esas ejecuciones para comparar y comprender cómo funciona el modelo. Los registros también proporcionan contexto que podrá usar cuando esté listo para pasar de la fase de desarrollo a la fase de entrenamiento de los flujos de trabajo en la instancia de Azure Machine Learning.# set name for logging mlflow.set_experiment("Develop on cloud tutorial") # enable autologging with MLflow mlflow.sklearn.autolog()
Entrene un modelo.
# Train Gradient Boosting Classifier print(f"Training with data of shape {X_train.shape}") mlflow.start_run() clf = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1) clf.fit(X_train, y_train) y_pred = clf.predict(X_test) print(classification_report(y_test, y_pred)) # Stop logging for this model mlflow.end_run()
Nota:
Puede ignorar las advertencias de mlflow. Seguirá obteniendo todos los resultados de los que necesite un seguimiento.
Iteración
Ahora que tiene los resultados del modelo, es posible que quiera cambiar algo e intentarlo de nuevo. Por ejemplo, tal vez quiera probar una técnica de clasificador diferente:
# Train AdaBoost Classifier
from sklearn.ensemble import AdaBoostClassifier
print(f"Training with data of shape {X_train.shape}")
mlflow.start_run()
ada = AdaBoostClassifier()
ada.fit(X_train, y_train)
y_pred = ada.predict(X_test)
print(classification_report(y_test, y_pred))
# Stop logging for this model
mlflow.end_run()
Nota:
Puede ignorar las advertencias de mlflow. Seguirá obteniendo todos los resultados de los que necesite un seguimiento.
Examen de los resultados
Ahora que ha probado dos modelos diferentes, use los resultados cuyo seguimiento realiza MLFfow
para decidir qué modelo es mejor. Puede consultar métricas como la precisión u otros indicadores importantes para sus escenarios. Puede profundizar en estos resultados con más detalle si examina los trabajos que creó MLflow
.
En el panel de navegación izquierdo, seleccione Trabajos.
Seleccione el vínculo del tutorial Desarrollo en la nube.
Se muestran dos trabajos diferentes, uno para cada uno de los modelos que haya probado. Estos nombres se generan automáticamente. Cuando mantenga el puntero sobre un nombre, use la herramienta de lápiz que aparece junto al nombre si quiere cambiarlo.
Seleccione el vínculo del primer trabajo. El nombre aparece en la parte superior. También puede cambiar el nombre aquí, con la herramienta del lápiz.
En la página se muestran detalles del trabajo, como propiedades, salidas, etiquetas y parámetros. En Etiquetas, verá el elemento estimator_name, que describe el tipo de modelo.
Seleccione la pestaña Métricas para ver las métricas que registró
MLflow
. (Puede esperar que los resultados sean diferentes, ya que tiene un conjunto de entrenamiento diferente).Seleccione la pestaña Imágenes para ver las imágenes que generó
MLflow
.Vuelva y revise las métricas e imágenes del otro modelo.
Creación de un script de Python
A continuación, cree un script de Python desde el cuaderno para el entrenamiento del modelo.
En la barra de herramientas del cuaderno, seleccione el menú.
Seleccione Exportar como> Python.
Asigne al archivo el nombre train.py.
Examine este archivo y elimine el código que no quiera tener en el script de entrenamiento. Por ejemplo, mantenga el código del modelo que quiera usar y elimine el código del modelo que no quiera.
- Asegúrese de mantener el código que inicia el registro automático (
mlflow.sklearn.autolog()
). - Es posible que quiera eliminar los comentarios generados automáticamente y agregar más comentarios propios.
- Al ejecutar el script de Python de forma interactiva (en un terminal o cuaderno), puede mantener la línea que define el nombre del experimento (
mlflow.set_experiment("Develop on cloud tutorial")
). O bien, puede asignarle un nombre diferente para verlo como una entrada diferente en la sección Trabajos. Aún así, al preparar el script de un trabajo de entrenamiento, esa línea no funcionará y se debe omitir: la definición del trabajo incluye el nombre del experimento. - Al entrenar un único modelo, las líneas para iniciar y finalizar una ejecución (
mlflow.start_run()
ymlflow.end_run()
) tampoco son necesarias (ya que no tendrán ningún efecto), pero se pueden dejar tal cual, si quiere.
- Asegúrese de mantener el código que inicia el registro automático (
Cuando haya terminado con las modificaciones, guarde el archivo.
Ya tiene un script de Python que podrá usar para entrenar el modelo que prefiera.
Ejecute el script de Python.
Por ahora, ejecutará este código en la instancia de proceso, que es el entorno de desarrollo de Azure Machine Learning. En el Tutorial: Entrenamiento de un modelo se muestra cómo ejecutar un script de entrenamiento de forma más escalable en recursos de proceso más eficaces.
En la parte izquierda, seleccione Abrir terminal para abrir una ventana de terminal.
Consulte los entornos de Conda actuales. El entorno activo se marca con un *.
conda env list
Si ha creado un kernel, actívelo ahora:
conda activate workstation_env
Si ha creado una subcarpeta para este tutorial,
cd
a esa carpeta.Ejecute el script de entrenamiento.
python train.py
Nota:
Puede ignorar las advertencias de mlflow. Seguirá recibiendo todas las métricas e imágenes del registro automático.
Examen de los resultados del script
Vuelva a la opción Trabajos para ver los resultados del script de entrenamiento. Tenga en cuenta que los datos de entrenamiento cambian con cada división, por lo que los resultados también serán diferentes entre ejecuciones.
Limpieza de recursos
Si quiere continuar con otros tutoriales, ve a Pasos siguientes.
Detención de una instancia de proceso
Si no va a utilizar ahora la instancia de proceso, deténgala:
- En el estudio, en el área de navegación de la izquierda, seleccione Proceso.
- En las pestañas superiores, seleccione Instancia de proceso.
- Seleccione la instancia de proceso en la lista.
- En la barra de herramientas superior, seleccione Detener.
Eliminación de todos los recursos
Importante
Los recursos que creó pueden usarse como requisitos previos para otros tutoriales y artículos de procedimientos de Azure Machine Learning.
Si no va a usar ninguno de los recursos que ha creado, elimínelos para no incurrir en cargos:
En Azure Portal, seleccione Grupos de recursos a la izquierda del todo.
En la lista, seleccione el grupo de recursos que creó.
Seleccione Eliminar grupo de recursos.
Escriba el nombre del grupo de recursos. A continuación, seleccione Eliminar.
Pasos siguientes
Más información sobre:
- De los artefactos a los modelos en MLflow
- Uso de GIT con Azure Machine Learning
- Ejecución de cuadernos de Jupyter Notebook en el área de trabajo
- Trabajo con un terminal de instancia de proceso en el área de trabajo
- Administración de sesiones de cuaderno y de terminal
En este tutorial se han mostrado los primeros pasos para crear un modelo y crear prototipos en la misma máquina donde reside el código. En el caso del entrenamiento de producción, puede aprender a usar ese script de entrenamiento en recursos de proceso remotos más eficaces:
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de