Implementación de trabajos de canalización existentes en 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)
Los puntos de conexión por lotes permiten implementar componentes de canalización, lo que proporciona una manera cómoda de hacer operativas canalizaciones en Azure Machine Learning. Los puntos de conexión por lotes aceptan componentes de canalización para la implementación. Sin embargo, si ya tiene un trabajo de canalización que se ejecuta correctamente, Azure Machine Learning puede aceptar ese trabajo como entrada en el punto de conexión por lotes y crear automáticamente el componente de canalización. En este artículo, aprenderá a usar el trabajo de canalización existente como entrada para la implementación por lotes.
Aprenderá lo siguiente:
- Ejecución y creación del trabajo de canalización que desea implementar
- Creación de una implementación por lotes a partir del trabajo existente
- Prueba de la implementación
Acerca de este ejemplo
En este ejemplo, vamos a implementar una canalización que consta de un trabajo de comando sencillo que imprime "Hola, mundo". En lugar de registrar el componente de canalización antes de la implementación, indicamos un trabajo de canalización existente que se va a usar para la implementación. Después, Azure Machine Learning creará el componente de canalización automáticamente y lo implementará como una implementación de componentes de canalización de punto de conexión por lotes.
El ejemplo de este artículo se basa en ejemplos de código incluidos en el repositorio azureml-examples. Para ejecutar los comandos de forma local sin tener que copiar/pegar YAML y otros archivos, primero clona el repositorio y luego cambia los directorios a la carpeta:
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
Requisitos previos
Suscripción a Azure. Si no tiene una suscripción de Azure, cree una cuenta gratuita antes de empezar. Pruebe la versión gratuita o de pago de Azure Machine Learning.
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.
Asegúrese de que dispone de los siguientes permisos en el área de trabajo de Machine Learning:
- Crear o administrar implementaciones y puntos de conexión por lotes: use los roles de propietario, colaborador o un rol personalizado que permita
Microsoft.MachineLearningServices/workspaces/batchEndpoints/*
. - Creación de implementaciones de Azure Resource Manager en el grupo de recursos del área de trabajo: use un rol de propietario, colaborador o personalizado que permita
Microsoft.Resources/deployments/write
en el grupo de recursos donde se implementa el área de trabajo.
- Crear o administrar implementaciones y puntos de conexión por lotes: use los roles de propietario, colaborador o un rol personalizado que permita
Instale el siguiente software para trabajar con Machine Learning:
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 Machine Learning. Proporciona un lugar centralizado para trabajar con todos los artefactos que cree al usar Machine Learning. En esta sección, se conectará al área de trabajo donde realizará las tareas de implementación.
En el siguiente comando, escriba los valores de id. de suscripción, área de trabajo, ubicación y grupo de recursos:
az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
Ejecución del trabajo de canalización que desea implementar
En esta sección, comenzaremos ejecutando un trabajo de canalización:
El siguiente archivo pipeline-job.yml
contiene la configuración del trabajo de canalización:
pipeline-job.yml
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
experiment_name: hello-pipeline-batch
display_name: hello-pipeline-batch-job
description: This job demonstrates how to run the a pipeline component in a pipeline job. You can use this example to test a component in an standalone job before deploying it in an endpoint.
compute: batch-cluster
component: hello-component/hello.yml
Cree el trabajo de canalización:
JOB_NAME=$(az ml job create -f pipeline-job.yml --query name -o tsv)
Creación de un punto de conexión por lotes
Antes de implementar el trabajo de canalización, es necesario implementar un punto de conexión por lotes para hospedar la implementación.
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
Implementación del trabajo de canalización
Para implementar el componente de canalización, tenemos que crear una implementación por lotes a partir del trabajo existente.
Es necesario indicar a Azure Machine Learning el nombre del trabajo que queremos implementar. En nuestro caso, ese trabajo se indica en la variable siguiente:
echo $JOB_NAME
Configure la implementación.
El archivo
deployment-from-job.yml
contiene la configuración de la implementación. Observe cómo se usa la clavejob_definition
en lugar decomponent
para indicar que esta implementación se crea a partir de un trabajo de canalización:deployment-from-job.yml
$schema: https://azuremlschemas.azureedge.net/latest/pipelineComponentBatchDeployment.schema.json name: hello-batch-from-job endpoint_name: hello-pipeline-batch type: pipeline job_definition: azureml:job_name_placeholder settings: continue_on_step_failure: false default_compute: batch-cluster
Sugerencia
Esta configuración supone que tiene un clúster de proceso denominado
batch-cluster
. Puede reemplazar este valor por el nombre de su clúster.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 --set job_definition=azureml:$JOB_NAME -f deployment-from-job.yml
Sugerencia
Observe también el uso de
--set job_definition=azureml:$JOB_NAME
. Dado que los nombres de los trabajos son únicos, el comando--set
se usa aquí para cambiar el nombre del trabajo al ejecutarlo en el área de trabajo.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)
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