Comparthing Logo
机器学习莫普斯特征工程特征商店数据工程人工智能

在线特征服务与离线特征处理

在线特征服务以毫秒级延迟向生产环境中的机器学习模型提供预计算或实时特征,而离线特征处理则负责从大型历史数据集中批量计算特征,用于训练和分析。两者都是现代机器学习特征平台的重要组成部分,但其根本用途却截然不同。

亮点

  • 在线服务的目标是实现毫秒级延迟的实时推理,而离线处理则优化历史数据的吞吐量。
  • 特征存储通过将离线计算的特征具体化为低延迟的在线存储,连接了这两个世界。
  • 当在线和离线特征管道在逻辑或新鲜度上出现分歧时,训练服务偏差是一个主要风险。
  • 像 Flink 这样的流式系统通过实现近乎实时的特征计算,日益模糊了界限。

在线功能服务是什么?

在推理过程中,以低延迟要求将特征实时传递给机器学习模型。

  • 在线服务系统通常会在 10 毫秒内做出响应,以满足生产推理 SLA 的要求。
  • Feast、Tecton 和 DynamoDB 等功能存储系统支持大规模在线检索。
  • 在线功能通常会预先计算并缓存到低延迟的键值存储中,以便快速查找。
  • Kafka 和 Flink 等流式平台可以针对时间敏感型用例即时计算特征。
  • Uber、Airbnb 和 DoorDash 等公司依靠在线服务进行欺诈检测和个性化服务。

离线特征处理是什么?

从用于模型训练和回填的大型历史数据集中批量计算特征。

  • 离线处理使用 Spark 和 Beam 等分布式系统处理 TB 级到 PB 级的数据。
  • 功能流水线通常按小时或每天的周期运行,具体取决于新鲜度需求。
  • 离线要素存储以列式格式(如 Parquet)存储历史要素值,以便进行高效连接。
  • Airflow、Dagster 和 Prefect 等批处理框架可以协调离线特征工作流程。
  • 包括 Google Vertex AI、AWS SageMaker Feature Store 和 Databricks 在内的主要平台均支持离线特征工程。

比较表

功能 在线功能服务 离线特征处理
主要用例 实时模型推断 模型训练和批量分析
延迟要求 毫秒(通常小于10毫秒) 以分钟到小时为单位均可接受
数据量 单条记录查找 每个作业的处理量从TB级到PB级不等
存储后端 键值存储(Redis、DynamoDB) 列式存储(Parquet、BigQuery)
处理引擎 流媒体(Flink、Kafka Streams) 批处理(Spark、Beam、SQL)
新鲜 秒到实时 数小时至数天
一致性模型 最终一致性通常是可以接受的 强一致性用于时间点连接
成本概况 更高的单次请求成本,更低的计算能力 更低的单条记录成本,更高的计算能力

详细对比

延迟和性能

在线特征服务对延迟有着严格的限制,通常需要在个位数毫秒内返回特征值,才能跟上模型推理请求的步伐。相比之下,离线处理则优先考虑吞吐量而非速度,其作业可能需要在海量数据集上运行数小时。因此,性能优化策略也截然不同:在线系统侧重于缓存、索引和减少网络跳数,而离线系统则强调并行性、分区和高效的 I/O。

数据新鲜度和一致性

在线系统通常提供最新的特征值,这些特征值可能通过流式管道或直写式缓存进行更新。离线处理则使用特定时间点的快照,以防止训练过程中数据泄露。一个常见的挑战是保持在线和离线特征的一致性,因为训练数据和服务数据之间的差异可能会悄无声息地降低模型在生产环境中的性能。

基础设施和工具

在线服务依赖于低延迟数据库和内存缓存,例如 Redis、DynamoDB 或 Bigtable,通常由抽象检索逻辑的特征存储作为前端。离线处理则依赖于分布式计算引擎,例如运行在数据湖上的 Apache Spark、Dataflow 或 Trino。Airflow 或 Dagster 等编排工具用于调度离线作业,而在线系统则需要始终在线的服务,并具备健康检查和故障转移机制。

成本与可扩展性之间的权衡

在线基础设施由于需要高可用性、低延迟的硬件和内存,因此每次查询的成本往往更高。离线系统处理每条记录的成本较低,但需要庞大的计算集群才能高效地处理历史数据。企业通常会通过预先离线计算功能,然后将其部署到在线商店中,从而兼顾两者的优势。

实际应用案例

在线服务支持信用卡欺诈检测、推荐排名和动态定价等实时决策,在这些场景中,每一毫秒都至关重要。离线处理则为模型训练流程提供支持,包括为新实体填充特征,以及生成涵盖数月甚至数年历史行为的训练数据集。大多数生产级机器学习系统都需要两者:离线用于构建和验证模型,在线用于部署模型。

优点与缺点

在线功能服务

优点

  • + 毫秒级延迟
  • + 实时新鲜度
  • + 随时待命
  • + 水平方向缩放

继续

  • 更高的基础设施成本
  • 历史背景有限
  • 复杂的故障转移需求
  • 更难调试

离线特征处理

优点

  • + 能够处理海量数据集
  • + 降低单条记录成本
  • + 特定时间点的正确性
  • + 更容易回填

继续

  • 高延迟
  • 默认过期
  • 大量计算需求
  • 调度复杂性

常见误解

神话

在线特征和离线特征的计算方式相同。

现实

它们通常使用不同的代码路径和引擎,这会导致训练和服务数据不一致。最佳实践是通过特征存储或共享库来共享转换逻辑,从而使两个管道针对同一实体和时间戳生成相同的值。

神话

你只需要其中之一即可。

现实

大多数生产级机器学习系统都需要这两者。离线处理构建训练数据集并回填历史特征,而在线服务则在推理时提供这些特征。跳过其中任何一个环节都会导致模型质量下降或预测结果过时。

神话

在线服务始终使用实时流数据。

现实

许多在线功能实际上是预先批量计算的,并在请求时直接查找。真正的实时计算仅用于那些每秒都在变化的功能,例如基于会话的计数器。

神话

离线处理只是速度较慢的在线处理。

现实

离线系统针对高效扫描海量数据进行了优化,通常采用列式格式和分布式计算。它们与在线系统有着根本不同的目标,需要不同的架构,而不仅仅是更慢的硬件。

神话

特色商店消除了考虑线上与线下选择的需要。

现实

特征存储抽象了大部分复杂性,但工程师仍然需要理解一致性、新鲜度和成本之间的权衡。选择合适的物化策略和存储后端仍然是一项至关重要的设计决策。

常见问题解答

在线功能投放和离线功能投放有什么区别?
在线特征服务在模型推理期间实时检索特征值,通常从低延迟存储中以毫秒级延迟获取特征值。离线特征处理则基于历史数据批量计算特征,用于训练和分析,其延迟以分钟或小时计。它们服务于机器学习生命周期的不同阶段,但必须保持一致,以避免训练和服务偏差。
为什么机器学习系统需要在线和离线特征管道?
模型需要历史数据进行训练,也需要最新数据进行推理。离线流程生成训练数据集并为新实体填充特征,而在线流程则在预测时提供这些特征。缺少任何一方,都无法训练出准确的模型,也无法利用最新信息进行预测。
什么是训练服务偏差?它与线上功能和线下功能有何关系?
训练-服务偏差是指训练时使用的特征与推理时使用的特征不同,导致模型性能悄然下降。这种情况通常发生在在线和离线流程对同一特征的计算方式不同,或者使用了不同的新鲜度窗口时。特征存储通过强制执行共享的转换逻辑和时间点正确性来缓解这一问题。
哪些数据库最适合在线功能服务?
低延迟键值存储系统在在线服务领域占据主导地位,例如 Redis、Amazon DynamoDB、Google Cloud Bigtable 和 Cassandra。这些系统能够大规模地实现毫秒级读取,并且与 Feast 和 Tecton 等特征存储系统能够很好地集成。具体选择取决于您的数据一致性要求、规模以及云服务提供商。
离线功能应该多久刷新一次?
刷新频率取决于底层信号变化的速度以及模型能够容忍的数据滞后程度。常见的刷新频率范围很广,对于点击率等快速变化的指标,通常每小时刷新一次;而对于用户统计数据等变化较慢的指标,则每天或每周刷新一次。一些团队还会使用流式传输的方式,将近乎实时的更新推送至离线商店。
流媒体系统能否取代离线特征处理?
像 Flink 和 Kafka Streams 这样的流式处理系统可以近乎实时地计算特征,但它们并不能完全取代批处理。对于大型历史数据回填、跨越多年数据的复杂连接以及生成训练数据集,批处理仍然更具成本效益。许多团队使用流式处理在线特征,而使用批处理处理离线特征。
什么是特征存储?它与在线特征和离线特征有何关系?
特征存储库是一个集中式平台,它管理特征定义、计算特征,并基于相同的逻辑定义在线和离线提供服务。例如 Feast、Tecton、Hopsworks 以及云提供商提供的托管服务。它们可以减少重复工作,并有助于保持训练和服务之间的一致性。
如何处理离线功能中的特定时间点正确性?
时间点正确性是指使用标签生成时可用的特征值将特征与训练标签连接起来。特征存储通过存储带时间戳的特征历史记录并在数据集构建期间执行时间旅行连接来处理这一点。如果没有这种机制,模型可能会泄露未来的信息,并在生产环境中失效。
在线功能服务比离线处理更贵吗?
在线服务通常每次查询成本更高,因为它需要始终在线、低延迟的基础设施,例如内存缓存和复制数据库。离线处理虽然每次记录的成本更低,但处理大型作业需要大量的计算资源。总成本取决于查询量、数据大小和数据新鲜度要求。
离线特征处理常用的工具有哪些?
常用的数据转换工具包括 Apache Spark、Apache Beam、Trino 和 dbt,编排工具则有 Airflow、Dagster 或 Prefect。数据存储通常位于数据湖中,采用 Parquet 或 Delta Lake 格式。BigQuery、Snowflake 和 Databricks 等云服务也可用作离线功能后端。

裁决

当您的模型需要使用最新数据实时进行预测时,例如用于欺诈检测或个性化推荐,请选择在线特征服务。当您需要基于大型历史数据集计算特征以用于训练、数据回填或批量分析时,请选择离线特征处理。实际上,成熟的机器学习系统会将两者结合使用,通过离线管道将预先计算的特征提供给在线特征库,以实现低延迟检索。

相关比较

AI 错误检测与人工审核对比

人工智能质量检测利用机器学习模型大规模标记低质量或人工智能生成的内容,而人工审核则依靠训练有素的编辑通过判断和上下文来评估内容质量。每种方法各有优势,许多组织现在都将两者结合起来以获得最佳效果。

AI管道中的迭代检索与一次性检索系统

人工智能流程中的迭代检索通过多次搜索和推理循环来优化结果,而一次性检索系统则只需一次遍历即可获取信息。迭代方法擅长处理复杂的多跳查询,而一次性方法则优先考虑速度和简洁性,适用于简单的查询。

AI伙伴 vs 人类友谊

人工智能伴侣是旨在模拟对话、情感支持和临场感的数字系统,而人类友谊则建立在共同的生活经验、信任和情感互惠之上。本文将对比探讨这两种连接方式如何在日益数字化的世界中塑造沟通、情感支持、孤独感和社会行为。

AI计算排放与传统云排放对比

人工智能计算产生的排放主要来自训练大型模型的高能耗GPU集群,而传统云的排放则来自运行日常工作负载的通用数据中心。人工智能工作负载的单次任务耗电量远高于传统云,但传统云的运行规模要大得多。

AI检测与基于规则的检测

现代数字环境需要强大的防御机制,但其底层方法却截然不同,威胁、欺诈或异常情况的检测方式也大相径庭。基于规则的系统依赖于严格的预配置条件来标记已知威胁,而人工智能模型则通过分析行为来发现不常见的异常情况。在两者之间做出选择意味着需要在绝对确定性和适应性灵活性之间取得平衡。