En este artículo, aprenderá a implementar un modelo de Machine Learning entrenado por AutoML en un punto de conexión en línea de inferencia en tiempo real. El aprendizaje automático automatizado, también denominado ML automatizado o AutoML, es el proceso de automatizar las tareas lentas e iterativas del desarrollo de modelos de Machine Learning. Para más información, vea ¿Qué es el aprendizaje automático automatizado (AutoML)?
En las secciones siguientes, aprenderá a implementar el modelo de Machine Learning entrenado con AutoML en puntos de conexión en línea usando:
Implementación desde el Estudio de Azure Machine Learning y sin código
La implementación de un modelo entrenado por AutoML desde la página de ML automatizado es una experiencia sin código. Es decir, no es necesario preparar un script y un entorno de puntuación, ya que ambos se generan automáticamente.
En Estudio de Azure Machine Learning, vaya a la página ML automatizado.
Seleccione el tipo de experimento y ejecútelo.
Elija la pestaña Modelos y trabajos secundarios.
Seleccione el modelo que quiere implementar.
Después de seleccionar un modelo, el botón Implementar está disponible con un menú desplegable.
Seleccione la opción Punto de conexión en tiempo real.
El sistema genera el modelo y el entorno necesarios para la implementación.
Implementación manual desde Studio o la línea de comandos
Si quiere tener más control sobre la implementación, puede descargar los artefactos de entrenamiento e implementarlos.
Para descargar los componentes que necesitará para la implementación:
Vaya al experimento de ML automatizado y ejecútelo en el área de trabajo de aprendizaje automático.
Elija la pestaña Modelos y trabajos secundarios.
Seleccione el modelo que quiere usar. Después de seleccionar un modelo, el botón Descargar está habilitado.
Elija Descargar.
Recibirá un archivo .zip que contiene:
Un archivo de especificación de entorno de Conda llamado conda_env_<VERSION>.yml
Un archivo de puntuación de Python llamado scoring_file_<VERSION>.py
El modelo en sí, en un archivo de Python .pkl llamado model.pkl
Para realizar la implementación con estos archivos, puede usar Studio o la CLI de Azure.
En Estudio de Azure Machine Learning, vaya a la página Modelos.
Seleccione + Registrar>Desde archivos locales.
Registre el modelo que descargó de la ejecución de ML automatizado.
Vaya a la página Entornos, seleccione Entorno personalizado, y seleccione + Crear para crear un entorno para su implementación. Use el YAML de Conda descargado para crear un entorno personalizado.
Seleccione el modelo y, en el menú desplegable de Implementación, seleccione Punto de conexión en tiempo real.
Complete todos los pasos del asistente para crear un punto de conexión en línea y una implementación.
Si tiene acceso a varias suscripciones de Azure, puede establecer la suscripción de Azure.
az account set -s "<YOUR_SUBSCRIPTION_NAME_OR_ID>"
Establezca el grupo de recursos y el área de trabajo predeterminados en los que quiere crear la implementación.
az configure --defaults group=$GROUP workspace=$WORKSPACE location=$LOCATION
Disposición del archivo de puntuación en su propio directorio
Cree un directorio denominado src. Guarde el archivo de puntuación que descargó en él. Este directorio se carga en Azure y contiene todo el código fuente necesario para realizar la inferencia. Para un modelo de AutoML, solo hay un archivo de puntuación.
Creación del punto de conexión y el archivo YAML de implementación
Para crear un punto de conexión en línea desde la línea de comandos, cree un archivo endpoint.yml y uno deployment.yml. El código siguiente, tomado del repositorio de ejemplos de Azure Machine Learning muestra endpoints/online/managed/sample/, que captura todas las entradas necesarias.
Deberá modificar este archivo para usar los archivos que descargó de la página Modelos de AutoML.
Cree un archivo automl_endpoint.yml y automl_deployment.yml y pegue el contenido de los ejemplos anteriores.
Cambie el valor del name del punto de conexión. El nombre del punto de conexión debe ser único dentro de la región de Azure. El nombre de un punto de conexión debe empezar con una letra mayúscula o minúscula y estar formado solo por caracteres "-" y alfanuméricos.
En el archivo automl_deployment.yml, cambie el valor de las claves en las siguientes rutas de acceso.
Path
Cambiar a
model:path
Ruta de acceso al archivo model.pkl que descargó.
code_configuration:code:path
El directorio en el que ha colocado el archivo de puntuación.
code_configuration:scoring_script
Nombre del archivo de puntuación de Python (scoring_file_<VERSION>.py).
environment:conda_file
Dirección URL del archivo de entorno de Conda descargado (conda_env_<VERSION>.yml).
Disposición del archivo de puntuación en su propio directorio
Cree un directorio denominado src. Guarde el archivo de puntuación que descargó en él. Este directorio se carga en Azure y contiene todo el código fuente necesario para realizar la inferencia. Para un modelo de AutoML, solo hay un archivo de puntuación.
Conexión al área de trabajo de Azure Machine Learning
Importe las bibliotecas necesarias.
# import required libraries
from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
ManagedOnlineEndpoint,
ManagedOnlineDeployment,
Model,
Environment,
CodeConfiguration,
)
from azure.identity import DefaultAzureCredential
Configure los detalles del área de trabajo y obtenga un controlador para el área de trabajo.
# enter details of your Azure Machine Learning workspace
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"
workspace = "<AZUREML_WORKSPACE_NAME>"
# get a handle to the workspace
ml_client = MLClient(
DefaultAzureCredential(), subscription_id, resource_group, workspace
)
Creación del punto de conexión y la implementación
Cree los puntos de conexión en línea administrados y las implementaciones.
Configure el punto de conexión en línea.
Sugerencia
name: Nombre del punto de conexión. El valor debe ser único dentro de la región de Azure. El nombre de un punto de conexión debe empezar con una letra mayúscula o minúscula y estar formado solo por caracteres "-" y alfanuméricos. Para más información sobre las reglas de nomenclatura, vea los límites del punto de conexión.
auth_mode: use key para la autenticación basada en claves. Use aml_token para la autenticación basada en tokens de Azure Machine Learning. key no expira, pero aml_token sí lo hace. Para más información sobre la autenticación, consulte Autenticación en un punto de conexión en línea.
# Creating a unique endpoint name with current datetime to avoid conflicts
import datetime
online_endpoint_name = "endpoint-" + datetime.datetime.now().strftime("%m%d%H%M%f")
# create an online endpoint
endpoint = ManagedOnlineEndpoint(
name=online_endpoint_name,
description="this is a sample online endpoint",
auth_mode="key",
)
Cree el punto de conexión.
Con el MLClient creado anteriormente, cree el punto de conexión en el área de trabajo. Este comando inicia la creación del punto de conexión. Devuelve una respuesta de confirmación mientras continúa la creación del punto de conexión.
ml_client.begin_create_or_update(endpoint)
Configure la implementación en línea.
Una implementación es un conjunto de recursos necesarios para hospedar el modelo que realiza la inferencia real. Creamos una implementación para nuestro punto final utilizando la clase ManagedOnlineDeployment.
En este ejemplo, los archivos que descargó de la página Modelos de AutoML se encuentran en el directorio src. Puede modificar los parámetros en el código para adaptarlos a su situación.
Parámetro
Cambiar a
model:path
Ruta de acceso al archivo model.pkl que descargó.
code_configuration:code:path
El directorio en el que ha colocado el archivo de puntuación.
code_configuration:scoring_script
Nombre del archivo de puntuación de Python (scoring_file_<VERSION>.py).
environment:conda_file
Dirección URL del archivo de entorno de Conda descargado (conda_env_<VERSION>.yml).
Cree la implementación.
Mediante MLClient creado anteriormente, cree la implementación en el área de trabajo. Este comando comienza a crear la implementación. Devuelve una respuesta de confirmación mientras continúa la creación de la implementación.