一个 特征存储 是一个集中式位置,您的组织中来自不同团队的数据科学家可以在其中共享 特征 用于机器学习。特征存储允许他们搜索、重用和以规模化方式在生产中提供特征。随着 MLOps 的成熟,特征存储正成为机器学习平台的基石,原因如下:
当企业需要提供基于实时的、基于 ML 的应用程序来支持大量在线流量时,Redis 由于其能够以规模化方式提供超低延迟和高吞吐量,因此最常被选为在线特征存储的基础。我们看到 ML 云平台提供商正在使用 Redis 提供特征存储,例如最近的 H2O AI 特征存储 和微软的 Azure 特征存储。我们还看到许多公司使用 Redis 自行构建特征存储的实现,包括 Wix、Swiggy、Comcast、Zomato、AT&T、DoorDash、iFood 和 Uber。
这些公司拥有庞大的数据集,有数百到数千个特征为规模巨大的 ML 系统提供支持。他们以 Redis 为支持的特征存储支持时间敏感的、对任务至关重要的业务应用程序,其中许多应用程序使用实时数据进行推荐和欺诈检测。
Feast 等开源特征存储实现也选择了 Redis。Redis 被选为 Feast 的在线存储,用于规模化的实时用例,首先是由印尼打车公司 Gojek(与 Google 合作创建了 Feast)采用,之后又被 Feast 的早期采用者采用,例如 Udaan 和 Robinhood。此外,微软在其新的 Azure Feature Store with Feast 中也选择了 Redis 作为在线存储(敬请关注更多详细信息!)。
为了更好地了解特征存储的工作原理以及 Redis 为什么是如此重要的特征存储组件,我们将使用本文的其余部分介绍 Feast,并展示如何使用它使用 Redis 构建自己的特征存储。
Feast(Feature store)是一个开源特征存储,它是 Linux 基金会 AI & 数据基金会 的一部分。Feast 可以从低延迟在线存储或离线存储中提供特征,同时提供中央注册表、存储和服务。这使 ML 工程师和数据科学家能够发现 ML 用例的相关特征,并在生产中提供这些特征。
Feast 以模块化的方式构建,因此您可以采用所有或部分组件。由于 Feast 是开源的,您可以部署 Feast Feature Store 并根据自己的需求对其进行自定义,而无需从头开始构建特征存储。选择使用 Feast with Redis 作为其特征存储的公司与自行构建特征存储相比,显著缩短了开发时间和工作量。在下一节中,我们将介绍 Feast 的关键组件。
如果您查看下面的 Feast 架构图,您会注意到几个关键组件
Feast 注册表:Feast 注册表是一个基于对象存储的注册表,它是所有特征定义及其相关元数据的中央目录。此注册表允许数据科学家搜索、发现和协作新特征。注册表还允许通过 Feast SDK 以编程方式访问。
Feast Python SDK/CLI:SDK 是用于管理版本控制的特征定义、将特征值物化(加载)到在线存储中、从离线存储中构建和检索训练数据集以及提供在线特征的主要用户界面工具。
在线存储:在线存储是一个数据库,仅存储每个实体的最新特征值。在线存储提供低延迟的在线特征值查找。Feast 允许用户将特征数据加载或物化到在线存储中,以便为模型提供最新的特征以进行在线预测。
离线存储:离线存储维护历史时间序列特征值的记录。离线存储持久化已摄取到 Feast 中的批处理数据。这些数据用于生成训练数据集。Feast 不直接管理离线存储,但会对其运行查询。
上面的高级架构图描述了以下流程,例如:
您可以在 feast.dev 上找到有关 Feast 的更多详细信息,包括其概念、架构和版本。接下来,让我们看看如何快速开始使用 Feast with Redis 构建自己的特征存储。
选择 Redis 作为 Feast 的在线存储(对于 Feast 版本 >= v0.11)只需几行配置:在 Feast YAML 配置文件中定义 online_store,在 feature_store.yaml 中设置 type 和 connection_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 在线存储的特征存储(Wix,Swiggy,Comcast,Zomato,AT&T,DoorDash,iFood,Uber),以及他们如何具体使用 Feast 与 Redis(Gojek,Udaan,Robinhood)。我们还建议您阅读有关新的Azure 特征存储,并查看Azure GitHub 仓库上的快速入门教程。
我们希望您喜欢本篇关于将 Feast 与 Redis 结合使用的介绍。我们很快就会发布更多资源,但如果您有任何反馈或问题,请随时联系我们。