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

用于在生产环境下进行推理的终结点

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

在训练机器学习模型或管道后,或者从模型目录中找到适合你的需求的模型后,你需要将其部署到生产环境,以便其他人可以使用它们进行推理。 推理是将新的输入数据应用于机器学习模型或管道,再生成输出的过程。 虽然此类输出通常称为“预测”,但推理可用于为分类和聚类分析等其他机器学习任务生成输出。 在 Azure 机器学习中,使用终结点来执行推理

终结点和部署

终结点是稳定且持久的 URL,可用于请求或调用模型。 向终结点提供所需的输入,即可获得输出。 Azure 机器学习支持实现无服务器 API 终结点、联机终结点和批处理终结点。 终结点提供:

  • 一个稳定且持久的 URL(如 endpoint-name.region.inference.ml.azure.com)、
  • 一种身份验证机制,以及
  • 授权机制。

部署是一组资源和计算,在承载执行实际推理的模型或组件时需要它。 一个终结点包含一个部署,对于联机终结点和批处理终结点,一个终结点可以包含多个部署。 部署可以托管独立资产并根据资产的需求使用不同的资源。 此外,终结点有一个路由机制,可以将请求定向到它的任何部署。

一方面,Azure 机器学习中某些类型的终结点在其部署上使用专用资源。 若要运行这些终结点,你必须在 Azure 订阅上具有计算配额。 另一方面,某些模型支持无服务器部署 — 允许它们不消耗订阅中的配额。 对于无服务器部署,将根据使用情况计费。

直觉

假设你正在开发一个应用程序,希望它能够根据汽车的照片预测汽车的类型和颜色。 对于此应用程序,具有特定凭据的用户向 URL 发出 HTTP 请求,并在请求中提供了一张汽车图片。 用户获得响应,其中以字符串值的形式返回了图片中汽车的类型和颜色。 在这一场景中,URL 起到了终结点的作用。

显示终结点概念的示意图。

再假设有一名数据科学家 Alice 正在负责实施这款应用程序。 Alice 非常了解 TensorFlow,决定使用 Keras 顺序分类器搭配 TensorFlow Hub 提供的 RestNet 体系结构一起来实施模型。 测试模型后,Alice 对结果感到满意,并决定使用该模型来解决汽车预测问题。 模型很大,需要 8GB 内存和 4 个核心才能运行。 在此场景中,Alice 需要运行模型的代码和计划等模型和资源构成了终结点下的部署

显示部署概念的示意图。

假设在运行了几个月后,组织发现该应用程序在没有理想照明条件下对于图像的预测结果不佳。 Bob 是另一位数据科学家,他非常了解可帮助模型基于该因素构建稳健性的数据加强技术。 但是,Bob 更喜欢使用 Torch 来实施模型和训练新模型。 Bob 希望逐步在生产环境中尝试这种模型,直到组织准备好停用旧模型。 此外,当部署到 GPU 时,新模型也展现出更强的性能,因此部署需要包含一个 GPU。 在此场景中,Bob 需要运行模型的代码和计划等模型和资源构成了相同终结点下的另一个部署

显示一个终结点和多个部署的概念的示意图。

终结点:无服务器 API、联机和批处理

Azure 机器学习支持实现无服务器 API 终结点联机终结点批处理终结点

无服务器 API 终结点和联机终结点专为实时推理而设计。 每当调用终结点时,将在终结点的响应中返回结果。 无服务器 API 终结点不消耗订阅中的配额;而是采用即用即付的计费方式。

批处理终结点是为长时间运行的批量推理设计的。 每次调用批处理终结点时,都会生成执行实际工作的批处理作业。

何时使用无服务器 API、联机终结点和批处理终结点

无服务器 API 终结点

通过无服务器 API 终结点使用大型基础模型进行实时推理或对此类模型进行微调。 并非所有模型都可用于部署到无服务器 API 终结点。 建议在以下情况下使用此部署模式:

  • 你的模型是一个基础模型,或者是可用于无服务器 API 部署的基础模型微调版本。
  • 可以通过无配额部署受益。
  • 无需自定义用于运行模型的推理堆栈。

联机终结点

使用联机终结点来操作处理同步低延迟请求中的实时推理的模型。 建议在下列情况下使用它们:

  • 你的模型是一个基础模型或基础模型微调版本,但在无服务器 API 终结点中不受支持。
  • 你没有低延迟要求。
  • 你的模型可以在相对较短的时间内响应请求。
  • 你的模型的输入适合请求的 HTTP 有效负载。
  • 你需要根据请求数量进行纵向扩展。

批处理终结点

使用批处理终结点来使模型或管道可操作化,以便处理长时间运行的异步推理。 建议在下列情况下使用它们:

  • 你具有需要较长时间才能运行的高开销模型或管道。
  • 你希望操作机器学习管道并重用组件。
  • 需要对分布在多个文件中的大量数据执行推理。
  • 没有低延迟要求。
  • 你的模型的输入存储在存储帐户或 Azure 机器学习数据资产中。
  • 可以利用并行化。

无服务器 API、联机终结点和批处理终结点的比较

无服务器 API、联机终结点和批处理终结点都基于终结点的概念,因此,你可以轻松地从一个终结点转换到另一个终结点。 联机终结点和批处理终结点还能够管理同一终结点的多个部署。

终结点

下表显示了在终结点级别无服务器 API、联机终结点和批处理终结点中不同功能的总结。

功能 无服务器 API 终结点 联机终结点 Batch 终结点
稳定的调用 URL
支持多部署
部署的路由 流量拆分 切换到默认值
镜像流量以安全推出
Swagger 支持
身份验证 密钥 密钥和 Microsoft Entra ID(预览版) Microsoft Entra ID
专用网络支持(旧版)
托管网络隔离 (请参阅所需的其他配置)
客户管理的密钥 NA
成本基础 每个终结点,每分钟1

1无服务器 API 终结点每分钟收取少量费用。 请参阅部署部分,了解与使用相关的费用,这些费用按令牌计费。

部署

下表显示了在部署级别无服务器 API、联机终结点和批处理终结点中不同功能的总结。 这些概念适用于终结点(对于联机终结点和批处理终结点)下的每个部署,也适用于无服务器 API 终结点(部署的概念内置于终结点中)。

功能 无服务器 API 终结点 联机终结点 Batch 终结点
部署类型 模型 模型 模型和管道组件
MLflow 模型部署 否,只有目录中的特定模型
自定义模型部署 否,只有目录中的特定模型 是,使用评分脚本 是,使用评分脚本
模型包部署 2 内置 是(预览版)
推理服务器 3 Azure AI 模型推理 API - Azure 机器学习推理服务器
- Triton
- 自定义(使用 BYOC)
批量推理
消耗的计算资源 无(无服务器) 实例或精细资源 群集实例
计算类型 无(无服务器) 托管计算和 Kubernetes 托管计算和 Kubernetes
低优先级计算 NA
将计算缩放为零 内置
自动缩放计算4 内置 是,基于资源使用情况 是,基于作业计数
产能过剩管理 限制 限制 队列
成本基础5 按令牌 每个部署:正在运行的计算实例 按作业:作业中使用的计算实例(上限为群集的最大实例数)
部署的本地测试

2 在没有出站 Internet 连接或专用网络的终结点上部署 MLflow 模型需要先将模型打包

3 推理服务器指接收请求、处理请求并创建响应的服务技术。 推理服务器还规定输入和预期输出的格式。

4 自动缩放能够根据其负载来动态纵向扩展或缩减部署的已分配资源。 联机部署和批处理部署使用不同的自动缩放策略。 联机部署根据资源利用率(如 CPU、内存、请求等...)进行纵向扩展和缩减,而批处理终结点根据创建的作业数进行纵向扩展或缩减。

5 联机部署和批部署均按消耗的资源收费。 在联机部署中,资源是在部署时预配的。 在批部署中,在部署时不会消耗资源,但在作业运行时会消耗资源。 因此,批部署本身没有相关的成本。 同样,已排队的作业也不会消耗资源。

开发人员接口

终结点旨在帮助组织在 Azure 机器学习中操作生产级工作负载。 终结点是可靠且可缩放的资源,提供实现 MLOps 工作流的最佳能力。

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

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