教程:设计器 - 部署机器学习模型

使用设计器部署机器学习模型来预测汽车的价格。 本教程是由两个部分构成的系列教程的第二部分。

本教程的第一部分,你训练了有关汽车价格的线性回归模型。 在第二部分,你将部署该模型供其他人使用。 在本教程中,你将了解:

  • 创建实时推理管道。
  • 创建推理群集。
  • 部署实时终结点。
  • 测试实时终结点。

先决条件

完成教程的第一部分,了解如何在设计器中训练机器学习模型并为其评分。

重要

如果看不到本文档中提到的图形元素(例如工作室或设计器中的按钮),则你可能没有适当级别的工作区权限。 请与 Azure 订阅管理员联系,验证是否已向你授予正确级别的访问权限。 有关详细信息,请参阅管理用户和角色

创建实时推理管道

若要部署管道,必须先将训练管道转换为实时推理管道。 此过程会删除训练组件,并添加 Web 服务输入和输出来处理请求。

注意

创建推理管道仅支持仅包含设计器内置组件的训练管道,并且必须具有一个组件(如“训练模型”)来输出已训练的模型。

创建实时推理管道

  1. 在管道作业详细信息页的管道画布上方,选择“创建推理管道”>“实时推理管道”。

    Screenshot of create inference pipeline in pipeline job detail page.

    新管道现在应如下所示:

    Screenshot showing the expected configuration of the pipeline after preparing it for deployment.

    选择“创建推理管道”时,会发生一些事情:

    • 训练的模型在组件调色板中存储为“数据集”组件。 可以在“我的数据集”下找到它。
    • 将删除“训练模型”和“拆分数据”等训练组件 。
    • 保存的训练模型已添加回管道中。
    • 添加了“Web 服务输入”和“Web 服务输出”组件 。 这些组件显示用户数据进入管道的位置,以及返回数据的位置。

    注意

    默认情况下,“Web 服务输入”会要求数据架构与同它连接到同一下游端口的组件输出数据的数据架构相同。 在此示例中,“Web 服务输入”和“汽车价格数据(原始)”连接到同一下游组件,因此“Web 服务输入”需要与“汽车价格数据(原始)”相同的数据架构,并且架构中包括目标变量列 price 。 但是,通常情况下,为数据评分时,你不知道目标变量值。 对于这种情况,你可以使用“选择数据集中的列”组件删除推理管道中的目标变量列。 确保“选择数据集中的列”的输出(在删除目标变量列后)连接到与“Web 服务输入”组件的输出相同的端口。

  2. 选择“提交”,并使用在第一部分中使用的相同计算目标和试验。

    如果这是第一个作业,则管道可能需要长达 20 分钟的时间才能完成运行。 默认计算设置中的最小节点大小为 0,这意味着设计器必须在空闲后分配资源。 重复的管道作业花费的时间会更少,因为计算资源已分配。 此外,设计器还对每个组件使用缓存的结果,以便进一步提高效率。

  3. 在左窗格中选择“作业详细信息”链接,转到实时推理管道作业详细信息。

  4. 在作业详细信息页中选择“部署”。

    Screenshot showing deploying in job detail page.

创建推理群集

在显示的对话框中,可以从任何现有的 Azure Kubernetes 服务 (AKS) 群集中进行选择,以便部署模型。 如果没有 AKS 群集,可通过以下步骤创建一个。

  1. 在显示的对话框中选择“计算”,转到“计算”页。

  2. 在导航功能区中,选择“推理群集”>“+ 新建” 。

    Screenshot showing how to get to the new inference cluster pane.

  3. 在推理群集窗格中,配置新的 Kubernetes 服务。

  4. 输入“aks-compute”作为“计算名称”。

  5. 对于“区域”,选择可用的邻近区域。

  6. 选择“创建”。

    注意

    创建新的 AKS 服务大约需要 15 分钟。 可在“推理群集”页上查看预配状态。

部署实时终结点

在 AKS 服务完成预配以后,请返回到实时推理管道,以便完成部署。

  1. 选择画布上面的“部署”。

  2. 选择“部署新的实时终结点”。

  3. 选择已创建的 AKS 群集。

    Screenshot showing how to set up a new real-time endpoint.

    还可以更改实时终结点的“高级”设置。

    高级设置 说明
    启用 Application Insights 诊断和数据收集 是否启用 Azure Application Insights 从部署的终结点收集数据。
    默认值:false。
    评分超时 对 Web 服务的评分调用强制执行的超时值(以毫秒为单位)。
    默认值:60000。
    已启用自动缩放 是否为 Web 服务启用自动缩放。
    默认值:true。
    副本数下限 自动缩放此 Web 服务时可使用的容器的最小数目。
    默认值:1。
    副本数上限 自动缩放此 Web 服务时可使用的容器的最大数目。
    默认值:10。
    目标利用率 自动缩放程序应尝试维持的此 Web 服务的目标利用率(以低于 100 的百分比表示)。
    默认值:70.
    刷新周期 自动缩放程序尝试缩放此 Web 服务的频率(以秒为单位)。
    默认值:1。
    CPU 保留容量 要分配给此 Web 服务的 CPU 核心数。
    默认值:0.1。
    内存保留容量 为此 Web 服务分配的内存量 (GB)。
    默认值:0.5。
  4. 选择“部署”。

    部署完成后,将显示通知中心发送的成功通知。 这可能需要几分钟时间。

    Screenshot showing deployment notification.

提示

如果在“实时终结点设置”框中为“计算类型”选择了“Azure 容器实例”,则还可以部署到“Azure 容器实例”(ACI) 。 Azure 容器实例用于测试或开发。 对于需要小于 48 GB RAM 的基于 CPU 的低缩放工作负载,请使用 ACI。

测试实时终结点

部署完成后,可通过转到“终结点”页来查看实时终结点。

  1. 在“终结点”页上,选择已部署的终结点。

    在“详细信息”选项卡中,可以查看更多信息,例如 REST URI、Swagger 定义、状态和标记。

    在“使用”选项卡中,可以找到使用代码示例和安全密钥,以及设置身份验证方法。

    在“部署日志”选项卡中,你可以找到实时终结点的详细部署日志。

  2. 若要测试终结点,请转到“测试”选项卡。可在此输入测试数据并选择“测试”以验证终结点的输出。

更新实时终结点

可以使用设计器中训练的新模型更新联机终结点。 在联机终结点详细信息页上,找到以前的训练管道作业和推理管道作业。

  1. 可以直接在设计器主页中查找和修改训练管道草稿。

    或者,可以打开训练管道作业链接,然后将其克隆到新的管道草稿中继续编辑。

    Screenshot showing training job link in endpoint detail page.

  2. 提交修改后的训练管道后,请转到作业详细信息页。

  3. 作业完成后,右键单击“训练模型”,然后选择“注册数据”。

    Screenshot showing register trained model as dataset.

    输入名称,然后选择“文件类型”。

    Screenshot of register as a data asset with new data asset selected.

  4. 成功注册数据集后,打开推理管道草稿,或将以前的推理管道作业克隆到新的草稿中。 在推理管道草案草稿中,使用新注册的数据集替换之前显示为 MD-XXXX 节点的训练模型,该节点连接到“评分模型”组件。

    Screenshot showing how to modify inference pipeline.

  5. 如果需要更新训练管道中的数据预处理部分,并且想要将其更新到推理管道中,则处理过程与上述步骤类似。

    只需要将转换组件的转换输出注册为数据集。

    然后,手动将推理管道中的 TD 组件替换为已注册的数据集。

    Screenshot showing how to replace transformation component.

  6. 使用新训练的模型或转换修改推理管道后,请提交它。 作业完成后,将其部署到之前部署的现有联机终结点。

    Screenshot showing how to replace existing real-time endpoint.

限制

  • 由于数据存储访问限制,如果你的推理管道包含“导入数据”或“导出数据”组件,它们将在部署到实时终结点时自动删除。

  • 如果你有实时推理管道中的数据集,想要将其部署到实时终结点,则当前此流仅支持从 Blob 数据存储注册的数据集。 如果要使用其他类型的数据存储中的数据集,可以使用“选择列”和选择所有列时的设置与初始数据集进行连接,将“选择列”的输出注册为文件数据集,然后将实时推理管道中的初始数据集替换为这个新注册的数据集。

  • 如果推理图包含“手动输入数据”组件,该组件未连接到与“Web 服务输入”组件相同的端口,则在 HTTP 调用处理期间不会执行“手动输入数据”组件。 解决方法是将该“手动输入数据”组件的输出注册为数据集,然后在推理管道草稿中将“手动输入数据”组件替换为已注册的数据集。

    Screenshot showing how to modify inference pipeline containing enter data manually component.

清理资源

重要

可以使用你创建的、用作其他 Azure 机器学习教程和操作指南文章的先决条件的资源。

删除所有内容

如果你不打算使用所创建的任何内容,请删除整个资源组,以免产生任何费用。

  1. 在 Azure 门户的窗口左侧选择“资源组”

    Delete resource group in the Azure portal

  2. 在列表中选择你创建的资源组。

  3. 选择“删除资源组”。

删除该资源组也会删除在设计器中创建的所有资源。

删除各项资产

在创建试验的设计器中删除各个资产,方法是将其选中,然后选择“删除”按钮。

此处创建的计算目标在未使用时,会自动缩减到零个节点。 此操作旨在最大程度地减少费用。 若要删除计算目标,请执行以下步骤:

Delete assets

可以通过选择每个数据集并选择“注销”,从工作区中注销数据集。

Unregister dataset

若要删除数据集,请使用 Azure 门户或 Azure 存储资源管理器访问存储帐户,然后手动删除这些资产。

后续步骤

本教程介绍了如何在设计器中创建、部署和使用机器学习模型的重要步骤。 如果要详细了解如何使用设计器,请参阅以下链接: