Feast是一个为机器学习工作流设计的开源特征存储系统。它提供了一个集中式平台,用于定义、管理和提供特征(即机器学习模型使用的输入变量),涵盖训练和在线推理两个阶段。通过标准化特征的存储和访问,Feast旨在降低特征工程的操作开销,并确保模型训练期间使用的特征与生产环境中服务的特征保持一致。
Feast最初由Gojek开发,并于2019年作为开源项目首次发布。后来,它成为Linux基金会AI与数据项目的一部分,并得到了Tecton等公司的贡献,Tecton由Feast的原始创建者共同创立。项目名称是“Feature Store”的缩写,反映了其核心用途。
核心概念
Feast将机器学习特征组织成一个结构化框架。主要实体包括:
- 特征视图:共享同一数据源和时间窗口的特征的逻辑分组。每个特征视图定义了生成特征所应用的模式、源数据和转换。
- 实体:标识特征主体的键,例如用户ID或交易ID。实体将特征链接到特定数据点。
- 特征服务:一组特征视图的集合,可以一起用于为特定模型或应用提供特征。
- 数据源:底层存储系统,例如BigQuery、Redshift或Kafka,从中读取原始数据以计算特征。
架构与组件
Feast的架构由几个关键组件组成,它们协同工作以管理特征生命周期:
- Feast Core:中央注册表,存储关于特征视图、实体和数据源的元数据。它充当特征定义的系统记录。
- Feast Serving:为在线推理提供低延迟特征访问的服务。它从在线存储中检索特征,并将其返回给模型服务系统。
- Feast Job Service:管理从批处理和流式数据源计算特征的组件,填充离线和在线存储。
- 离线存储:用于历史特征数据的存储系统,通常用于训练数据集。它支持时间点正确的连接,以避免数据泄漏。
- 在线存储:快速访问的存储系统,例如Redis或DynamoDB,用于实时提供特征以进行在线预测。
使用与工作流
Feast通常用于以下工作流:
- 定义特征:数据科学家或工程师使用Python或YAML配置文件定义特征视图和实体。
- 应用:将定义应用到Feast注册表,更新元数据。
- 物化:Feast从数据源计算特征值,并将其存储在离线和在线存储中。
- 训练:从离线存储中检索历史特征以创建训练数据集。
- 服务:在推理期间,模型服务系统通过Feast Serving查询在线存储以获取最新的特征值。
该工作流使团队能够在多个模型中重用特征,并确保在训练和生产中使用相同的特征定义。
生态系统与集成
Feast与各种数据和机器学习工具集成。它支持云数据仓库,如Google Cloud BigQuery、Amazon Web Services Redshift和Microsoft Azure Synapse作为离线存储。对于在线服务,它可以使用Redis、DynamoDB或Firestore。Feast还与流行的机器学习框架(如TensorFlow和PyTorch)配合使用,并可部署在Kubernetes上以实现可扩展性。
Feast经常与其他特征存储系统(如Tecton和Hopsworks)进行比较,但它通过开源和供应商中立的特点脱颖而出。这使其成为希望避免锁定并完全控制特征基础设施的组织的热门选择。
社区与采用
Feast在机器学习社区中获得了显著的采用。Gojek、Walmart和Deliveroo等公司使用它来驱动其推荐和个性化系统。该项目在GitHub上拥有活跃的社区,定期发布版本,并得到广泛开发者的贡献。Feast的文档和教程在机器学习社区中被广泛引用,作为特征管理的标准方法。
截至2024年,Feast继续发展,新增功能和改进,包括对流式特征的更好支持以及与大语言模型工作流的增强集成。随着更多组织采用特征存储来简化其机器学习操作,它在人工智能生态系统中的作用预计将进一步增长。