Cómo implementar canalizaciones con puntos de conexión por lotes
SE APLICA A:Extensión ML de la CLI de Azure v2 (actual)SDK de Python azure-ai-ml v2 (actual)
Puedes implementar componentes de canalización en un punto de conexión por lotes, lo que proporciona una manera conveniente de ponerlos en funcionamiento en Azure Machine Learning. En este artículo, aprenderás a crear una implementación por lotes que contenga una canalización sencilla. Aprenderá lo siguiente:
- Crear y registrar un componente de canalización
- Crear un punto de conexión por lotes e implementación de un componente de canalización
- Prueba de la implementación
Acerca de este ejemplo
En este ejemplo, vamos a implementar un componente de canalización que consiste en un trabajo de comando simple que imprime "¡Hola mundo!". Este componente no requiere entradas ni salidas y es el escenario de implementación de canalización más sencillo.
El ejemplo de este artículo se basa en ejemplos de código contenidos en el repositorio azureml-examples. Para ejecutar los comandos localmente sin tener que copiar o pegar YAML y otros archivos, use los siguientes comandos para clonar el repositorio e ir a la carpeta del lenguaje de codificación:
git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli
Los archivos de este ejemplo están en:
cd endpoints/batch/deploy-pipelines/hello-batch
Sigue estos pasos en los cuadernos de Jupyter Notebooks
Puedes seguir la versión SDK de Python de este ejemplo abriendo el cuaderno sdk-deploy-and-test.ipynb en el repositorio clonado.
Requisitos previos
Suscripción a Azure. Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
Un área de trabajo de Azure Machine Learning. Para crear un área de trabajo, vea Administración de áreas de trabajo de Azure Machine Learning.
Los siguientes permisos en el área de trabajo de Azure Machine Learning:
- Para crear o administrar puntos de conexión e implementaciones: utilice un rol de Propietario, Colaborador o personalizado al que se le hayan asignado los permisos
Microsoft.MachineLearningServices/workspaces/batchEndpoints/*
. - Para crear implementaciones de Azure Resource Manager en el grupo de recursos del área de trabajo: use un rol de Propietario, Colaborador o personalizado que tenga asignado el permiso
Microsoft.Resources/deployments/write
en el grupo de recursos donde se implementa el área de trabajo.
- Para crear o administrar puntos de conexión e implementaciones: utilice un rol de Propietario, Colaborador o personalizado al que se le hayan asignado los permisos
La CLI de Azure Machine Learning o el SDK de Azure Machine Learning para Python:
Ejecute el siguiente comando para instalar la CLI de Azure y la extensión
ml
para Azure Machine Learning:az extension add -n ml
Las implementaciones de componentes de canalización para puntos de conexión por lotes se introdujeron en la versión 2.7 de la extensión
ml
para la CLI de Azure. Use el comandoaz extension update --name ml
para obtener la versión más reciente.
Conexión con su área de trabajo
El área de trabajo es el recurso de nivel superior de Azure Machine Learning. Proporciona un lugar centralizado para trabajar con todos los artefactos que cree al usar Azure Machine Learning. En esta sección, se conectará al área de trabajo donde realizará las tareas de implementación.
En el siguiente comando, escriba el id. de suscripción, el nombre del área de trabajo, el nombre de grupo de recursos y la ubicación:
az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
Crear el componente de canalización
Los puntos de conexión de Batch pueden implementar modelos o componentes de canalización. Los componentes de canalización son reutilizables y puedes optimizar tu práctica de MLOps mediante el uso de registros compartidos para mover estos componentes de un área de trabajo a otro.
El componente de canalización en este ejemplo contiene un solo paso que solo imprime un mensaje de "hola mundo" en los registros. No requiere entradas ni salidas.
El archivo hello-component/hello.yml
contiene la configuración del trabajo de canalización:
hello-component/hello.yml
$schema: https://azuremlschemas.azureedge.net/latest/pipelineComponent.schema.json
name: hello_batch
display_name: Hello Batch component
version: 1
type: pipeline
jobs:
main_job:
type: command
component:
code: src
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
command: >-
python hello.py
Registra el componente:
az ml component create -f hello-component/hello.yml
Creación de un punto de conexión por lotes
Proporcione un nombre para el punto de conexión. El nombre de un punto de conexión por lotes debe ser único en cada región, ya que el nombre se usa para construir el URI de invocación. Para garantizar la unicidad, anexa los caracteres finales al nombre especificado en el código siguiente.
ENDPOINT_NAME="hello-batch"
Configuración del punto de conexión:
El archivo
endpoint.yml
contiene la configuración del punto de conexión.endpoint.yml
$schema: https://azuremlschemas.azureedge.net/latest/batchEndpoint.schema.json name: hello-batch description: A hello world endpoint for component deployments. auth_mode: aad_token
Creación del punto de conexión:
az ml batch-endpoint create --name $ENDPOINT_NAME -f endpoint.yml
Consulta del URI del punto de conexión:
az ml batch-endpoint show --name $ENDPOINT_NAME
Implementar el componente de canalización
Para implementar el componente de canalización, tendremos que crear una implementación por lotes. Una implementación es un conjunto de recursos necesarios para hospedar el recurso que realiza el trabajo real.
Crear un clúster de proceso. Las implementaciones y puntos de conexión por lotes se ejecutan en clústeres de computación. Pueden ejecutarse en cualquier clúster de proceso de Azure Machine Learning que ya exista en el área de trabajo. Por lo tanto, varias implementaciones por lotes pueden compartir la misma infraestructura de proceso. En este ejemplo, trabajaremos en un clúster de proceso de Azure Machine Learning denominado
batch-cluster
. Verifiquemos que el cálculo exista en el área de trabajo o creémoslo de otra manera.az ml compute create -n batch-cluster --type amlcompute --min-instances 0 --max-instances 5
Configurar la implementación:
El archivo
deployment.yml
contiene la configuración de la implementación. Puede comprobar el esquema YAML del punto de conexión por lotes completo para obtener más propiedades.deployment.yml
$schema: https://azuremlschemas.azureedge.net/latest/pipelineComponentBatchDeployment.schema.json name: hello-batch-dpl endpoint_name: hello-pipeline-batch type: pipeline component: azureml:hello_batch@latest settings: default_compute: batch-cluster
Creación de la implementación:
Ejecute el código siguiente para crear una implementación por lotes en el punto de conexión por lotes y establézcala como la implementación predeterminada.
az ml batch-deployment create --endpoint $ENDPOINT_NAME -f deployment.yml --set-default
Sugerencia
Observa el uso de la marca
--set-default
para indicar que esta nueva implementación es ahora el valor predeterminado.La implementación está lista para su uso.
Prueba de la implementación
Una vez creada la implementación, está lista para recibir trabajos. Puedes invocar la implementación determinada de la siguiente manera:
JOB_NAME=$(az ml batch-endpoint invoke -n $ENDPOINT_NAME --query name -o tsv)
Sugerencia
En este ejemplo, la canalización no tiene entradas ni salidas. Sin embargo, si el componente de canalización requiere algunos, se pueden indicar en el momento de la invocación. Para obtener información sobre cómo indicar entradas y salidas, consulte Creación de trabajos y datos de entrada para puntos de conexión por lotes o consulte el tutorial Cómo implementar una canalización para realizar puntuaciones por lotes con preprocesamiento (versión preliminar).
Puedes supervisar el progreso de la presentación y transmitir los registros mediante:
az ml job stream -n $JOB_NAME
Limpieza de recursos
Una vez que hayas terminado, elimina los recursos asociados del área de trabajo:
Ejecuta el código siguiente para eliminar el punto de conexión por lotes y la implementación subyacente. --yes
se usa para confirmar la eliminación.
az ml batch-endpoint delete -n $ENDPOINT_NAME --yes
(Opcional) elimina el proceso, a menos que planees reutilizar el clúster de proceso con implementaciones posteriores.
az ml compute delete -n batch-cluster
Pasos siguientes
- Cómo implementar una canalización de entrenamiento con puntos de conexión por lotes
- Cómo implementar una canalización para realizar puntuaciones por lotes con preprocesamiento
- Crear puntos de conexión por lotes a partir de trabajos de canalización
- Creación de trabajos y datos de entrada para puntos de conexión por lotes
- Solución de problemas de puntos de conexión por lotes