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

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

训练完机器学习模型或管道后,需要将其部署到生产环境,以便其他人可以使用它们进行推理。 推理是将新的输入数据应用于机器学习模型或管道,再生成输出的过程。 虽然此类输出通常称为“预测”,但推理可用于为分类和聚类分析等其他机器学习任务生成输出。 在 Azure 机器学习中,使用终结点和部署来执行推理。 终结点和部署可用于将生产工作负载的接口与为其提供服务的实现分离。

直觉

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

A diagram showing the concept of an endpoint.

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

A diagram showing the concept of a deployment.

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

A diagram showing the concept of an endpoint with multiple deployments.

终结点和部署

终结点是稳定且持久的 URL,可用于请求或调用模型。 向终结点提供所需的输入,即可获得输出。 终结点提供:

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

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

若要正常运行,每个终结点必须至少有一个部署。 终结点和部署是显示在 Azure 门户中的独立 Azure 资源管理器资源。

联机终结点和批处理终结点

Azure 机器学习让你可实现联机终结点批处理终结点。 联机终结点是为实时推理设计的:�调用终结点时,会在终结点的响应中返回结果。 而批处理终结点则是用于进行长时间运行的批处理推理。 每次调用批处理终结点时,都会生成执行实际工作的批处理作业。

根据用例需求,何时使用联机终结点与批处理终结点

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

  • 你没有低延迟要求。
  • 你的模型可以在相对较短的时间内响应请求。
  • 你的模型的输入适合请求的 HTTP 有效负载。
  • 你需要根据请求数量进行纵向扩展。

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

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

联机终结点和批处理终结点对比图

联机终结点和批处理终结点都基于终结点和部署的概念,这有助于轻松地从一个终结点转换到另一个终结点。 但是,在从一个终结点移动到另一个时,需要考虑一些差异。 其中一些差异是由工作的性质导致的:

终结点

下表显示了联机终结点和批处理终结点中不同功能的总结。

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

部署

下表显示了在部署级别联机终结点和批处理终结点中不同功能的总结。 这些概念适用于终结点下的每个部署。

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

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

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

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

4 联机部署和批部署均按消耗的资源收费。 在联机部署中,资源是在部署时预配的。 但是,在批量部署中,在部署时不会消耗任何资源,但在作业运行时会消耗资源。 因此,部署本身没有相关的成本。 请注意,排队作业也不会消耗资源。

开发人员接口

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

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

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

后续步骤