机器学习模型训练完成后,下一步是使用它对新数据进行预测。这一过程称为“推理”,其策略需高度依赖于应用对延迟与吞吐量的要求。批量推理,也称为离线推理或异步处理,是一种强大且高效的方法,适用于无需即时响应时对大量数据进行预测。
批量推理是指使用训练完成的机器学习模型,一次性对大量观测值(即“批次”)生成预测的过程。
与在线推理不同,后者是在数据点到达时实时进行预测,而批量推理则处理在一段时间内收集的数据。这种方法更注重高吞吐量和计算效率,而非低延迟。由于处理是在离线完成的,而非直接响应用户请求,因此也被称为静态推理,即先生成预测结果并存储,供后续使用。
在设计机器学习系统时,选择使用批量推理还是在线推理,是一项基础性的架构决策。每种方法用途不同,且针对不同的性能特征进行了优化。
功能 | 批量推理 | 在线推理 |
数据处理 | 在单个作业中同时处理大量数据点。 | 系统在数据点到达时处理单个数据点或一小部分数据点。 |
主要优化 | 高吞吐量和高成本效益。 | 低延迟和即时响应。 |
延迟时间 | 延迟时间长;无法立即获得预测结果(需要几分钟到几小时)。 | 延迟时间极短;预测结果在几毫秒内即可返回。 |
调用 | 按计划(例如 cron 作业)或按需触发。 | 由用户的直接请求或系统中的事件触发。 |
计算利用率 | 可在短时间内使用强大的计算资源,然后将其缩减至零。 | 需要服务器或端点始终运行并随时准备接收请求。 |
用例示例 | 为电子商务网站的所有用户生成每日商品推荐。 | 预测单笔信用卡交易是否为欺诈交易。 |
同义词 | 离线推理、异步处理、静态推理。 | 实时推理、同步处理、动态推理。 |
功能
批量推理
在线推理
数据处理
在单个作业中同时处理大量数据点。
系统在数据点到达时处理单个数据点或一小部分数据点。
主要优化
高吞吐量和高成本效益。
低延迟和即时响应。
延迟时间
延迟时间长;无法立即获得预测结果(需要几分钟到几小时)。
延迟时间极短;预测结果在几毫秒内即可返回。
调用
按计划(例如 cron 作业)或按需触发。
由用户的直接请求或系统中的事件触发。
计算利用率
可在短时间内使用强大的计算资源,然后将其缩减至零。
需要服务器或端点始终运行并随时准备接收请求。
用例示例
为电子商务网站的所有用户生成每日商品推荐。
预测单笔信用卡交易是否为欺诈交易。
同义词
离线推理、异步处理、静态推理。
实时推理、同步处理、动态推理。
批量推理流水线是一种结构化、自动化的工作流,可将数据从原始状态转换为可据以采取行动的预测。该过程可分为以下关键步骤,通常由工作流管理器或调度系统进行编排。
该过程首先是随着时间推移逐步积累数据。这些输入数据可能包括用户活动日志、交易记录或传感器读数,这些数据从多个来源收集并存储在一个集中式存储位置中。这通常是基于 Google Cloud Storage 等服务构建的数据湖,或 BigQuery 等数据仓库。
推理流水线由触发器启动。此触发器可以是:
触发后,该作业会加载整个批次的原始输入数据。然后,它会执行必要的预处理和特征工程步骤,将数据转换为机器学习模型所期望的精确格式。这可能包括清理缺失值、缩放数值特征,以及对分类变量进行编码等任务。
系统从中央存储库(例如 Vertex AI Model Registry)检索经过训练的机器学习模型。随后将预处理后的批次数据输入模型,模型会对集合中的每个观测值执行推理并生成相应预测。
模型输出(预测结果集合)随后将写入存储系统。此目标位置是根据预测的使用方式进行选择的。常见目的地包括:将结果加载到 BigQuery 表中用于分析、加载到 Cloud SQL 数据库以供应用快速查找,或将结果保存为 Cloud Storage 文件。
预测结果现已存储并准备就绪,下游系统可以使用这些结果。业务智能工具可能会查询这些结果,以创建预测客户行为的信息中心。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 是 Google Cloud 的托管式机器学习平台,提供简化的无服务器方法,用于批量推理。该流程的重点在于配置作业,并让平台处理底层基础设施。
在开始之前,您需要准备以下三项关键内容:
您可以通过 Google Cloud 控制台、gcloud 命令行工具,或使用 Vertex AI SDK 以编程方式启动作业。创建作业时,您将提供以下配置:
提交作业后,其余流程将由 Vertex AI 接管。它会自动预配您指定的计算资源,运行模型处理您的输入数据,生成预测结果,并保存至您指定的输出位置。作业完成后,Vertex AI 会自动将所有资源缩减至零,因此您仅需为实际使用的计算时间付费。您可直接在 Google Cloud 控制台中监控作业进度并查看日志。
作业状态显示为“已成功”后,预测结果即已就绪。现在,Cloud Storage 中的输出文件或 BigQuery 中的新表已可供下游应用、分析工具或 BI 信息中心访问。
使用 Google Kubernetes Engine (GKE) 进行批量推理可提供最大的控制力和可移植性,非常适合拥有 Kubernetes 专业知识或有特殊要求的团队。设置过程包括将推理逻辑容器化,并使用 Kubernetes 资源管理其执行。
第 1 步:将推理应用容器化。第一步是将预测代码打包为容器映像。
第 2 步:定义 Kubernetes 作业。您无需使用长时间运行的 Deployment,而是通过 Kubernetes Job 或 CronJob 清单(YAML 文件)定义批处理任务。此文件指定了以下内容:
第 3 步:在 GKE 集群上执行作业。您使用 kubectl 将清单应用于 GKE 集群。然后,GKE 的控制平面会安排一个 Pod 在集群中的合适节点上运行推理容器。对于重复性任务,CronJob 资源会根据预定义的时间表自动创建新的作业(例如,0 2 * * * 表示每天凌晨 2 点)。
第 4 步:实现数据处理并存储结果。与托管式 Vertex AI 方法不同,容器内的应用代码负责处理所有数据 I/O。您的脚本必须包含连接和读取数据源(例如 Cloud Storage 存储桶)的逻辑,以及将最终预测结果写入所选目标位置(例如 Cloud SQL 数据库)的逻辑。