Feast 项目介绍
Feast(全称:Feature Store)是一个开源的特征存储平台,专为机器学习而设计。Feast 提供了一种快速而有效的途径,以便管理已有的基础设施,将分析数据生产化,用于模型训练和在线推断。
主要功能
Feast 帮助机器学习平台团队实现以下功能:
- 一致性地提供特征用于训练和服务:通过管理一个离线存储(用于处理历史数据以进行批量评分或模型训练),一个低延迟的在线存储(用于实时预测),以及一个经受考验的特征服务器(用来在线提供预计算的特征)。
- 防止数据泄漏:通过生成时间点正确(point-in-time correct)的特征集,确保模型在训练过程中不会接触未来的特征值,数据科学家因此可以专注于特征工程,而不是数据集的连接逻辑调试。
- 将机器学习与数据基础设施解耦:提供一个数据访问层,将特征的存储与检索分开,从而确保模型的移动性,不论是从训练到服务、批量模型到实时模型,或是从一个数据基础设施系统迁移到另一个。
系统架构
Feast 的基本部署架构为简单且实用。该架构可以根据需求修改以适用不同的云服务提供商如 Snowflake、GCP、AWS 等。
快速入门步骤
这里提供了快速开始使用 Feast 的基本步骤:
-
安装 Feast
使用 pip 命令进行安装:pip install feast
-
创建特征库 初始化并进入特征库目录:
feast init my_feature_repo cd my_feature_repo/feature_repo
-
注册特征定义并设置特征存储 执行命令上传配置:
feast apply
-
在 Web UI 中探索数据(实验性功能)
feast ui
-
构造训练数据集 在 Python 环境中加载历史特征数据:
from feast import FeatureStore import pandas as pd from datetime import datetime entity_df = pd.DataFrame.from_dict({ "driver_id": [1001, 1002, 1003, 1004], "event_timestamp": [ datetime(2021, 4, 12, 10, 59, 42), datetime(2021, 4, 12, 8, 12, 10), datetime(2021, 4, 12, 16, 40, 26), datetime(2021, 4, 12, 15, 1, 12) ] }) store = FeatureStore(repo_path=".") training_df = store.get_historical_features( entity_df=entity_df, features=[ 'driver_hourly_stats:conv_rate', 'driver_hourly_stats:acc_rate', 'driver_hourly_stats:avg_daily_trips' ], ).to_df() print(training_df.head())
-
加载特征值到在线存储 获取当前时间,然后执行增量物化命令:
CURRENT_TIME=$(date -u +"%Y-%m-%dT%H:%M:%S") feast materialize-incremental $CURRENT_TIME
-
低延迟地读取在线特征 在 Python 中读取特征:
from pprint import pprint from feast import FeatureStore store = FeatureStore(repo_path=".") feature_vector = store.get_online_features( features=[ 'driver_hourly_stats:conv_rate', 'driver_hourly_stats:acc_rate', 'driver_hourly_stats:avg_daily_trips' ], entity_rows=[{"driver_id": 1001}] ).to_dict() pprint(feature_vector)
未来发展方向
Feast 正在不断发展和完善。未来的功能开发计划包括更多的数据源支持、功能工程增强、流数据处理能力、特征服务优化以及特征管理工具等。
Feast 是一个社区项目,欢迎任何形式的贡献。开发者可以通过提供新的功能、改进现有代码、或参与社区讨论来帮助完善该项目。希望通过社区的共同努力,进一步推动机器学习项目的数据处理与特征管理的进步。