FeatureStore作为PAI产品中心化的数据管理和共享平台,用于组织、存储和管理机器学习和AI训练中使用的特征数据。FeatureStore可以方便地向多人、多团队共享特征,保证离线在线特征数据的一致性,并提供高效的在线特征访问。
什么是FeatureStore
FeatureStore是PAI平台下的特征平台管理工具,用于存储和管理机器学习特征。
FeatureStore整合了阿里云上DataHub、Flink、Hologres、Graphcompute等产品,为用户提供一整套的特征管理功能,包括从DataHub接收用户行为日志、物品和用户实时更新的属性特征,可直接同步到MaxCompute,也可以通过Flink处理后写入到相应的在线存储中,最终推荐引擎、用户增长、金融风控等应用通过调用FeatureStore SDK来访问在线存储中的特征数据。
下图从整体上介绍来自MaxCompute、DataHub的输入数据,经过中间特征计算和模型样本管理、发布到线上存储供各种客户端应用的过程。
基本概念
特征实体
特征实体(FeatureEntity)一组特征表集合的名称,例如在推荐场景下,可以设置两个特征实体user和item,因为所有的表特征要么属于user侧,要么属于item侧。
特征视图
特征视图(FeatureView)是一组特征,包含一组特征以及这些特征的衍生特征的信息。一个特征视图是特征实体的全量特征集合的一个子集,离线特征表和在线特征表的映射。
Join Id
Join Id是关联特征视图到特征实体的特征表字段,每个特征实体都会有一个Join Id , 通过Join Id可以关联多个特征视图的特征。
说明每一个特征视图都有一个主键(索引键)来获取其下面的特征数据,但是特征视图的索引键可以和JoinId的名称不一致。
以推荐场景为例,Join Id可以配置为user表和item表的主键user_id、item_id。
Label表
Label表是模型训练时Label所在的表,带有模型训练目标和特征实体的JoinId。在推荐场景中一般是由行为表通过
group by user_id/item_id/request_id
等操作得到。
应用场景
推荐系统和广告排序场景:该场景下的特征数据包括用户的浏览历史、购买记录、用户画像等,通过使用FeatureStore,可以集中更新和管理多版本的实时用户特征和物品特征,方便模型提高特征的及时性,从而提高模型效果。应用于广告推荐和定向投放,有助于提高广告精准度和投放效果。
用户增长或风控场景:该场景下的特征数据包括用户的个人信息、交易行为、信用记录等,通过使用FeatureStore,可以有效管理和处理多版本的用户特征,结合像XGB、GBDT等机器学习模型或深度学习模型进行风险评估,有助于提高业务风控的准确性和效率。
搜索引擎排序场景:该场景下的特征数据包括关键词匹配度、点击率、销售量等,通过使用FeatureStore训练排序模型,对Elasticsearch/OpenSearch等搜索引擎召回结果,用召回结果请求EAS中TensorFlow模型的打分服务,根据用户的搜索意图和个人喜好,为其提供更加精准和个性化的搜索结果。
离线KV数据同步到线上存储场景:该场景下的特征数据包括商品属性表、用户属性等,通过使用FeatureStore,简化离线数据到线上存储的同步调度任务。
功能特性
数据源能力
FeatureStore封装了整个特征到模型的流程,支持多种离线和实时数据源,便于您在FeatureStore中进行端到端特征表注册、管理操作,当前支持的数据源包括:
离线数据源:MaxCompute
在线数据源:Hologres、GraphCompute、TableStore
您将特征表注册到FeatureStore后:
FeatureStore可以自动完成在线和离线表的构建,保证在线和离线的一致性。
在保证特征表只存一份的情况下,能够向多人共享特征,减少资源成本。
FeatureStore还可以节省时间成本,比如导出训练表、导入数据至OnlineStore的操作,原先需要复杂的操作,当前在FeatureStore中都可以通过一行代码完成。
推荐服务引擎对接
FeatureStore EasyRec深度集成,可以方便、高效地进行FG(特征工程)和模型训练,并且能够直接部署到线上(EasyRec的EAS Processor),可以做到在短时间内搭建起一套前沿的推荐系统,并取得优良的效果。EasyRec能够提供物品特征表的内存Cache,并提供高效的模型打分。
EasyRec Processor中集成的FeatureStore Cpp SDK对于大规模场景有专门的优化,使用FeatureStore后:
内存占用:EasyRec Processor内置的FeatureStore Cpp SDK针对特征存储进行了优化,相比原生内存缓存,能有效节省50%的内存。尤其在处理大量特征时,节省效果更为显著,有助于降低资源消耗。
拉取特征时间:离线特征视图可将特征快速缓存至内存cache,相比在线数据源,速度快超过5倍,可以在增加速度的同时减少对在线数据源的压力。并且由于离线数据源的高稳定性,实际测试可以同时扩容至数百个EAS实例,并且每个实例都可以在几分钟内加载完所有特征。因此扩容时不会给在线存储带来很大压力。
模型打分耗时:模型评分实时从优化的缓存中提取特征,借助FeatureStore Cpp SDK的专项优化,在使用FeatureStore的情况下,tp100性能显著提升,打分稳定性增强,超时情况减少。
管理离线和在线特征数据
离线特征包括用户和物品的属性特征、统计特征;实时特征包括新用户或新物品上线,通过Flink直接写入到类似Hologres的在线存储中,也包括按照时间窗统计的特征(如1小时的点击、转发、购买数量、转化率等)。其中线上存储包括Hologres、GraphCompute、TableStore等。
共享新旧特征
当算法或BI研发出一组新的用户特征/物品特征的时候,可以设计新的ModelFeature关联训练集需要的新旧特征,通过FeatureStore SDK导出样本供离线训练,也可以通过FeatureStore SDK发布到线上存储供线上服务使用。当多个模型引用同一个特征视图的时候,线上存储始终只有一份。管理特征对于算法工程价特征非常友好,在增加特征迭代优化模型的时候非常有用。
管理实时统计特征和用户序列特征
一般模型特征的复杂度、实时性都是逐步增加的,因此管理Flink实时计算得到的实时统计特征和用户行为序列特征非常必要。FeatureStore定义了离线用户序列特征,例如用户点击过的物品ID序列。只有物品ID序列也是不够的,在模型中常使用到物品的属性特征(SideInfo),而SideInfo在线上通过网络传输数据量较大,而在EasyRec中通过FeatureStore SDK缓存物品特征,节约了推理响应时间、提高了推理性能。
提供多语言SDK
FeatureStore提供了GO/Java/Python SDK,可以帮助用户在PAI-REC和EasyRecProcessor联合解决方案中使用FeatureStore的功能;通过Java SDK帮助用户在自己的服务端(搜索、推荐、风控等引擎)中调用EasyRecProcessor或者其他模型打分的引擎;支持用户通过Python SDK访问在线存储中的数据去完成数据分析、建模等工作。
自动化特征工程
FeatureStore计划提供自动化的特征工程功能,通过机器学习技术,自动挖掘新特征,减少研发团队的手动特征工程工作量。
特征监控
FeatureStore计划提供特征的监控和报警功能,及时发现和解决特征的异常和问题,减少团队的故障排查和修复时间。
功能原理
阿里云FeatureStore为您提供数据源能力,可分别对接离线存储和在线存储产品,便于统一读写并管理离线、在线特征数据。
您可以将离线特征表、在线特征表注册至FeatureStore的特征视图中,通过特征视图来汇总、映射离线、在线特征数据。
您可以将Label表存储在离线存储MaxCompute中,通过离线数据源注册至FeatureStore中,通过注册后的FeatureStore Label表映射实际Label表数据。
阿里云FeatureStore为您提供特征项目和特征实体功能,通过特征实体的Join Id来关联各个项目中的特征视图,将一个特征实体的所有特征进行关联,最终结合Label表产出模型特征表Train Set表,并将Train Set表存在离线存储MaxCompute中。
地域限制
FeatureStore支持的地域包括:华北2(北京)、华东2(上海)、华东1(杭州)、华南1(深圳)、中国(香港)。
操作流程
创建数据源。
数据源包含离线数据源与在线数据源,操作详情请参见配置数据源。
创建项目,并配置特征实体、特征视图、Label表等,产出模型特征train set表(训练数据集)。操作详情请参见配置FeatureStore项目。
查看任务详情。
您可以在任务中心中查看各任务的状态与任务详情,操作详情请参见任务中心。
将数据同步到线上存储,具体操作请参见DSW Gallery案例。
需要在Java/Go在线引擎中读取和使用FeatureStore在线数据,请搜索钉钉群34415007523,咨询技术人员。
联系我们
如果您在使用FeatureStore时遇到问题,可以搜索钉钉群号:34415007523,进入答疑群联系群技术人员进行咨询。