CTR系统设计篇

CTR(广告点击预估)绝对称得上是工业界和学术界相结合的一颗璀璨明珠.

随着机器学习技术的不断发展,以前专门的广告优化师和策略师,越来越变得不那么重要。技术带来了效率的变革,也就是说其实广告投放的门槛越来越低。对于小的创业团队和个人而言,这个行业也有覆盖在卵石之下的金矿,和上车发财的机会。

关于 CTR 预估的众多专业知识和广告行业诸多的业务模式,不是这篇文章的重点。下面是一个简单的 CTR 系统设计思路,对于 CTR系统设计感兴趣的读者而言,可以管中窥豹举一反三。

系统设计

系统模块功能概要设计图

  • 客户调用端:访问 Online Serving 的时候需要自己处理数据预处理特征转换等,访问 API 服务;考虑到 CTR 系统的吞吐量比较大,为了防止重试带来的流量放大效应,所以失败之后不重试,由客户端自行采用策略来兜底;小流量AB测试是为了测试 Online Serving的效果,采用流量染色等方法;定期导出数据到 Offline Training 是给离线训练系统导入上游数据。

  • 在线服务 Online Serving:提供预测的api服务;还支持给离线系统进行数据预处理,比如生成对 Tensorflow 友好的tfrecords 格式文件等,需要借助 Spark 等第三方组件。考虑到吞吐量,推荐使用 golang Gin 做 web 服务,或者基于 Scala 的 akka http。这个服务里面可以调用或者包裹 Tensorflow Serving 对外提供一致的预测服务。

  • 离线训练:定期进行模型训练;模型格式转换,比如 pmml pkl model之间的相互转换;上传模型给在线服务。

Views