当我们完成召回,过滤(曝光、状态)等, 为了性能考虑,需要对 item 数量进行裁剪才能进入排序阶段。有时候可以通过简单的数量调整可以进行数量裁剪,比如使用 数量调整过滤(AdjustCountFilter), 优先级数量调整过滤(PriorityAdjustCountFilter) 来手动调整数量。
目前 PAI-REC 也支持通过调用模型来得到粗排得分,通过得分来进行数量裁剪。粗排使用模型可以得到更个性化、更精细的召回。
粗排大致分为三个阶段,每个阶段都不是必须,看实际场景设置。
特征加载, 这里和排序之前的特征加载配置是一样的。参考特征配置。
模型调用, 配置与精排里的排序配置也保持一致。 参考算法配置。
一系列 Action 操作, 这里可以多种操作,比如调用粗排模型之后,需要先排序, 然后再获取得分高的部分item。Action 操作包含 sort , filter 等多种操作,这里配置好后,按照配置顺序执行。
在粗排的配置中,需要考虑冷启动召回的item , 如果用统一的粗排模型, 冷启动的item由于缺少特征可能会被打低分,需要对冷启动召回的item进行单独的粗排配置。 目前粗排分两种, 主链路配置和冷启动召回的配置,当然,如果没有冷启动的召回,只配置主链路的配置也是可以的。如果有冷启动的链路,推荐使用 Pipeline 来设置冷启动的链路。参考自定义Pipeline流程。
GeneralRankConfs
主链路上的粗排配置对应配置总览中的 GeneralRankConfs,GeneralRankConfs 是一个 Map[string]object 结构,其中 key 为场景,可以分场景使用不同粗排策略。
配置示例:
{
"GeneralRankConfs":{
"scene_name":{
"FeatureLoadConfs":[
{
"FeatureDaoConf":{
"AdapterType":"hologres",
"HologresName":"",
"FeatureKey":"user:uid",
"UserFeatureKeyName":"userid",
"HologresTableName":"",
"UserSelectFields":"*",
"FeatureStore":"user"
},
"Features":[
]
}
],
"RankConf":{
"RankAlgoList":[
"sv_rocket_launching"
],
"RankScore":"${sv_rocket_launching}",
"ContextFeatures":["none"],
"BatchCount":100,
"Processor":"EasyRec"
},
"ActionConfs":[
{
"ActionType":"sort",
"ActionName":"ItemRankScore"
},
{
"ActionType":"filter",
"ActionName":"GeneralCountFilter"
}
]
}
},
"FilterConfs" :[
{
"Name": "GeneralCountFilter",
"FilterType": "AdjustCountFilter",
"ShuffleItem": false,
"RetainNum": 500
}
]
}
配置中的 FeatureLoadConfs 和 RankConf 和精排中的特征加载,算法配置是一样的,当然这两个也不是必须的。
ActionConfs 是一组操作的结合, ActionType 标识操作类型,目前支持 sort 和 filter。 ActionName 标识操作的名称,名称必须在各自的类型配置中找到。 比如, ItemRankScore 会根据 score 进行排序, 这个是引擎里预定义的。 而 GeneralCountFilter 必须在 FilterConfs 里配置才行。
上面 ActionConfs 总的含义是首先执行 ItemRankScore 排序,得分高的item 排在前面,然后进行数量调整,ShuffleItem 为false 不需要进行位置调整,只保留item 数量为 500。
ColdStartGeneralRankConfs
冷启动的粗排配置单独列出,实际上比 GeneralRankConfs 多了 RecallNames 字段,表示需要对哪些召回进行冷启动的粗排设置。
配置示例:
"ColdStartGeneralRankConfs": {
"scene_name": {
"RecallNames": [
"ColdStartRecall",
"ColdStartVideoVectorRecall",
"VideoColdStartRecall1",
"VideoColdStartRecall2",
"VideoColdStartRecall3",
"VideoColdStartRecall4",
"LinUcbRecall",
"LinUcbRecall_default",
"LinUcbRecall_highQuality",
"LinUcbRecall_default2"
],
"ActionConfs": [
{
"ActionType": "filter",
"ActionName": "PriorityAdjustCountFilterV4"
}
]
}
}