为确保线上服务能够正确、完整地获取模型所需的所有离线特征,以及线上的特征处理逻辑与离线训练时严格一致,需要在精排模型上线前,执行特征一致性校验。注意,该特征一致性校验只能评判离线特征的使用是否正确,实时特征难以评判。
前提条件
已经部署了精排模型服务,且已经部署了PAI-Rec引擎服务。
配置并开启特征一致性
在左侧菜单栏中单击模型打分一致性,创建任务,然后配置以下关键参数。

PAI-EAS模型服务名称:选择的是模型服务,而非引擎服务。
采样比例:根据流量大小设定,如果流量较大,可以设置较小值,以免对线上产生压力。

FeatureStore:相关配置按照您实际情况填写。
关联序列特征的物品特征视图:如果模型使用了序列特征,则必须配置该选项。
是否需要生成zip包:选择是。当选择是时,会在OSS对应路径产生一致性任务的包,其中包含节点详情,便于后续定位问题。

在高级配置中,如果使用的是非标准的EasyRec或者TorchEasyRec包,可以填写自定义EasyRec包路径。
当任务创建完成,单击运行任务,选择对应的运行环境,和接收日志的时长。
重要如果运行的环境没有流量,则需要在任务开启后手动在对应的环境上打一些请求,否则不能接收到在线日志,难以进行下游的评判任务。
结果查看并定位
任务失败
任务失败示例如下。出现该情况可以联系PAI-Rec技术支持人员进行问题定位和修复。

任务成功,离线在线特征完全一样
点击该任务查看结果。如果离线打分有分数,但是在线打分为0,一般是超时的原因,如下图所示。可以继续查看下一页。

在离线和在线都有分数时,观察ScoreDiff。如果ScoreDiff有差异,但是差异很小,则表示离线和在线使用特征完全一致。单击特征对比,特征一般都相同。

如果序列特征出现分隔符号不一样,其余都一样的情况,属于正常现象,如下图所示。

任务成功,但离线在线特征有差异
如下图所示离线和在线特征不一致,此时需要进一步分析。

导入一致性任务的zip包
单击对应任务的查看配置按钮,查看task_id。

在OSS中找到该任务的zip包并下载到本地,如下图在对应的OSS路径下,存在
feature_consistency/{task_id}的路径,该路径下的zip包即是该特征一致性任务的业务流。
在DataWorks的迁移助手中导入该zip包。



进入DataStudio,在consistency下可以看到导入的以对应task_id为后缀的一致性任务。


不同节点作用
导入到DataStudio中的不同节点作用如下:
01_consistency_create_intersection_table_xxx:对回流的特征数据进行清洗。04_consistency_create_label_table_xxx:构建样本,获取取自回流特征表的特征是哪些。05_consistency_create_sample_table_xxx:导出样本表,它会构建一个model,并可以观察到每个特征来源的数据表。07_consistency_create_predict_script_xxx:对导出的样本进行离线预测。08_consistency_create_score_diff_table_xxx:获取离线和在线分值差异最大的topk的样本。10_consistency_create_compare_fg_feature_table_xxx:获取差异最大样本中,有差异的特征名称以及对应的在线值。
如果还存在其余节点,可以查看其内容了解具体作用。
回落特征
打开01_consistency_create_intersection_table_xxx节点,可以看到其中有两张表:feature_backflow_xxxx、feature_reply_xxxx。
feature_backflow_xxxx表中记录的是PAI-Rec引擎调用模型服务的特征,user_feature记录调用模型服务时发送的user侧特征,item_feature记录了召回item从接口传入的特征以及调用模型服务后的结果分数。feature_reply_xxxx表记录的是模型服务不同阶段的特征,raw_features是调用模型所有特征fg encoded前的特征。generate_features是raw feature经过fg encoded之后的特征。
获取特征来源
查看05_consistency_create_sample_table_xxx节点,可以看到model_name,如下图所示。

在对应FeatureStore的模型特征中可以找到该model。单击导出可以看到导出的sql,根据sql内容即可知道特征来源。


找到不一致特征并比对
通过以上内容可以看到,不一致特征来自于label表或者其余的离线表。
一般来说不一致特征不会来自label表,特殊情况联系PAI-Rec技术支持人员。
如果是离线表,先查看对应特征视图,一般特征主键会显示在特征比对页面,如果不显示可以检索feature_reply。获取其余的特征主键,查看特征视图的特征是否和回流的一致。接下来可以比对离线表的特征是否和回流一样。如果二者都有,则查看同步任务是否正常。
常见的特征不一致性原因
离线特征表未产出。
离线特征表空跑调度,有分区但没数据,或者上游数据缺失。
离线特征表产出但未及时同步。
引擎或者实验ab配置的模型特征和实际训练使用的不一致。