全部产品
Search
文档中心

人工智能平台 PAI:特征平台(FeatureStore)

更新时间:Dec 03, 2024

FeatureStore作为PAI产品中心化的数据管理和共享平台,用于组织、存储和管理机器学习和AI训练中使用的特征数据。FeatureStore可以方便地向多人、多团队共享特征,保证离线在线特征数据的一致性,并提供高效的在线特征访问。

什么是FeatureStore

FeatureStore是PAI平台下的特征平台管理工具,用于存储和管理机器学习特征。

FeatureStore整合了阿里云上DataHub、Flink、Hologres、Graphcompute等产品,为用户提供一整套的特征管理功能,包括从DataHub接收用户行为日志、物品和用户实时更新的属性特征,可直接同步到MaxCompute,也可以通过Flink处理后写入到相应的在线存储中,最终推荐引擎、用户增长、金融风控等应用通过调用FeatureStore SDK来访问在线存储中的特征数据。

下图从整体上介绍来自MaxCompute、DataHub的输入数据,经过中间特征计算和模型样本管理、发布到线上存储供各种客户端应用的过程。

image

基本概念

  • 特征实体

    特征实体(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中。

image

地域限制

FeatureStore支持的地域包括:华北2(北京)、华东2(上海)、华东1(杭州)、华南1(深圳)、中国(香港)。

操作流程

  1. 创建数据源。

    数据源包含离线数据源与在线数据源,操作详情请参见配置数据源

  2. 创建项目,并配置特征实体、特征视图、Label表等,产出模型特征train set表(训练数据集)。操作详情请参见配置FeatureStore项目

  3. 查看任务详情。

    您可以在任务中心中查看各任务的状态与任务详情,操作详情请参见任务中心

  4. 将数据同步到线上存储,具体操作请参见DSW Gallery案例

  5. 需要在Java/Go在线引擎中读取和使用FeatureStore在线数据,请搜索钉钉群34415007523,咨询技术人员。

联系我们

如果您在使用FeatureStore时遇到问题,可以搜索钉钉群号:34415007523,进入答疑群联系群技术人员进行咨询。