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

Azure 上 Python 模型的批量评分

Azure 容器注册表
Azure 事件中心
Azure 机器学习
Azure SQL 数据库
Azure 流分析

本体系结构指南演示如何生成一个可缩放的解决方案,以对模型 Azure 机器学习进行批量评分。 此解决方案可以用作模板并推广到不同的问题。

体系结构

Architecture diagram that shows the batch scoring of Python models on Azure

下载此体系结构的 Visio 文件

工作流

此体系结构指南适用于流式处理和静态数据,前提是引入过程已适应数据类型。 以下步骤和组件描述了这两种类型的数据的引入。

流式处理数据:

  1. 流式处理数据源自 IoT 传感器,其中新事件频繁进行流式传输。
  2. 传入流式处理事件使用 Azure 事件中心排队,然后使用 Azure 流分析进行预处理。
    • Azure 事件中心。 此消息引入服务可以每秒引入数百万条事件消息。 在此体系结构中,传感器将数据流发送到事件中心。
    • Azure 流分析。 一个事件处理引擎。 流分析作业从事件中心读取数据流,并执行流处理操作。

静态数据:

  1. 可将静态数据集作为文件存储在 Azure Data Lake Storage 中,或者以表格格式存储在 Azure SynapseAzure SQL 数据库中。
  2. Azure 数据工厂可用于聚合或预处理存储的数据集。

在数据引入后,剩余的体系结构与流式处理数据和静态数据相同,由以下步骤和组件组成:

  1. 可将引入、聚合和/或预处理的数据作为文档存储在 Azure Data Lake Storage 中,或者以表格格式存储在 Azure SynapseAzure SQL 数据库中。 然后,Azure 机器学习将使用此数据。
  2. Azure 机器学习用于大规模训练、部署和管理机器学习模型。 在批量评分的上下文中,Azure 机器学习使用自动缩放选项创建虚拟机群集,其中作业与 Python 脚本并行执行。
  3. 模型部署为托管批处理终结点,然后用于针对一段时间内的大量数据执行批量推理。 批处理终结点接收指向数据的指针并以异步方式运行作业,以在计算群集上并行处理数据。
  4. 可将推理结果作为文档存储在 Azure Data Lake Storage 中,或者以表格格式存储在 Azure SynapseAzure SQL 数据库中。
  5. 可视化:可以通过用户界面(例如 Power BI 仪表板)或通过定制的 Web 应用程序来使用存储的模型结果。

组件

注意事项

这些注意事项实施 Azure 架构良好的框架的支柱原则,即一套可用于改善工作负载质量的指导原则。 有关详细信息,请参阅 Microsoft Azure 架构良好的框架

性能

对于标准 Python 模型,仅使用 CPU 通常就足以处理工作负荷。 此体系结构使用 CPU。 但是,对于深度学习工作负荷,GPU 通常会远远超出 CPU,通常需要相当大的 CPU 群集才可获得可比的性能。

跨 VM 和内核并行执行

以批处理模式运行许多模型的评分过程时,作业需跨 VM 实现并行化。 可使用两种方法:

  • 使用低成本 VM 创建较大的群集。
  • 使用高性能 VM 创建较小的群集,每个 VM 上提供的核心数较多。

通常情况下,为标准 Python 模型评分不像为深度学习模型评分那样苛刻,一个小的群集就可以有效地处理大量的排队模型。 可以在数据集大小增加时增加群集节点的数目。

在此方案中,为方便起见,将在单个 Azure 机器学习管道步骤中提交一个评分任务。 不过,在同一管道步骤中为多个数据区块评分可能更有效。 在这种情况下,请编写自定义代码,以便在多个数据集中进行读取,并在执行单个步骤期间执行评分脚本。

管理

  • 监视作业。 监视正在运行的作业进度至关重要。 然而,在活动节点群集间进行监视可能是一项挑战。 若要检查群集中节点的状态,请使用 Azure 门户管理机器学习工作区。 如果节点处于非活动状态或作业失败,则错误日志将保存到 Blob 存储,并且还可以在管道部分访问这些日志。 若要进行更全面的监视,请将日志连接到 Application Insights,或运行单独的进程来轮询群集及其作业的状态。
  • 日志记录。 机器学习将所有 stdout/stderr 记录到关联的 Azure 存储帐户中。 若要轻松查看日志文件,请使用 Azure 存储资源管理器等存储导航工具。

成本优化

成本优化是关于寻找减少不必要的费用和提高运营效率的方法。 有关详细信息,请参阅成本优化支柱概述

在此体系结构指南中使用的最昂贵组件是计算资源。 计算群集大小根据队列中的作业增加和减少。 可以修改计算的预配配置,通过 Python SDK 以编程方式启用自动缩放。 或者使用 Azure CLI 设置群集的自动缩放参数。

对于无需立即处理的工作,可配置自动缩放公式,使默认状态(最小值)为零节点群集。 通过此配置,群集从零节点开始,仅在队列中检测到作业时才会增加。 如果批量评分进程一天只运行几次或更少,则此设置可大幅节省成本。

自动缩放可能不适用于彼此发生时间太接近的批处理作业。 因为群集启动和停止所需的时间会产生成本,如果批处理工作负荷在上一个作业结束后的几分钟内开始,则保持群集在作业之间运行可能更具成本效益。 此策略取决于评分过程是计划高频率运行(例如,每小时运行一次)还是低频率运行(例如,每月运行一次)。

作者

本文由 Microsoft 维护, 它最初是由以下贡献者撰写的。

主要作者:

若要查看非公开的 LinkedIn 个人资料,请登录到 LinkedIn。

后续步骤

产品文档:

Microsoft Learn 模块: