自定义 Pipeline 流程¶
背景¶
PAI-Rec 引擎本身就是一个 pipeline 处理流程, 把召回、过滤、粗排、特性加载、精排 等各个阶段串联起来。但有时候,只有一条 pipeline 的处理流程是不够的。比如冷启动流程,它需要一条单独的 pipeline 来处理,因为冷启动的粗排、精排等流程与主链路是不同的。另一种情形是,在首页推荐流中,会有图文、视频等多种数据,图文,视频的处理链路是不同的,需要走不通的 pipeline , 最终把数据混排在一起。
目前通过 PAI-Rec 可以自定义 pipeline 流程,来处理单独的链路而区别于主链路流程。 可以通过配置文件来描述 pipeline , 并且可以结合 AB 服务,在实验中动态调整 pipeline 流程。
整体架构¶
当前主链路的流程如下:
当前在同一个场景中,可以配置多条 pipeline 流程,最终与主链路的数据 merge 到一起。
自定义 Pipeline 配置¶
配置如下:
{
"PipelineConfs": {
"video_feed": [ // 场景名称,场景,可以配置多个 pipeline
{
"Name": "coldstart", // 自定义 pipeline 名称,全局唯一,不同场景也要唯一
"RecallNames": [], // 召回列表, RecallConfs 里定义
"FilterNames": [], // 过滤列表, FilterConfs 里定义
"GeneralRankConf": { // 粗排定义, 可以参考粗排的配置
"FeatureLoadConfs":[],
"RankConf":{},
"ActionConfs": [
{
"ActionType": "filter",
"ActionName": ""
}
]
},
"FeatureLoadConfs":[],
"RankConf":{
"RankAlgoList":[],
"RankScore":"",
"Processor":"",
"BatchCount": 100
},
"ColdStartRankConf": {
"AlgoName":"",
"OnlyEmbeddingFeature": true
},
"SortNames":[] // 排序处理,SortConfs 里定义
}
]
}
}
上述的配置基本上与主链路的配置是一致的,上面是完整的配置,并不是所有的字段都是必须的。解释说明如下:
PipelineConfs 所有的 pipeline 的定义都放在这里, 支持多场景配置
Name 自定义pipeline 名称,在配置里全局唯一
RecallNames 召回列表,名称可以在 RecallConfs 里定义,也可以是自定义的召回
FilterNames 过滤列表, 名称可以在 FilterConfs 里定义,也可以是自定义的过滤
GeneralRankConf 粗排配置。 这个不是必须的。 具体的定义可以参考这里
FeatureLoadConfs 特征加载,具体可以参考特征配置
RankConf/ColdStartRankConf 这两个是互斥的配置,如果是想用冷启动算法, 配置 ColdStartRankConf 就可以了。 如果是模型的精排,可以配置 RankConf
SortNames 自定义排序,这个也不是必须的。是否对pipeline 的数据做进一步处理,可以在这里做。 名称可以在 SortConfs 里找到,或者自定义的排序
实验参数支持¶
在很多情况下,需要对 pipeline 的流程做实验对比,pipeline 中的各个子阶段都支持实验参数,模式为 “pipelines.” + {pipeline 名称} + “.{子阶段名称}”。具体详情如下
参数名称 |
参数类型 |
参数说明 |
样例 |
---|---|---|---|
“pipelines.” + {pipeline 名称} + “.RecallNames” |
json array |
召回的列表,需要包含所有的召回 |
{“pipelines.coldstart.RecallNames”:[ “ColdStartRecall”]} |
“pipelines.” + {pipeline 名称} + “.FilterNames” |
json array |
过滤列表,包含所有的过滤流程 |
{“pipelines.coldstart.FilterNames”:[“UniqueFilter”, “UserExposureFilter”]} |
“pipelines.” + {pipeline 名称} + “.GeneralRankConf” |
recconf.GeneralRankConfig |
粗排配置 |
{“pipelines.coldstart.GeneralRankConf”:{“Actions”:[]}} |
“pipelines.” + {pipeline 名称} + “.FeatureLoadConfs” |
[]recconf.FeatureLoadConfig |
特征加载配置 |
{“pipelines.coldstart.FeatureLoadConfs”:[{“FeatureDaoConf”:{}}]} |
“pipelines.” + {pipeline 名称} + “.RankConf” |
recconf.RankConfig |
排序算法的配置 |
{ |
“pipelines.” + {pipeline 名称} + “.ColdStartRankConf” |
recconf.ColdStartRankConfig |
冷启动算法配置 |
{ |
“pipelines.” + {pipeline 名称} + “.SortNames” |
json array |
排序列表 |
{ “pipelines.coldstart.SortNames”:[]} |