模型打分一致性

为确保线上服务能够正确、完整地获取模型所需的所有离线特征,以及线上的特征处理逻辑与离线训练时严格一致,需要在精排模型上线前,执行特征一致性校验。注意,该特征一致性校验只能评判离线特征的使用是否正确,实时特征难以评判。

前提条件

已经部署了精排模型服务,且已经部署了PAI-Rec引擎服务。

配置并开启特征一致性

  1. 在左侧菜单栏中单击模型打分一致性创建任务,然后配置以下关键参数。

    image

    • PAI-EAS模型服务名称:选择的是模型服务,而非引擎服务。

    • 采样比例:根据流量大小设定,如果流量较大,可以设置较小值,以免对线上产生压力。

    image

    • FeatureStore:相关配置按照您实际情况填写。

    • 关联序列特征的物品特征视图:如果模型使用了序列特征,则必须配置该选项。

    • 是否需要生成zip:选择。当选择是时,会在OSS对应路径产生一致性任务的包,其中包含节点详情,便于后续定位问题。

    image

    在高级配置中,如果使用的是非标准的EasyRec或者TorchEasyRec包,可以填写自定义EasyRec包路径。

  2. 当任务创建完成,单击运行任务,选择对应的运行环境,和接收日志的时长。

    重要

    如果运行的环境没有流量,则需要在任务开启后手动在对应的环境上打一些请求,否则不能接收到在线日志,难以进行下游的评判任务。

结果查看并定位

任务失败

任务失败示例如下。出现该情况可以联系PAI-Rec技术支持人员进行问题定位和修复。

image

任务成功,离线在线特征完全一样

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

image

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

image

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

image

任务成功,但离线在线特征有差异

如下图所示离线和在线特征不一致,此时需要进一步分析。

image

导入一致性任务的zip

  1. 单击对应任务的查看配置按钮,查看task_id。

    image

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

    image

  3. DataWorks迁移助手中导入该zip包。

    image

    imageimage

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

    imageimage

不同节点作用

导入到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_xxxxfeature_reply_xxxx

  • feature_backflow_xxxx表中记录的是PAI-Rec引擎调用模型服务的特征,user_feature记录调用模型服务时发送的user侧特征,item_feature记录了召回item从接口传入的特征以及调用模型服务后的结果分数。

  • feature_reply_xxxx表记录的是模型服务不同阶段的特征,raw_features是调用模型所有特征fg encoded前的特征。generate_featuresraw feature经过fg encoded之后的特征。

获取特征来源

查看05_consistency_create_sample_table_xxx节点,可以看到model_name,如下图所示。

image

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

image

image

找到不一致特征并比对

通过以上内容可以看到,不一致特征来自于label表或者其余的离线表。

一般来说不一致特征不会来自label表,特殊情况联系PAI-Rec技术支持人员。

如果是离线表,先查看对应特征视图,一般特征主键会显示在特征比对页面,如果不显示可以检索feature_reply。获取其余的特征主键,查看特征视图的特征是否和回流的一致。接下来可以比对离线表的特征是否和回流一样。如果二者都有,则查看同步任务是否正常。

常见的特征不一致性原因

  1. 离线特征表未产出。

  2. 离线特征表空跑调度,有分区但没数据,或者上游数据缺失。

  3. 离线特征表产出但未及时同步。

  4. 引擎或者实验ab配置的模型特征和实际训练使用的不一致。