當我們完成召回,過濾(曝光、狀態)等, 為了效能考慮,需要對 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"
}
]
}
}