配置 FeatureStore 项目

FeatureStore项目对应一个离线数据源和在线数据源,各个项目中彼此独立,而项目内可共享所有的离线、在线特征表。本文为您介绍如何配置特性平台项目。

前提条件

  • 已创建离线和在线数据源,操作详情请参见配置数据源

  • 已将Label表存储于离线数据源中。

    Label表是模型训练时Label所在的表,带有模型训练目标和特征实体的JoinId。在推荐场景中一般是由行为表通过group by user_id/item_id/request_id等操作得到。

    Label表示例(点击查看详情)

    以下为创建一个示例Label表的建表语句,您可以参考以下建表命令对应的表结构了解Label表的常见字段。

    CREATE TABLE IF NOT EXISTS rec_sln_demo_fs_rec_sln_demo_sorting_label_table_v3 
    (
        request_id string
        ,user_id string
        ,page string
        ,net_type string
        ,day_h bigint COMMENT '行为发生在当天的第几小时'
        ,week_day bigint COMMENT '行为发生在当前周的第几天'
        ,day_min string
        ,event_unix_time bigint
        ,item_id string
        ,playtime double
        ,is_click BIGINT
        ,ln_playtime DOUBLE
        ,is_praise BIGINT
    )
    PARTITIONED BY 
    (
        ds string
    )
    LIFECYCLE 90
    ;

新建项目

  1. 进入特征平台页面。

    1. 登录PAI控制台,在左侧导航栏单击数据准备 > 特征平台(FeatureStore)

    2. 在右侧页面中选择工作空间后单击进入FeatureStore

  2. 单击新建项目,在弹出的页面中配置项目参数。

    其中关键参数如下。

    参数

    说明

    离线数据源

    选择已创建的离线数据源。

    在线数据源

    选择已创建的在线数据源。

    离线数据表生命周期

    通过FeatureStore自动创建、存储于离线数据源MaxCompute中的表的生命周期。

  3. 单击提交,完成项目创建。

新建特征实体

特征实体(FeatureEntity)代表了一组特征表的集合,以推荐系统场景为例,可以设置两个特征实体useritem。

  1. 在特征项目列表中,单击特征项目名称,进入项目详情页面。

  2. 特征实体页签中单击新建实体,在弹出的页面中配置特征实体参数。

    其中关键参数配置指导如下。

    参数

    说明

    特征实体名称

    自定义。以推荐场景为例,可配置两个特征实体,名称分别为user、item。

    Join Id

    Join Id是关联特征视图到特征实体的特征表字段,每个特征实体都会有一个Join Id , 通过Join Id可以关联多个特征视图的特征。

    说明

    每一个特征视图都有一个主键(索引键)来获取其下面的特征数据,但是特征视图的索引键可以和JoinId的名称不一致。

    以推荐场景为例,Join Id可以配置为user表和item表的主键user_id、item_id。

  3. 单击提交,完成创建。

新建特征视图

特征视图(FeatureView)是一组特征,包含一组特征以及这些特征的衍生特征的信息。一个特征视图是特征实体的全量特征集合的一个子集,离线特征表和在线特征表的映射。

  1. 在特征项目详情页面的特性视图页签,单击新建特征视图

  2. 在弹出的页面中配置视图参数,完成后单击提交,完成视图创建。

    • 创建离线特征视图:将离线特征数据注册FeatureStore中。

    • 创建在线特征视图:将实时特征数据注册FeatureStore中。关于实时特征更详细的内容介绍,请参见实时特征内容介绍

    离线视图与在线视图的核心配置参数请参见下文。

新建离线特征视图

核心配置参数如下。

参数

说明

类型

选择离线时,表明此特征视图是将离线特征数据注册FeatureStore中的视图表。

写入方式

  • 使用离线表:使用一个已经存储在离线数据源中的特征表的表结构,作为离线特征视图的表结构

    选择此种方式后,您还需根据界面选择参考使用的离线表所在的数据源及表名称,并配置视图字段属性。

  • 自定义表结构:自定义本次新建离线视图的表结构。

    选择此种方式后,您需要根据界面提示手动添加视图字段并配置字段属性。

待配置的字段属性包括:

  • 主键:设置视图的主键字段。

  • 事件时间&分区字段:用于标注特征的时间周期范围,需要至少设置一个事件时间或分区字段。

同步在线特征表

选择是否需要将此视图中的特征数据自动同步到同特征项目的在线数据源中。

特征实体

选择特征视图关联的特征实体。

说明

多个特征视图可以关联一个特征实体。

特征生命周期

设置特征视图的生命周期。设置完成后,后续同步写入实时数据源中的特征生命周期即为此处配置的生命周期。

新建实时特征视图

核心配置参数如下。

参数

说明

视图名称

参照控制台界面提示,进行自定义配置。

类型

选择实时时,表明此特征视图是将在线特征数据注册FeatureStore中的视图表。

特征实体

选择特征视图关联的特征实体。

说明

多个特征视图可以关联一个特征实体。

写入方式

在线特征视图仅支持自定义表结构的写入方式,即自定义本次新建离线视图的表结构。

选择此种方式后,您需要根据界面提示手动添加视图字段并配置字段属性。

待配置的字段属性包括:

  • 主键:设置视图的主键字段。

  • 事件时间&分区字段:用于标注特征的时间周期范围,需要至少设置一个事件时间或分区字段。

特征字段

您可以根据实际需要的字段数来填写。

  • 当使用FeatureDB时,您可以不填写事件时间字段,FeatureDB会默认新建事件时间字段,并取值为实际特征写入时间。您也可以设置 event_time 事件时间字段,写入特征时设置该事件时间。

  • 当不使用FeatureDB时,需要填写事件时间字段,并通过后续写入其事件时间对应的值,用于在离线导出样本时使用。

特征生命周期

一般需要大于1,默认为30,单位为天。

高级配置

使用JSON方式进行高级选项的配置。当前支持配置save_original_field字段。

  • {"save_original_field":"true"} 时,表示MaxComputeschema与 GraphCompute节点的schema保持一致。

  • {"save_original_field":"false"} 时,表示需要通过FeatureStore进行schema映射。

说明

由于GraphCompute中各个字段名称长度不能超过30个字符,当MaxCompute字段名称较长时,需要配置{"save_original_field":"false"}

新建Label

Label表是模型训练时Label所在的表,带有模型训练目标和特征实体的JoinId。在推荐场景中一般是由行为表通过group by user_id/item_id/request_id等操作得到。

  1. 在特征项目详情页面的Label页签,单击新建Label

  2. 在弹出的页面中,选择Label表所在的数据源及Label表名。

  3. 配置Label表字段,完成后单击提交

    字段配置

    说明

    特征字段

    Label表中如果存在某些特征的话,可勾选对应字段为特征字段。

    FG保留字段

    当前阶段可不做配置。

    事件时间

    勾选Label表中记录行为产生的时间戳字段。

    Label字段

    勾选Label表中的Label字段。

    分区字段

    勾选Label表中的分区字段。

新建模型特征

模型特征是指定训练上线过程中所使用的特征的集合,选择好特征创建模型后,会在MaxCompute中创建一张train set表,用于离线训练。后续您也可以在EAS、PAI-rec中指定FeatureStore的模型特征,即可自动拉取用于推理的特征数据。

  1. 在特征项目详情页面的模型特征页签,单击新建模型特征

  2. 在弹出的页面中配置模型特征参数,完成后单击提交

    核心参数如下。

    参数

    说明

    选择特征

    选择当前离线视图中的特征,并配置特征别名。

    Label表名称

    选择已创建的Label表名称。

    导出表名

    提交后,后续会在MaxCompute中自动创建一张train set表,用于离线训练。

实时特征内容介绍

基本概念

实时特征一般是指会实时变化的特征,可能会在毫秒级时间内发生改变,通常在服务端等系统中迅速生成或更新,并立即用于处理和决策的特征。实时特征的生成和使用通常发生在实时数据流分析或系统中,具有高时效性和快速响应的特点。

实时特征通常是从数据流中提取的,使用数据流系统(例如Flink)可以计算并生成实时特征,以确保特征尽可能反映当前的状态。实时特征要求整个链路具有高性能和低延迟的特点,并且实时特征会动态更新,系统会不断重新计算这些特征。

应用场景

实时特征一般具有以下应用场景:

  • 在线广告:根据用户当前的浏览行为实时调整广告内容。

  • 欺诈检测:在金融交易中实时检测可疑行为,并触发警报或阻止交易。

  • 个性化推荐:根据用户当前的活动和历史数据实时更新推荐列表。

  • IoT系统:在物联网系统中实时监测和控制设备,生成和使用实时特征以响应环境变化。

实时特征在推荐广告等机器学习系统中应用

实时特征写入过程

在特征平台(FeatureStore)中新建实时特征视图后,会自动在在线数据引擎中新建一张同样Schema的表,用于实时特征数据的写入和读取。当使用FeatureDB、TableStore、HologresGraphCompute等数据源时,客户后端可以接入阿里云DataHub消息队列,通过DataHub将数据传输到Flink,在Flink进行实时特征的处理和计算后,可以将实时特征的结果写入到对应的在线数据源的表中(您可以在实时特征视图详情页中查看具体表名)。

线上特征的读取

当使用EasyRec Processor时,其内置FeatureStore Cpp SDK,只需要指定模型特征名(fs_model),即可自动分析出哪些特征是实时特征,从而自动读取实时特征。当使用FeatureStore Go SDK或者FeatureStore Java SDK时,可以根据SDK的设置进行对应的特征读取。

离线样本的导出

特征平台会自动将特征视图对应的离线数据引擎中的表联接后导出。对于实时特征视图,当使用FeatureDB时,FeatureDB会自动把在线写入的数据写入到离线数据引擎对应的离线表中。当不使用FeatureDB时,需要您自己建任务将数据写入到离线数据引擎对应的离线表中。或者使用PAI-Rec中的推荐算法定制,可以离线生产出模拟实时数据,作为对应的实时特征视图离线表数据。

特征平台实时特征视图

实时特征视图应用流程

image

特征平台中的实时特征视图专门用来处理实时变化的特征,它通过DataHub消息队列和Flink实时写入在线特征,然后使用EasyRec Processor实时轮询读取特征或者通过FeatureStore SDK实时读取特征,从而能够在下游实时感知到特征的毫秒级变化。

导出操作

您可以选择多个实时特征视图、离线特征视图来创建模型特征,创建好模型特征后可以进行导出。特征平台支持自动导出,实时特征视图中对应离线数据表的来源根据使用的场景有不同的差异,具体如下:

在线数据源

FeatureDB

Hologres/TableStore/GraphCompute

推荐引擎

都可以

PAI-REC (使用推荐算法定制)

其它

导出方案

直接使用特征平台导出。

将推荐算法定制的模拟数据导入对应的实时特征视图的离线表后,使用特征平台导出。

需手动导出实时特征视图对应的离线表数据,使用特征平台导出。

同步操作

同步操作可以分为以下两种:

相关文档

配置好FeatureStore项目后,如何应用FeatureSotre,详情请参见在推荐系统中应用FeatureStore管理特征