AICon 深圳站聚焦 Agent 技术、应用与生态,大咖分享实战干货 了解详情
写点什么

微博广告分层实验平台 (Faraday) 架构实践

  • 2017-05-25
  • 本文字数:4024 字

    阅读完需:约 13 分钟

移动互联网广告基于大数据,实现广告的精准人群定向投放和效果评估,并借助于不可胜数的广告策略,控制着广告的实时投放,让数据驱动型的移动互联网广告沿着站方、用户、广告主三者共赢的目标不断前进。

大数据驱动使得效果指标的量化评估成为了可能。为了实现好的广告投放效率,线上运行的每一个广告策略需要相应的实验和效果分析,通过量化分析来评估该广告策略效果的好坏。策略可能需要不断地尝试,并进行合理地流量均匀分流,经过多轮线上 A/B test 实验迭代,才能形成最终的决策值。另外,广告平台上许许多多的策略,有的相互独立,有的相互影响,如何高效地进行大规模的并行策略实验,是个不小的挑战。

在广告为核心业务的移动互联网公司,从 Google,Facebook,到腾讯,阿里,百度,都有着一套支持广告策略快速迭代和支持大规模并行实验的广告实验平台。

近期微博广告正式推出了微博广告法拉第(Faraday)全流量分层实验平台。该实验平台支持大规模广告策略并发实验,提供了多种流量均匀分流模式,全面的广告指标跟踪评估,实验效果实时反馈等。

实验分层模型

该实验平台借鉴了 google 的论文 [备注一] 关于分层实验的设计思想,并结合微博广告平台的应用场景进行了大量的简化。如下图所示:

该分层模型的主要思想为:

  • 相关联的策略参数位于同一实验层;
  • 相互独立的策略参数分属于不同的实验层;
  • 一个实验参数只能在一个实验层中出现;
  • 不同实验层间进行独立的流量划分和独立的实验,互不影响。

该分层模式简单明了,可以满足大部分的应用场景。另外,还有明显的好处:

  1. 该分层模型是面向策略参数的实验分层,不受线上广告系统模块划分的影响,达到最大化可独立进行实验的个数;
  2. 每一实验层享有 100% 流量,可以避免流量切分过细,保证实验间的可对比性、客观性;
  3. 不同实验层之间流量正交,可以避免不同试验间的流量依赖和流量不均匀情况的出现。为了更好地评估实验的效果,每一实验层还引入了基准实验。该基准实验会采用该实验层的默认策略取值,流量配比会设定在一个合适的水平。

(点击放大图像)

流量划分类型

流量的均匀划分是实验具有可对比性的前提。根据策略实验的需求和应用场景,系统提供以下不同均匀强度的流量划分类型:

  • 流量完全随机 这是最简单的分流方式;
  • 用户标识 id 哈希 该流量划分会使同一个用户会一直命中同一实验,从而保证了用户体验的一致性;而且也满足对同一用户具有累积效应的策略的实验需求;
  • (用户标识 id+ 日期)哈希 这是一种更为严格的保证流量均匀性的分流方式,可以保证流量划分在跨时间维度上更为均匀,但是会牺牲用户请求跨时间区间的一致性;
  • 用户 id 尾号划分 这是一种很常用、很简单的分流方式,还保证了用户体验的一致性,但是可能会由于尾号分布的不均匀性而造成流量分布的不够均匀,影响实验的可对比性。一种折衷方案是,根据用户标识 id 中间若干位来进行流量的划分。

对于涉及用户体验层面的实验,比如广告渲染的样式类型等,还会存在这样的需求,进行实验时,需要指定若干个用户命中指定的实验。这时,实验平台辅以白名单的方式,为流量划分类型提供补充。

具体进行流量划分时,为了实现实验层之间流量划分的正交性,会将流量标识信息和实验层标识一起进行实验流量 bucket 划分, 实验层标识 layer_id 称为离散因子。如基于用户标识的流量划分:

(点击放大图像)

理论上,通过以上几种流量划分类型,可以实现对应均匀强度的流量划分;但是,总会出现一些情况,发现最终划分的流量可能是不均匀的,从而影响到实验的可对比性。

对此,实验平台提供了一种流量划分的均匀性验证工具。基本思路为: 在广告系统中,用户是通过多维的画像向量(a,b,c,…,n)来进行刻画的,如果流量划分是均匀的,意味着用户的每一个画像向量分量在该流量划分条件下是均匀,更进一步,多个画像向量分量的组合在该流量划分条件下也是均匀的。通过进行用户画像向量单个分量和若干个画像向量分量的组合的均匀性验证,即可来反映该流量的划分的均匀性。

实验平台架构

实验平台整体架构图如下:

(点击放大图像)

实验平台架构主要包括几个重要部分: 法拉第工作台,实验配置管理与决策中心,线上系统策略分发和控制,实验数据实时流和离线批处理,实验效果dashboard 展示。下面对其中的关键特性予以介绍。

法拉第工作台

法拉第工作台供实验人员进行操作的入口。界面功能包括广告策略录入,实验创建与控制,扩量和全量发布,实验效果跟踪,实验平台前端界面大大降低了实验操作人员的门槛。

实验配置管理与决策中心

所有的实验策略配置信息都会持久化落地到配置中心(mysql 等),包括当前正在进行的实验的策略配置情况,也包括已经完成的实验配置情况。同时,实验策略配置会保存当前实验上下文的全局快照信息,可以进行指定版本的实验上下文的回滚。由于线上系统的策略配置决策信息完全依赖于实验平台和实验策略配置中心,实验策略配置中心本身的安全性,数据完整性,可用性,就变得极为重要。便于进行实验策略的回滚就是确保的系统稳定性和策略决策正确性的关键措施之一。

线上系统策略分发和控制

实验的策略配置信息通过策略分发机制来应用到线上生产环境。 为了最大程度地减少实验平台对生产环境的侵入性,这里采用了策略全局统一分发的方式来完成。生产环境只用在流量接入层请求实验平台,确定实验策略参数的取值,然后将确定的策略参数信息作为广告请求体的一部分,携带在广告请求参数中,一同下发给上游的各个服务器,每个服务器模块根据自己的需求情况进行获取对应的策略参数信息,进行广告精准投放计算。

实验环境供生产环境请求调用的模块称为法拉第实验CORE。具体地,在广告请求的接入层Router,由Router 去请求法拉第CORE。对于线上环境来说,策略实验的细节是透明的。换句话说,线上生产环境实际上是不关心当前是否正在进行着实验,以及正在进行着哪些实验;线上生产环境只关心从实验策略控制中心获取到所有托管于实验平台的策略参数的决策值。

法拉第实验CORE 包括两种实现形式。一种是原生动态库.so 形式,这种嵌入到宿主服务内部,可以节约I/O 通信消耗;另一种是HTTP API 形式,这种提供了跨语言方式的支持。

(点击放大图像)

在法拉第实验CORE 内部,需要对本次请求标识信息和全局的实时实验配置信息,依次对每个托管于实验平台的策略参数进行决策。对于正在进行实验的策略参数,根据实验层中每层选用的实验分流类型和分流配比,确定实验的命中情况,从而确定策略参数取值;对于当前没有进行实验的策略参数,则取其默认策略参数值。 最终,全部的参数都确定其取值,形成k-v 对,连同当前流量的实验命中信息情况,反馈给生产环境router 模块。

实验数据实时流和离线批处理

请求的实验信息会以tag 的形式记录在生产环境的请求日志中,形如: layer1_layer2_layer3_…_layerN。 请求日志会落地到广告数据总线系统,再由广告实时流系统进行消费、数据清洗、实验效果指标计算等工作。由于广告系统是多业务指标系统,包括售卖率,ECPM, CTR, ACPE,负反馈率、财务消耗计算等。广告实时流系统还需要日志的关联工作,比如关联广告互动日志,广告负反馈日志。实时流的计算的结果,会落地到druid 系统,方便实验效果数据的快速检索和二度加工。实验效果实时指标数据计算延迟控制在一定的范围内(5 分钟)。

(点击放大图像)

由于实时日志可能会存在日志延迟、重复、丢失等情况,实时流系统的计算指标的准确性会难以保证。因此,对于非实时的指标数据,会启动离线批处理计算进行实验指标的校正,特别是对于非当天的历史实验指标数据,离线批处理会进行重新计算,形成最终准确的实验指标数据体系。

实验效果dashboard 展示

实验效果dashboard 展示采用了量化分析的方式,精确衡量实验间的效果对比情况。

实验间的对比,提供两种对比维度:一个是横向对比,这个进行同一个实验层中所有对比实验和基准实验间的各个指标的对比,以发现同时间区间各个实验的策略的对生产环境的影响;一个是纵向对比,是指定的对比实验和基准实验在时间纵向维度的效果对比,以发现该对比实验是否具体持续的效果提升/ 下降效果。实验效果跟踪横向对比图表和纵向对比图表展示效果如下:

(点击放大图像)

有时,为了更加详尽地洞察实验效果指标的更多细节,需要对实验指标按某一个维度进行分解,达到更小观测粒度。比如,微博用户在不同的设备平台(PC,安卓平台,IOS 平台)不一样的操作习惯和兴趣习惯,可以分平台粒度查看该对比实验在各个设备平台的实验指标变化情况;微博不同场景信息(关系信息流,兴趣信息流,热门搜索流等)的属性存在天然差别,部分策略在分场景流去分析时可能回更有意义;另外,也提供了分广告竞价类型的实验效果跟踪分析。

技术之外

最后需要提的是,实验平台在效果跟踪决策方面是有一定的局限性的。实验平台可以进行实验效果的快速跟踪,但是却很难进行实验效果好坏的决策。比如:如果对比实验效果指标值全部提高或下降了,可以简单认为对比实验的策略调整起正向作用或者反向作用;如果对比实验的实验效果指标值部分提高了,部分下降了,就不太好认定了。还有,实验效果的短期效应和长期效应也可能是不一致,这将大大增加了实验效果好坏的决策难度。

因此,实验平台是可以快速提升广告业务策略迭代效率的工具,但是要想进行实验好坏评定的决策,还需要很长的路要走。

为了弥补这个不足,可以成立一个实验平台评审委员会。通过非技术手段进行线下决策,包括实验的效果好坏评定,是否进行实验的发布,对生产环境的长期效应等一些列的决策。

作者介绍

李铁牛,目前就职于新浪微博广告平台部,粉丝通广告平台技术负责人。2011 年毕业于中国科学院大学,2012 年加入新浪微博,参与并主导了粉丝通,品牌速递,应用家,超级粉丝通等多个核心广告产品迭代开发和投放平台的架构设计工作,完成粉丝通广告架构由产品线型向平台型架构的转型, 主导开发了 Faraday 分层实验平台。 目前,本人从事关于高并发、高性能、高可用的广告平台架构设计,以及广告投放策略研究和团队管理等工作。

2017-05-25 17:186668

评论

发布
暂无评论
发现更多内容

微软最强 Python 自动化工具开源了!不用写一行代码!

星安果

Python 微软 自动化 自动化测试 playwright

新闻|Babelfish使PostgreSQL直接兼容SQL Server应用程序

PostgreSQLChina

数据库 postgresql 开源

挑战赛 | 话题王者VS互动先锋(第一季)

InfoQ写作社区官方

话题讨论 热门活动

架构师训练营第 1 期 -week11

习习

《前端实战总结》之使用CSS3实现酷炫的3D旋转透视

徐小夕

css3 大前端 CSS小技巧

已拿腾讯后台开发岗offer,简单说下自己的面试经历和学习路线

程序员小灰

c++ 后台开发 架构师 TCP/IP Linux服务器开发

谁能阻止世纪互联星光?2020年第11期北京机房网络质量评测数据排行榜发布

博睿数据

英特尔发布第二代Horse Ridge低温量子控制芯片

E科讯

ONES 收购 Tower,五源资本合伙人对话两位创始人

万事ONES

项目管理 团队协作 ONES Tower 收购

一个真正0基础小白学习前端开发的心路历程

华为云开发者联盟

开发 开发小白 0基础

架构师训练营第 11 周课后练习

叶纪想

极客大学架构师训练营

英特尔推动集成光电的发展,用于数据中心

E科讯

国产电子表格Luckysheet后台也开源了!支持在线协作,一键docker私有部署

奇异石榴果

Java Excel SpreadJS 表格控件

即使不会node.js,拖拽就可完成数据的可视化展示

华为云开发者联盟

node.js 数据 可视化

1分钟解密:博睿大数据核心引擎Bonree Zeus六大优势

博睿数据

英特尔神经拟态生态系统发展和研究的最新进展

E科讯

《技术男征服美女HR》—Fiber、Coroutine和多线程那些事

太白上仙

Java 程序员 面试 后端 多线程

面试无忧:源码+实践,讲到MySQL调优的底层算法实现

996小迁

Java 架构 面试

腾讯大牛整合Java+spring5系统学习架构,神乎其技

小Q

Java 学习 编程 面试 spring 5

【技术分享】浅谈RTC及Agora RTC SDK集成介绍

Hanson

ONES 收购知名协作工具 Tower

万事ONES

团队协作 高效 研发管理工具 收购 资讯

性能压测

jorden wang

训练营第七周作业

大脸猫

极客大学架构师训练营

IntelliJ IDEA 2020.3正式发布,年度最后一个版本很讲武德

YourBatman

IDEA 新特性 2020.3

加码线下,新荣耀“破题”场景经济

脑极体

Linux平台中调试C/C++内存泄漏方法 (腾讯和MTK面试的时候问到的)

linux大本营

c++ Linux 后台开发 架构师

跨架构编程不再难,英特尔机器编程工具迎来重磅更新

E科讯

javascript开发后端程序的神器nodejs

程序那些事

Java 后端 nodejs koa 程序那些事

关于binlog,这个参数能不能用?

Simon

MySQL Binlog

给你一个亿的keys,Redis如何统计?

不才陈某

redis

想了解任务型对话机器人,我们先从自然语言理解聊起

华为云开发者联盟

人工智能 机器人 自然语言

微博广告分层实验平台(Faraday)架构实践_最佳实践_李铁牛_InfoQ精选文章