Compartir a través de


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.
  • 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 comando az 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.

  1. 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"
    
  2. 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
    
  3. Creación del punto de conexión:

    az ml batch-endpoint create --name $ENDPOINT_NAME  -f endpoint.yml
    
  4. 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.

  1. 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
    
  2. Configure la implementación.

    El archivo deployment-from-job.yml contiene la configuración de la implementación. Observe cómo se usa la clave job_definition en lugar de component 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.

  3. 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.

  4. 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

Pasos siguientes