算法工程
从0搭建算法在线工程
应用:
- CTR预估
- NPL计算文本情感,相关性分数等
算法线上工程开发人员要解决如下问题:
- 工程人员和算法人员解耦:特征处理和模型训练交给算法开发处理,工程端加载模型和特征处理流程。
- 保证性能
- 配置化:通过配置实现算法策略的上线和迭代。
- 数据,模型版本怎么管理
包括如下管控平台:
- 版本管理平台
- 模型管理平台
- 特征管理平台(包括特征数据和特征处理jar包的管理)
- 打分管理平台
打分流程
涉及到以下服务:
- 打分服务
- 特征服务
- 版本管理服务
- tensorflow模型服务
打分服务
打分req&resp
请求:
{
"app_name":"favpush",
"origin":{
// origin是一个map
"goods_id":123,
"uid":234
}
}
打分的response是多个tensor,这些tensor是在fg类中指定的。
流程如下
- 将请求根据配置中心的配置,分桶到某一个solution,每个solution的配置在打分服务都会实例化一个通用的处理类,如
com.xxx.service.RankingSoltution
。solution的配置包括:模型,特征query模板,特征处理类等信息 - 解析特征query模板,得到特征query,调用特征查询服务获取特征,拼接featureMap
- 用特征处理类处理featureMap,得到tensorIO
- 调用模型服务,输入tensorIO、模型名等信息得到推理结果。
配置
配置中心上存放应用分桶AB的配置,比如:
{
"app_name":"favpush",
"solutions":[
{
"v1":{
"features":{
"user_vec":"getKV user_tbl {uid}|{version:favpush_vec_v2}",
"goods_vec":"getKV goods_tbl {goods_id}|{version:favpush_vec_v2}"
},
"model":{
"name":"favpush_lr",
"version":"favpush_lr_v1"
},
"fg": {
"class": "com.xxx.ranking.fg.LRFg",
"version": "v2"
},
"buckets":[
0,
1,
2
]