你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

将现有管道作业部署到批处理终结点

适用范围:Azure CLI ml 扩展 v2(当前版本)Python SDK azure-ai-ml v2(当前版本)

使用批处理终结点可以部署管道组件,从而提供了一种在 Azure 机器学习中操作管道的便捷方法。 批处理终结点接受用于部署的管道组件。 但如果已有成功运行的管道作业,Azure 机器学习可以接受该作业作为批处理终结点的输入,并自动创建管道组件。 在本文中,你将了解如何使用现有管道作业作为批处理部署的输入。

你将了解以下内容:

  • 运行并创建要部署的管道作业
  • 从现有作业创建批处理部署
  • 测试部署

关于此示例

在此示例中,我们将部署一个管道,其中包含一个输出“hello world!”的简单命令作业。 我们会指示现有管道作业以用于部署,而不是在部署前注册管道组件。 然后,Azure 机器学习将自动创建管道组件,并将其部署为批处理终结点管道组件部署。

本文中的示例基于 azureml-examples 存储库中包含的代码示例。 要在无需复制/粘贴 YAML 和其他文件的情况下在本地运行命令,请先克隆存储库,然后将目录更改为以下文件夹:

git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli

此示例的文件位于以下位置:

cd endpoints/batch/deploy-pipelines/hello-batch

先决条件

在按照本文中的步骤操作之前,请确保满足以下先决条件:

  • Azure 订阅。 如果没有 Azure 订阅,请在开始操作前先创建一个免费帐户。 试用免费版或付费版 Azure 机器学习

  • 一个 Azure 机器学习工作区。 如果你没有,请按照管理 Azure 机器学习工作区一文中的步骤创建一个。

  • 确保你在工作区中具有以下权限:

    • 创建或管理批量终结点和部署:使用允许 Microsoft.MachineLearningServices/workspaces/batchEndpoints/* 的所有者、参与者或自定义角色。

    • 在工作区资源组中创建 ARM 部署:在部署工作区的资源组中使用允许 Microsoft.Resources/deployments/write 的所有者角色、参与者角色或自定义角色。

  • 需要安装以下软件才能使用 Azure 机器学习:

    Azure CLIml适用于 Azure 机器学习的扩展

    az extension add -n ml
    

    注意

    Azure CLI 的 ml 扩展版本 2.7 中引入了 Batch 终结点的管道组件部署。 使用 az extension update --name ml 获取它的上一个版本。

连接到工作区

工作区是 Azure 机器学习的顶级资源,为使用 Azure 机器学习时创建的所有项目提供了一个集中的处理位置。 在本部分,我们将连接到要在其中执行部署任务的工作区。

在以下代码中传入订阅 ID、工作区、位置和资源组的值:

az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>

运行要部署的管道作业

在本部分中,我们将首先运行管道作业:

以下 pipeline-job.yml 文件包含了管道作业的配置:

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

创建管道作业:

JOB_NAME=$(az ml job create -f pipeline-job.yml --query name -o tsv)

创建批处理终结点

在部署管道作业之前,需要部署批处理终结点来托管部署。

  1. 为终结点提供名称。 批处理终结点的名称在每个区域中必须是唯一的,因为该名称将用于构造调用 URI。 为了确保唯一性,请在以下代码中指定的名称后面追加任何尾随字符。

    ENDPOINT_NAME="hello-batch"
    
  2. 配置终结点:

    endpoint.yml 文件包含了终结点的配置。

    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. 创建终结点:

    az ml batch-endpoint create --name $ENDPOINT_NAME  -f endpoint.yml
    
  4. 查询终结点 URI:

    az ml batch-endpoint show --name $ENDPOINT_NAME
    

部署管道作业

要部署管道组件,必须从现有作业创建批处理部署。

  1. 我们需要告知 Azure 机器学习要部署的作业的名称。 在本例中,该作业是在以下变量中指示的:

    echo $JOB_NAME
    
  2. 配置部署。

    deployment-from-job.yml 文件包含部署的配置。 请注意,我们如何使用密钥 job_definition(而不是 component)来指示此部署是从管道作业创建的:

    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
    

    提示

    此配置假定你有一个名为 batch-cluster 的计算群集。 可以将此值替换为你的群集的名称。

  3. 创建部署:

    运行以下代码以在批处理终结点下创建一个批处理部署,并将其设置为默认部署。

    az ml batch-deployment create --endpoint $ENDPOINT_NAME --set job_definition=azureml:$JOB_NAME -f deployment-from-job.yml
    

    提示

    请注意 --set job_definition=azureml:$JOB_NAME 的使用。 由于作业名称是唯一的,因此在工作区中运行改作业时,此处使用命令 --set 来更改作业的名称。

  4. 部署已就绪,可供使用。

测试部署

创建部署后,即可接收作业。 可以按如下所示调用默认部署:

JOB_NAME=$(az ml batch-endpoint invoke -n $ENDPOINT_NAME --query name -o tsv)

可以使用以下方法监视演示进度并流式传输日志:

az ml job stream -n $JOB_NAME

清理资源

完成后,从工作区中删除关联的资源:

运行以下代码以删除批处理终结点及其基础部署。 --yes 用于确认删除。

az ml batch-endpoint delete -n $ENDPOINT_NAME --yes

后续步骤