dot 未来速度的改变即将降临您的城市。

加入 Redis 发布会

使用 Redis 构建特征存储:Feast 与 Redis 入门

一个 特征存储 是一个集中式位置,您的组织中来自不同团队的数据科学家可以在其中共享 特征 用于机器学习。特征存储允许他们搜索、重用和以规模化方式在生产中提供特征。随着 MLOps 的成熟,特征存储正成为机器学习平台的基石,原因如下: 

  • 特征是使 ML 系统有效的最核心要素。设计这些特征很复杂,需要大量时间。特征存储通过允许工程师在不同的 ML 用例中重用特征来节省时间并改善 ML 系统结果。
  • 特征存储让工程师可以在训练和生产中重用相同的特征,从而确保工程特征的一致性和可重复性。 
  • 低延迟特征服务是实时用例的关键。特征存储从在线存储中为 ML 模型提供特征,以实现低延迟的实时推断。 

Redis 为在线特征存储提供支持

当企业需要提供基于实时的、基于 ML 的应用程序来支持大量在线流量时,Redis 由于其能够以规模化方式提供超低延迟和高吞吐量,因此最常被选为在线特征存储的基础。我们看到 ML 云平台提供商正在使用 Redis 提供特征存储,例如最近的 H2O AI 特征存储 和微软的 Azure 特征存储。我们还看到许多公司使用 Redis 自行构建特征存储的实现,包括 WixSwiggyComcastZomatoAT&TDoorDashiFoodUber

这些公司拥有庞大的数据集,有数百到数千个特征为规模巨大的 ML 系统提供支持。他们以 Redis 为支持的特征存储支持时间敏感的、对任务至关重要的业务应用程序,其中许多应用程序使用实时数据进行推荐和欺诈检测。

Feast 等开源特征存储实现也选择了 Redis。Redis 被选为 Feast 的在线存储,用于规模化的实时用例,首先是由印尼打车公司 Gojek(与 Google 合作创建了 Feast)采用,之后又被 Feast 的早期采用者采用,例如 UdaanRobinhood。此外,微软在其新的 Azure Feature Store with Feast 中也选择了 Redis 作为在线存储(敬请关注更多详细信息!)。

为了更好地了解特征存储的工作原理以及 Redis 为什么是如此重要的特征存储组件,我们将使用本文的其余部分介绍 Feast,并展示如何使用它使用 Redis 构建自己的特征存储。 

什么是 Feast?

Feast(Feature store)是一个开源特征存储,它是 Linux 基金会 AI & 数据基金会 的一部分。Feast 可以从低延迟在线存储或离线存储中提供特征,同时提供中央注册表、存储和服务。这使 ML 工程师和数据科学家能够发现 ML 用例的相关特征,并在生产中提供这些特征。

Redis + Feast diagram

Feast 以模块化的方式构建,因此您可以采用所有或部分组件。由于 Feast 是开源的,您可以部署 Feast Feature Store 并根据自己的需求对其进行自定义,而无需从头开始构建特征存储。选择使用 Feast with Redis 作为其特征存储的公司与自行构建特征存储相比,显著缩短了开发时间和工作量。在下一节中,我们将介绍 Feast 的关键组件。  

Feast 架构和关键组件

如果您查看下面的 Feast 架构图,您会注意到几个关键组件

Feast 注册表:Feast 注册表是一个基于对象存储的注册表,它是所有特征定义及其相关元数据的中央目录。此注册表允许数据科学家搜索、发现和协作新特征。注册表还允许通过 Feast SDK 以编程方式访问。

Feast Python SDK/CLI:SDK 是用于管理版本控制的特征定义、将特征值物化(加载)到在线存储中、从离线存储中构建和检索训练数据集以及提供在线特征的主要用户界面工具。

在线存储:在线存储是一个数据库,仅存储每个实体的最新特征值。在线存储提供低延迟的在线特征值查找。Feast 允许用户将特征数据加载或物化到在线存储中,以便为模型提供最新的特征以进行在线预测。

离线存储:离线存储维护历史时间序列特征值的记录。离线存储持久化已摄取到 Feast 中的批处理数据。这些数据用于生成训练数据集。Feast 不直接管理离线存储,但会对其运行查询。

Redis + Feast diagram

上面的高级架构图描述了以下流程,例如: 

  1. 数据/ML 工程师使用他们首选的工具创建特征。这些特征被摄取到离线存储中。 
  2. 数据/ML 工程师(或 CI/CD 流程)可以将特征定义持久化到中央注册表中。
  3. 数据/ML 工程师(或 CI/CD 流程)可以将特征物化(加载)到 Redis(在线存储)中。 
  4. ML 工程师或数据科学家使用离线特征训练模型。 
  5. ML 工程师或数据科学家部署模型以进行生产以供服务。
  6. 后端系统向推断服务器端点发出请求,推断服务器端点向 Redis(在线存储)发出请求以获取在线特征。 

您可以在 feast.dev 上找到有关 Feast 的更多详细信息,包括其概念、架构和版本。接下来,让我们看看如何快速开始使用 Feast with Redis 构建自己的特征存储。

开始使用 Feast with Redis

选择 Redis 作为 Feast 的在线存储(对于 Feast 版本 >= v0.11)只需几行配置:在 Feast YAML 配置文件中定义 online_store,在 feature_store.yaml 中设置 typeconnection_string 值,如下所示

project: fraud
registry: data/registry.db
provider: local
online_store:
  type: redis
  connection_string: localhost:6379

通过在 YAML 配置文件中添加这两行用于 online_store (type: redis, connection_string: localhost:6379),Feast 将使用 Redis 作为其在线存储。

我们刚刚演示了如何将单个 Redis 实例连接到 Feast。如果您使用的是具有 SSL 启用和密码身份验证的Redis 开源集群,则需要使用不同的 connection_string 值

有关 Redis 配置选项的完整列表,请参见Feast 文档。您还可以查阅Feast 在线存储格式,以更好地了解用于在 Redis 中存储特征值的​​数据模型。

如何了解更多

在 Redis,我们致力于让 Feast 更快、更可靠,以便在规模上交付实时机器学习用例。对于最近的Feast v0.14 版本,我们很高兴帮助核心在线服务路径提速 30%!   

下一步,我们建议您了解公司如何以及在哪些情况下使用带有 Redis 在线存储的特征存储(WixSwiggyComcastZomatoAT&TDoorDashiFoodUber),以及他们如何具体使用 Feast 与 Redis(GojekUdaanRobinhood)。我们还建议您阅读有关新的Azure 特征存储,并查看Azure GitHub 仓库上的快速入门教程。 

我们希望您喜欢本篇关于将 Feast 与 Redis 结合使用的介绍。我们很快就会发布更多资源,但如果您有任何反馈或问题,请随时联系我们