什么是批量推理?

机器学习模型训练完成后,下一步是使用它对新数据进行预测。这一过程称为“推理”,其策略需高度依赖于应用对延迟与吞吐量的要求。批量推理,也称为离线推理或异步处理,是一种强大且高效的方法,适用于无需即时响应时对大量数据进行预测。

批量推理的定义

批量推理是指使用训练完成的机器学习模型,一次性对大量观测值(即“批次”)生成预测的过程。

与在线推理不同,后者是在数据点到达时实时进行预测,而批量推理则处理在一段时间内收集的数据。这种方法更注重高吞吐量和计算效率,而非低延迟。由于处理是在离线完成的,而非直接响应用户请求,因此也被称为静态推理,即先生成预测结果并存储,供后续使用。

批量推理的主要特征

  • 异步处理:根据预定义的时间表(例如每小时、每天)或按需生成预测,而不是在新数据传入时实时生成
  • 高吞吐量:该系统经过优化,可在单次运行中处理大量数据点,因此效率极高
  • 经济高效:通过计划运行,您可以在计算资源最充足或成本最低时使用它们,从而显著降低运营成本
  • 延迟容忍度:主要假设是,使用预测结果的应用无需立即响应;数据收集与预测生成之间存在几分钟至几小时的延迟是可以接受的

批量推理与在线推理

在设计机器学习系统时,选择使用批量推理还是在线推理,是一项基础性的架构决策。每种方法用途不同,且针对不同的性能特征进行了优化。

功能

批量推理

在线推理

数据处理

在单个作业中同时处理大量数据点。

系统在数据点到达时处理单个数据点或一小部分数据点。

主要优化

高吞吐量和高成本效益。

低延迟和即时响应。

延迟时间

延迟时间长;无法立即获得预测结果(需要几分钟到几小时)。

延迟时间极短;预测结果在几毫秒内即可返回。

调用

按计划(例如 cron 作业)或按需触发。

由用户的直接请求或系统中的事件触发。

计算利用率

可在短时间内使用强大的计算资源,然后将其缩减至零。

需要服务器或端点始终运行并随时准备接收请求。

用例示例

为电子商务网站的所有用户生成每日商品推荐。

预测单笔信用卡交易是否为欺诈交易。

同义词

离线推理、异步处理、静态推理。

实时推理、同步处理、动态推理。

功能

批量推理

在线推理

数据处理

在单个作业中同时处理大量数据点。

系统在数据点到达时处理单个数据点或一小部分数据点。

主要优化

高吞吐量和高成本效益。

低延迟和即时响应。

延迟时间

延迟时间长;无法立即获得预测结果(需要几分钟到几小时)。

延迟时间极短;预测结果在几毫秒内即可返回。

调用

按计划(例如 cron 作业)或按需触发。

由用户的直接请求或系统中的事件触发。

计算利用率

可在短时间内使用强大的计算资源,然后将其缩减至零。

需要服务器或端点始终运行并随时准备接收请求。

用例示例

为电子商务网站的所有用户生成每日商品推荐。

预测单笔信用卡交易是否为欺诈交易。

同义词

离线推理、异步处理、静态推理。

实时推理、同步处理、动态推理。

批量推理的工作原理

批量推理流水线是一种结构化、自动化的工作流,可将数据从原始状态转换为可据以采取行动的预测。该过程可分为以下关键步骤,通常由工作流管理器或调度系统进行编排。

第 1 步:数据收集和存储

该过程首先是随着时间推移逐步积累数据。这些输入数据可能包括用户活动日志、交易记录或传感器读数,这些数据从多个来源收集并存储在一个集中式存储位置中。这通常是基于 Google Cloud Storage 等服务构建的数据湖,或 BigQuery 等数据仓库。

第 2 步:触发批处理作业

推理流水线由触发器启动。此触发器可以是:

  • 基于时间:调度程序(如 cron 作业)按固定间隔启动作业,例如每晚 1 点。
  • 基于事件:作业响应特定事件而启动,例如 Cloud Storage 存储桶中出现新数据文件

第 3 步:预处理数据

触发后,该作业会加载整个批次的原始输入数据。然后,它会执行必要的预处理和特征工程步骤,将数据转换为机器学习模型所期望的精确格式。这可能包括清理缺失值、缩放数值特征,以及对分类变量进行编码等任务。

第 4 步:生成预测

系统从中央存储库(例如 Vertex AI Model Registry)检索经过训练的机器学习模型。随后将预处理后的批次数据输入模型,模型会对集合中的每个观测值执行推理并生成相应预测。

第 5 步:存储结果

模型输出(预测结果集合)随后将写入存储系统。此目标位置是根据预测的使用方式进行选择的。常见目的地包括:将结果加载到 BigQuery 表中用于分析、加载到 Cloud SQL 数据库以供应用快速查找,或将结果保存为 Cloud Storage 文件。

第 6 步:使用预测结果

预测结果现已存储并准备就绪,下游系统可以使用这些结果。业务智能工具可能会查询这些结果,以创建预测客户行为的信息中心。Web 应用的后端可能会加载预先计算的产品推荐以向用户展示,或营销自动化平台也可能会提取预测将流失的客户名单,以便通过新广告活动进行精准投放。

批量推理的优势

对于许多企业用例,批量推理相较于实时处理具有显著优势。

成本效益

批处理可让您优化计算资源的使用。您可以在强大的硬件上短时间运行大型作业,随后关闭资源,从而避免持续运行服务器的维护成本。

高吞吐量和可伸缩性

批处理系统旨在实现可扩缩性,并高效处理 TB 级数据。这样就可以将复杂模型应用于超大规模数据集,而这在在线系统中可能因速度过慢或成本过高而难以实现。

操作简单

与高可用、低延迟的在线推理系统相比,批量推理流水线在构建和维护方面可能更为简单。它们通常对瞬时故障具有更强的弹性,并且在作业失败时可轻松重新运行。

支持复杂的特征工程

由于批量推理不受低延迟要求限制,您可以对输入数据执行更复杂、计算强度更高的特征工程,这通常可以生成更准确的模型。

提高资源利用率

您可以安排批处理作业在非高峰时段运行,从而利用空闲的计算资源,并可能获得更低的抢占式虚拟机价格。

批量推理的应用场景

在许多核心业务流程中,批量推理是首选方法,因为预测可增强产品或服务,无需实时生成。这种方法在各行各业中均可有效解决大规模数据问题。

行业

需要解决的问题

示例解决方案

电子商务和零售


每天为全体用户生成个性化产品推荐,确保用户访问网站时可快速检索。

Vertex AI 批量预测可以运行推荐模型,并将结果加载到 Cloud SQL 或 Bigtable 等快速查询数据库中。

电信和 SaaS

通过分析整个客户数据库的使用模式,识别哪些客户在下个月存在较高的流失风险。

借助 BigQuery ML,您可以直接在数据仓库中存储的客户数据上运行分类模型,并将结果写入新表,供留存团队使用。

金融与保险

预测金融市场趋势,或计算整个资产组合的风险评分,这是一项周期性执行的计算密集型任务。

Vertex AI 批量预测可按计划执行复杂的时序模型,从而提供战略报告和信息中心所需的数据。

物流与供应链

根据每周的销售和物流数据运行复杂的需求预测模拟,优化数百个仓库的库存水平。

Google Kubernetes Engine (GKE) 提供自定义、高性能的环境,可满足运行具有特定库和硬件要求的专业模拟模型的需求。

医疗保健

分析每天大量批次的医学影像(例如 X 光片或 CT 扫描),以检测潜在异常,供放射科医生稍后查看。

GKE 与 GPU 加速器相结合,非常适合在大型图像集上运行深度学习计算机视觉模型,从而提供最佳控制与性能。

法律及法规遵从

处理数百万份现有文档并对其进行分类,以提取关键实体、评估情绪,并使整个语料库可搜索和可分析。

Dataflow 可用于构建可扩缩的 NLP 流水线,负责文本预处理和推理;而 GKE 更适合具有自定义模型需求的用例。

行业

需要解决的问题

示例解决方案

电子商务和零售


每天为全体用户生成个性化产品推荐,确保用户访问网站时可快速检索。

Vertex AI 批量预测可以运行推荐模型,并将结果加载到 Cloud SQL 或 Bigtable 等快速查询数据库中。

电信和 SaaS

通过分析整个客户数据库的使用模式,识别哪些客户在下个月存在较高的流失风险。

借助 BigQuery ML,您可以直接在数据仓库中存储的客户数据上运行分类模型,并将结果写入新表,供留存团队使用。

金融与保险

预测金融市场趋势,或计算整个资产组合的风险评分,这是一项周期性执行的计算密集型任务。

Vertex AI 批量预测可按计划执行复杂的时序模型,从而提供战略报告和信息中心所需的数据。

物流与供应链

根据每周的销售和物流数据运行复杂的需求预测模拟,优化数百个仓库的库存水平。

Google Kubernetes Engine (GKE) 提供自定义、高性能的环境,可满足运行具有特定库和硬件要求的专业模拟模型的需求。

医疗保健

分析每天大量批次的医学影像(例如 X 光片或 CT 扫描),以检测潜在异常,供放射科医生稍后查看。

GKE 与 GPU 加速器相结合,非常适合在大型图像集上运行深度学习计算机视觉模型,从而提供最佳控制与性能。

法律及法规遵从

处理数百万份现有文档并对其进行分类,以提取关键实体、评估情绪,并使整个语料库可搜索和可分析。

Dataflow 可用于构建可扩缩的 NLP 流水线,负责文本预处理和推理;而 GKE 更适合具有自定义模型需求的用例。

如何在 Vertex AI 中设置批量推理

Vertex AI 是 Google Cloud 的托管式机器学习平台,提供简化的无服务器方法,用于批量推理。该流程的重点在于配置作业,并让平台处理底层基础设施。

准备资源。

在开始之前,您需要准备以下三项关键内容:

  • 应将经过训练的模型上传至 Vertex AI Model Registry
  • 您的输入数据,其格式应符合模型要求;数据应存储在 Google Cloud Storage(例如 JSON 或 CSV 文件)或 BigQuery 表中
  • 输出的目标位置,可以是 Cloud Storage 存储桶或 BigQuery 表

创建批量预测作业。

您可以通过 Google Cloud 控制台、gcloud 命令行工具,或使用 Vertex AI SDK 以编程方式启动作业。创建作业时,您将提供以下配置:

  • 您要使用的 Model Registry 中的特定模型
  • 输入数据的路径和输出结果的位置
  • 您可为作业选择所需的机器类型和加速器(例如 GPU),从而在成本与性能之间取得平衡

执行并监控作业。

提交作业后,其余流程将由 Vertex AI 接管。它会自动预配您指定的计算资源,运行模型处理您的输入数据,生成预测结果,并保存至您指定的输出位置。作业完成后,Vertex AI 会自动将所有资源缩减至零,因此您仅需为实际使用的计算时间付费。您可直接在 Google Cloud 控制台中监控作业进度并查看日志。

访问并使用预测结果。

作业状态显示为“已成功”后,预测结果即已就绪。现在,Cloud Storage 中的输出文件或 BigQuery 中的新表已可供下游应用、分析工具或 BI 信息中心访问。

利用 Google Cloud 解决业务难题

新客户可获得 $300 赠金,用于抵扣 Google Cloud 的费用。

如何在 GKE 中设置批量推理

使用 Google Kubernetes Engine (GKE) 进行批量推理可提供最大的控制力和可移植性,非常适合拥有 Kubernetes 专业知识或有特殊要求的团队。设置过程包括将推理逻辑容器化,并使用 Kubernetes 资源管理其执行。

第 1 步:将推理应用容器化。第一步是将预测代码打包为容器映像。

  • 编写一个脚本(例如使用 Python),用于加载已训练模型、从数据源读取数据、执行推理,并将结果写入目标位置
  • 创建 Dockerfile;此文件定义构建容器的步骤,包括指定基础映像、安装依赖项(如 TensorFlow 或 pandas),以及将模型文件和推理脚本复制到映像中
  • 构建映像并将其推送到 Artifact Registry 等容器注册表

第 2 步:定义 Kubernetes 作业。您无需使用长时间运行的 Deployment,而是通过 Kubernetes Job 或 CronJob 清单(YAML 文件)定义批处理任务。此文件指定了以下内容:

  • 要使用的 Artifact Registry 中的容器映像
  • 所需的计算资源(CPU、内存、GPU)
  • 任何必要的配置,例如用于文件路径的环境变量,或用于数据库凭证的 Secret

第 3 步:在 GKE 集群上执行作业。您使用 kubectl 将清单应用于 GKE 集群。然后,GKE 的控制平面会安排一个 Pod 在集群中的合适节点上运行推理容器。对于重复性任务,CronJob 资源会根据预定义的时间表自动创建新的作业(例如,0 2 * * * 表示每天凌晨 2 点)。

第 4 步:实现数据处理并存储结果。与托管式 Vertex AI 方法不同,容器内的应用代码负责处理所有数据 I/O。您的脚本必须包含连接和读取数据源(例如 Cloud Storage 存储桶)的逻辑,以及将最终预测结果写入所选目标位置(例如 Cloud SQL 数据库)的逻辑。

您想解决什么问题?
What you'll get:
分步指南
参考架构
可用的预构建解决方案
此服务是使用 Vertex AI 构建的。您必须年满 18 周岁才能使用。请勿输入敏感信息、机密信息或个人信息。

其他资源

更进一步

获享 $300 赠金以及 20 多种提供“始终免费”用量的产品,开始在 Google Cloud 上构建项目。