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

如何使用批处理终结点部署管道

适用范围:Azure CLI ml 扩展 v2(最新版)Python SDK azure-ai-ml v2(最新版)

可以在批处理终结点下部署管道组件,从而提供一种在 Azure 机器学习中操作这些组件的便捷方法。 本文介绍如何创建包含简单管道的批处理部署。 你将了解以下内容:

  • 创建并注册管道组件
  • 创建批处理终结点并部署管道组件
  • 测试部署

关于此示例

在此示例中,我们将部署一个管道组件,该组件包含一个打印“hello world!”的简单命令作业。 此组件不需要任何输入或输出,是最简单的管道部署方案。

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

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

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

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

在 Jupyter Notebook 中继续操作

可以通过在克隆的存储库中打开 sdk-deploy-and-test.ipynb 笔记本来遵循此示例的 Python SDK 版本。

先决条件

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

  • 一个 Azure 机器学习工作区。 若要创建工作区,请参阅管理 Azure 机器学习工作区

  • 确保你在机器学习工作区中拥有以下权限:

    • 创建或管理批处理终结点和部署:使用允许 Microsoft.MachineLearningServices/workspaces/batchEndpoints/* 的所有者、参与者或自定义角色。
    • 在工作区资源组中创建 Azure 资源管理器部署:在部署工作区的资源组中使用允许 Microsoft.Resources/deployments/write 的所有者、参与者或自定义角色。
  • 安装以下软件以使用机器学习:

    运行以下命令,以安装 Azure CLIAzure 机器学习ml 扩展:

    az extension add -n ml
    

    Azure CLI 的 ml 扩展版本 2.7 中引入了批处理终结点的管道组件部署。 使用 az extension update --name ml 命令获取最新版本。


连接到工作区

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

在以下命令中,请输入你的订阅 ID、工作区、位置和资源组的值:

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

创建管道组件

批处理终结点可以部署模型或管道组件。 管道组件可重复使用,可以使用共享注册表将这些组件从一个工作区移动到另一个工作区,从而简化 MLOps 实践。

此示例中的管道组件包含一个步骤,该步骤仅在日志中打印“hello world”消息。 它不需要任何输入或输出。

hello-component/hello.yml 文件包含管道作业的配置:

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

注册组件:

az ml component create -f hello-component/hello.yml

创建批处理终结点

  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 机器学习计算群集上。 因此,多个批处理部署可以共享相同的计算基础结构。 在此示例中,我们将在名为 batch-cluster 的 Azure 机器学习计算群集上工作。 让我们验证工作区上是否存在计算,如果不存在,则创建计算。

    az ml compute create -n batch-cluster --type amlcompute --min-instances 0 --max-instances 5
    
  2. 配置部署:

    deployment.yml 文件包含部署的配置。 可以检查额外属性中的完整批处理终结点 YAML 机构

    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
    
  3. 创建部署:

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

    az ml batch-deployment create --endpoint $ENDPOINT_NAME -f deployment.yml --set-default
    

    提示

    请注意,我们使用 --set-default 标志来指示此新部署现在是默认部署。

  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

(可选)除非计划在以后的部署中重用计算群集,否则请删除计算。

az ml compute delete -n batch-cluster

后续步骤