写点什么

微博广告分层实验平台 (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:186954

评论

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

掌握良好的API设计原则:是什么、为什么和怎么办

幂简集成

API API 设计

【Hive】 HiveServer2 内存溢出总结

扬_帆_起_航

Hive SQL 内存泄漏 HiveServer2 hive metastore

即时通讯和即时通信,即时通讯和实时通信

BeeWorks

观测云:企业监控的定制化与精细化管理专家

可观测技术

ByteHouse高性能向量检索实践——“以图搜图”

字节跳动数据平台

数据库 大数据 云原生 Clickhouse 数仓

远程访问Voice Engine AI工具:无需公网IP,轻松实现高效创作

贝锐

AI 花生壳 贝锐

面试官:你的项目有哪些难点?

王磊

Java 面试

大模型检索X一键成片,巴黎奥运的AI新演绎

阿里云CloudImagine

云计算 AI技术 大模型 视频云 奥运会

解锁AI安全新高度,安全极客全新升级

云起无垠

全网热议!GitHub发布的最简单的黑客入门教程,你值得拥有!

我再BUG界嘎嘎乱杀

黑客 网络安全 安全 信息安全 网安

telegraf 常用命令总结

不在线第一只蜗牛

服务器 命令

单集群 100 节点!资源占用远小于 Grafana Mimir——GreptimeDB 海量数据写入性能报告

Greptime 格睿科技

数据库 性能测试 数据存储 Mimir 基准测试

IoTDB 集群性能优化:内存配置详解

Apache IoTDB

玩转漫画、小说等跨模态AI创作,百度文库联合玄机科技举办国内首个AI漫画大赛

极客天地

万字干货:从消息流平台Serverless之路,看Serverless标准演进

华为云开发者联盟

Serverless lvm 信息流 企业号 8 月 PK 榜

信创企业级即时通讯发展趋势,私有化安全沟通

BeeWorks

观测云:零售行业数据分析的利器

可观测技术

集成与 API 支持:开放架构的灵活性

可观测技术

华为大咖说 | 揭秘巴黎奥运会门票定价:为什么最低门票定24欧?

人工智能 华为云

简单好用的京东商品详情API使用入门指南

技术冰糖葫芦

API 安全 API 文档 API 测试 API 优先 pinduoduo API

可信数据库发展大会回顾 | 天谋科技乔嘉林:Apache TsFile & IoTDB 联合赋能智慧能源

Apache IoTDB

发布更便宜的GPT-4o mini,OpenAI也打起了价格战

蓉蓉

openai GPT-4o mini

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