dot Redis 8 已发布,它是开源的

了解更多

使用 Redis 构建特征库:Feast 与 Redis 简介

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

  • 特征是使机器学习系统有效的核心。工程化这些特征既复杂又耗时。特征库通过允许工程师在不同机器学习用例中重用特征来节省时间并提高机器学习系统成果。
  • 特征库允许工程师在训练和生产中重用相同的特征,确保工程化特征的一致性和可复现性。 
  • 低延迟特征服务是实时用例的关键。特征库从在线存储向机器学习模型提供特征,以实现低延迟的实时推理。 

Redis 为在线特征库提供支持

当公司需要提供实时、基于机器学习的应用以支持大量在线流量时,Redis 最常被选为在线特征库的基础,因为它能够以大规模、高吞吐量提供超低延迟。我们看到机器学习云平台提供商使用 Redis 提供特征库,最近的例子有 H2O AI Feature Store 和微软的 Azure Feature Store。我们还看到许多公司自己构建基于 Redis 的特征库实现,包括 WixSwiggyComcastZomatoAT&TDoorDashiFoodUber。‍

这些公司拥有庞大的数据集,包含数百到数千个特征,为大规模机器学习系统提供数据。他们基于 Redis 的特征库支持时间敏感、关键任务的业务应用,其中许多用于推荐和欺诈检测,使用实时数据。

Feast 等开源特征库实现也选择了 Redis。Redis 被选为 Feast 在大规模实时用例中的在线存储,最初由印度尼西亚打车公司 Gojek(与 Google 合作创建 Feast 的初始方)选用,后来又被 Feast 的早期采用者如 UdaanRobinhood 采用。此外,微软也为其新的 用于 Feast 的 Azure Feature Store 选择了 Redis 作为在线存储(更多详细信息敬请期待!)。

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

什么是 Feast?

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

Redis + Feast diagram

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

Feast 架构和关键组件

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

Feast 注册表: Feast 注册表是基于对象存储的注册表,它是所有特征定义及其相关元数据的中央目录。该注册表允许数据科学家搜索、发现新的特征并进行协作。注册表还允许通过 Feast SDK 进行程序化访问。

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

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

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

Redis + Feast diagram

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

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

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

开始使用 Feast 和 Redis

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

请参阅Feast 文档以获取 Redis 配置选项的完整列表。您还可以查阅Feast 在线存储格式,以便更好地理解在 Redis 中存储特征值所使用的数据模型。

如何了解更多

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

接下来的步骤,我们建议了解公司如何以及在哪些用例中使用带有 Redis 作为在线存储的特征库(Wix, Swiggy, Comcast, Zomato, AT&T, DoorDash, iFood, Uber),以及他们具体如何使用带有 Redis 的 Feast(Gojek, Udaan, Robinhood)。我们还建议阅读关于新的 用于 Feast 的 Azure Feature Store 以及查看 Azure GitHub 仓库上的快速入门教程。 

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