什么是 Azure 机器学习终结点?

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

使用 Azure 机器学习终结点可以简化实时部署和批量推理部署的模型部署。 终结点提供了一个统一的接口,以用于跨计算类型调用和管理模型部署。

本文介绍:

  • 终结点
  • 部署
  • 托管联机终结点
  • Kubernetes 联机终结点
  • 批量推理终结点

什么是终结点和部署?

训练机器学习模型后,需要部署该模型,以便其他人可以使用它来执行推理。 在 Azure 机器学习中,可以使用终结点和部署来执行此操作。

终结点是一个 HTTPS 终结点,客户端可以调用它来接收已训练模型的推理(评分)输出。 提供以下功能:

  • 使用基于“密钥和令牌”的身份验证进行身份验证
  • SSL 终止
  • 稳定的评分 URI (endpoint-name.region.inference.studio.ml.azure.cn)

部署是一组资源,用于承载执行实际推理的模型。

一个终结点可以包含多个部署。 终结点和部署是显示在 Azure 门户中的独立 Azure 资源管理器资源。

Azure 机器学习使用终结点和部署的概念实现不同类型的终结点:联机终结点批处理终结点

多个开发人员界面

使用多个开发人员工具来创建和管理批处理终结点与联机终结点:

  • Azure CLI
  • Azure 资源管理器/REST API
  • Azure 机器学习工作室 Web 门户
  • Azure 门户(IT/管理员)
  • 使用 Azure CLI 接口和 REST/ARM 接口支持 CI/CD MLOps 管道

什么是联机终结点?

联机终结点是用于联机(实时)推理的终结点。 与批处理终结点相比,联机终结点包含已准备好从客户端接收数据并可实时发回响应的部署 。

下图显示了具有两个部署(“蓝”和“绿”)的联机终结点。 蓝部署使用具有 CPU SKU 的 VM,并运行模型 v1。 绿部署使用具有 GPU SKU 的 VM,并使用模型 v2。 终结点配置为将 90% 的传入流量路由到蓝部署,而绿部署则接收剩余的 10% 流量。

显示将流量拆分为两个部署的终结点的示意图。

联机部署要求

若要创建联机终结点,需要指定以下元素:

  • 模型文件(或指定工作区中已注册的模型)
  • 评分脚本 - 执行评分/推理所需的代码
  • 环境 - 包含 Conda 依赖项的 Docker 映像,或 Dockerfile
  • 计算实例和缩放设置

了解如何从 CLI工作室 Web 门户部署联机终结点。

在本地测试和部署以加快调试速度

在本地部署以测试终结点,而无需部署到云。 Azure 机器学习创建一个模拟 Azure ML 映像的本地 Docker 映像。 Azure 机器学习将在本地生成并运行部署,并缓存映像以快速迭代。

本机蓝/绿部署

如前所述,一个终结点可以包含多个部署。 联机终结点可以执行负载均衡,以将任何百分比的流量分配给每个部署。

使用流量分配可以通过在不同实例之间均衡请求来执行安全推出蓝/绿部署。

提示

请求可以通过包含 azureml-model-deployment HTTP 头来绕过配置的流量负载均衡。 请将头值设置为请求要路由到的部署的名称。

此屏幕截图显示了用于设置部署之间的流量分配的滑块界面。

显示将流量拆分为两个部署的终结点的示意图。

到一个部署的流量也可以镜像(复制)到另一个部署。 要在不影响实时客户端的情况下测试响应延迟或错误条件等情况时,镜像非常有用。 例如,蓝/绿部署,其中 100% 的流量路由到蓝色,10% 的流量镜像到绿色部署。 通过镜像,不会将发往绿色部署的流量的结果返回到客户端,但会收集指标和日志。 镜像流量功能是一项预览版功能。

此图显示了将流量镜像到部署的终结点。

了解如何安全推出到联机终结点

Application Insights 集成

所有联机终结点均与 Application Insights 集成,以监视 SLA 并诊断问题。

但是,托管联机终结点还包括与 Azure 日志和 Azure 指标的现成集成。

安全性

  • 身份验证:密钥和 Azure ML 令牌
  • 托管标识:用户分配的和系统分配的
  • 终结点调用默认使用 SSL

自动缩放

自动缩放会自动运行适量的资源来处理应用程序的负载。 托管终结点支持通过与 Azure Monitor 自动缩放功能的集成进行自动缩放。 可以配置基于指标的缩放(例如,CPU 利用率 > 70%)、基于计划的缩放(例如,针对业务高峰期的缩放规则)或两者的组合。

此屏幕截图显示了自动缩放根据规则在最小实例和最大实例之间灵活提供。

Visual Studio Code 调试

在 Visual Studio Code 中能够以交互方式调试终结点。

VSCode 中的终结点调试的屏幕截图。

专用终结点支持(预览版)

(可选)可以使用专用终结点来保护与托管联机终结点的通信。 此功能目前处于预览状态。

重要

此功能目前处于公开预览状态。 此预览版在提供时没有附带服务级别协议,不建议将其用于生产工作负荷。 某些功能可能不受支持或者受限。 有关详细信息,请参阅适用于 Azure 预览版的补充使用条款

可以单独为入站评分请求以及与工作区和其他服务的出站通信配置安全性。 入站通信使用 Azure 机器学习工作区的专用终结点。 出站通信使用为每个部署创建的专用终结点。

有关详细信息,请参阅保护联机终结点

托管联机终结点与 Kubernetes 联机终结点的比较

有两种类型的联机终结点:托管联机终结点和 Kubernetes 联机终结点。

托管联机终结点有助于以统包方式部署 ML 模型。 托管联机终结点在 Azure 中以一种可缩放的、完全托管的方式使用功能强大的 CPU 和 GPU 计算机。 托管联机终结点负责处理、缩放、保护和监视你的模型,使你没有设置和管理底层基础结构的开销。 本文档中的主要示例使用托管联机终结点进行部署。

使用 Kubernetes 联机终结点,你可以在完全配置和托管的 Kubernetes 群集(任意位置)(使用 CPU 或 GPU)上部署模型并提供联机终结点。

下表重点介绍托管联机终结点与 Kubernetes 联机终结点之间的主要差异。

托管联机终结点 Kubernetes 联机终结点
建议的用户 需要托管模型部署和增强式 MLOps 体验的用户 首选 Kubernetes 并可自行管理基础结构要求的用户
基础结构管理 托管计算预配、缩放、主机 OS 映像更新和安全强化 用户责任
计算类型 托管 (AmlCompute) Kubernetes 群集 (Kubernetes)
现成的监视功能 Azure 监视
(包括延迟和吞吐量等关键指标)
支持
现成的日志记录 终结点级别的 Azure 日志和 Log Analytics 不支持
Application Insights 支持 支持
托管的标识 支持 支持
虚拟网络 (VNET) 支持(预览版) 支持
查看成本 终结点和部署级别 群集级别
镜像流量 支持 不支持
无代码部署 支持(MLflowTriton 模型) 支持(MLflowTriton 模型)

托管联机终结点

托管联机终结点有助于简化部署过程。 与 Kubernetes 联机终结点相比,托管联机终结点提供以下优势:

  • 托管基础结构

    • 自动预配计算并托管模型(你只需指定 VM 类型和缩放设置)
    • 自动更新和修补基础主机 OS 映像
    • 发生系统故障时自动恢复节点
  • 监视和日志

    显示 Azure Monitor 终结点延迟图的屏幕截图。

  • 查看成本

    终结点和部署的成本图的屏幕截图。

    注意

    托管联机终结点基于 Azure 机器学习计算。 使用托管联机终结点时,需支付计算和网络费用。 没有任何额外费用。

    如果使用虚拟网络并保护来自托管联机终结点的出站流量(流出量),则会产生额外费用。 对于流出量,将为托管联机终结点的每个部署创建三个专用终结点。 这些用于与默认存储帐户、Azure 容器注册表和工作区进行通信。 可能会收取额外的网络费用。 有关定价的详细信息,请参阅 Azure 定价计算器

有关分步教程,请参阅如何部署联机终结点

什么是批处理终结点?

批处理终结点是用于针对一段时间内的大量数据执行批量推理的终结点。 批处理终结点接收指向数据的指针并以异步方式运行作业,以在计算群集上并行处理数据。 批处理终结点将输出存储到数据存储供进一步分析。

显示单个批处理终结点可将请求路由到多个部署(其中一个是默认部署)的示意图。

批处理部署要求

若要创建批处理部署,需要指定以下元素:

  • 模型文件(或指定工作区中已注册的模型)
  • 计算
  • 评分脚本 - 执行评分/推理所需的代码
  • 环境 - 包含 Conda 依赖项的 Docker 映像

如果在批处理部署中部署 MLFlow 模型,则无需提供评分脚本和执行环境,因为系统会自动生成此两者。

详细了解如何部署和使用批处理终结点

使用自动缩放计算的托管成本

调用批处理终结点会触发异步批量推理作业。 作业启动时将自动预配计算资源,作业完成时将自动取消分配计算资源。 因此,你只需在使用计算时付费。

对于每个批量推理作业,可以替代计算资源设置(例如实例计数)和高级设置(例如最小批大小、错误阈值等),以加快执行速度并降低成本。

灵活的数据源和存储

调用批处理终结点时,可为输入数据使用以下选项:

  • 云数据 - Azure 机器学习已注册的数据存储上的路径(是对 Azure 机器学习已注册的 V2 数据资产的引用)或公共 URI。 有关详细信息,请参阅使用 Azure 机器学习工作室连接到数据
  • 本地存储的数据 - 它将自动上传到 Azure ML 已注册的数据存储,并传递给批处理终结点。

注意

  • 如果对批处理终结点使用现有的 V1 FileDataset,建议将它们迁移到 V2 数据资产,并在调用批处理终结点时直接引用它们。 目前仅支持类型 uri_folderuri_file 的数据资产。 使用 GA CLIv2(2.4.0 及更高版本)或 GA REST API(2022-05-01 及更高版本)创建的批处理终结点不支持 V1 数据集。
  • 还可使用 az ml dataset show 命令和 --query 参数提取从 V1 FileDataset 中提取的数据存储上的 URI 或路径,并将该信息用于调用。
  • 虽然使用早期 API 创建的批处理终结点将继续支持 V1 FileDataset,但我们将使用最新 API 版本添加更多 V2 数据资产支持,以提高可用性和灵活性。 有关 V2 数据资产的详细信息,请参阅使用 SDK v2 处理数据。 有关新的 V2 体验的详细信息,请参阅什么是 v2

有关支持的输入选项的详细信息,请参阅从批处理终结点作业访问数据

将存储输出位置指定为任何数据存储和路径。 默认情况下,批处理终结点将其输出存储在工作区的默认 Blob 存储中,该存储按作业名称(系统生成的 GUID)进行组织。

安全性

  • 身份验证:Azure Active Directory 令牌
  • SSL:调用终结点时默认启用
  • VNET 支持:批处理终结点支持入口保护。 具有入口保护的批处理终结点将仅接受来自虚拟网络内的主机而不是来自公共 Internet 的评分请求。 在支持专用链接的工作区中创建的批处理终结点将具有入口保护。 要创建支持专用链接的工作区,请参阅创建安全工作区

备注

仅在以下版本中支持在启用了专用链接的工作区中创建批处理终结点。

  • CLI - 版本 2.15.1 或更高版本。
  • REST API - 版本 2022-05-01 或更高版本。
  • SDK V2 - 版本 0.1.0b3 或更高版本。

后续步骤