京东广告研发——效率为王:广告统一检索平台实践
导读
京东广告检索平台服务数亿用户,负责人货场的初步匹配,其核心难点是在有限的算力和海量数据处理中找到平衡。本文介绍了京东检索平台从算力分配、算力优化及迭代效率三个角度解决检索平台的核心难点,也总结了检索平台的发展历程及未来迭代的方向。
导读
京东广告检索平台服务数亿用户,负责人货场的初步匹配,其核心难点是在有限的算力和海量数据处理中找到平衡。本文介绍了京东检索平台从算力分配、算力优化及迭代效率三个角度解决检索平台的核心难点,也总结了检索平台的发展历程及未来迭代的方向。
01 系统概述
在今年的敏捷团队建设中,我通过Suite执行器实现了一键自动化单元测试。Juint除了Suite执行器还有哪些执行器呢?由此我的Runner探索之旅开始了!
实践证明,将互联网流量变现的在线广告是互联网最成功的商业模式,而电商场景是在线广告的核心场景。京东服务中国数亿的用户和大量的商家,商品池海量。平台在兼顾用户体验、平台、广告主收益的前提推送商品具有挑战性。京东广告检索平台需要在保证服务高效可靠的前提下,为广告与用户需求进行有效匹配,提供个性化、精准的广告推荐和检索服务,为广告主和用户创造更好的交互与价值。
1.1 检索平台功能概述
检索平台将广告主投放诉求转换为播放系统的语言;同时,作为广告系统的最上游,完成人货场的初步匹配。从上亿级的检索空间,返回数百个物料发送至下游,需要考虑用户体感、广告主的投放诉求、召回结果的相关性、平台收入等,承载了大部分的广告业务逻辑。其效果决定了整个广告效果的天花板。1.2问题定义
检索平台核心能力本文档重点关注检索系统核心功能之“为用户检索出相关的广告”,即召回。其他核心功能另起文档,不再赘述。为了不失一般性,相关性函数可以抽象成一个打分函数f( ),那么召回过程是一个最值搜索问题:对于评分f:X×Z→R,给定输入x,从候选集Z中寻找固定大小的子集Y,使得{f(x,y),y∈Y}在{f(x,z),z∈Z}尽可能排序靠前。以深度学习广泛应用于在线广告为分水岭:
•前深度学习时期,召回主要由简单的算法或者规则完成
•后深度学习时期,召回主要是由双塔模型+向量检索完成基于规则的前深度学习时期的相关性打分是对业务规则的抽象,具备解释性强的优势。但是不同规则的分数通常不具可比性。例如基于标签的规则匹配定向是一种只返回布尔结果的特殊打分方式,其打分函数可以表示为:f:X×Z→{0,1},此种离散分数很难与其他分支进行对比。后深度学习时期打分由模型完成。多路模型的相关性建模方式类似,价值评估方式统一且分数可比。但受检索系统算力/耗时制约,召回模型通常采用结构简单的双塔模型,限制了模型的表达能力。在硬件发展和算力释放的背景下,打分函数呈现逐渐复杂的趋势。检索平台核心技术难点检索系统人货场的匹配由多个OP(算子)协同完成
检索平台核心技术难点:在有限的算力和海量数据处理中找到平衡。为了缓解检索阶段海量数据和有限算力之间的矛盾,检索系统进行了以下方面的探索:
1.算力分配:为检索系统计算密集型环节,节省算力与耗时
2.算力优化:提升相关性打分准确性,提升单位算力产生的业务收益
3.迭代效率:配置中心--一站式实验平台,提升迭代效率文章以下篇幅围绕上述三方面展开,阐述检索系统核心能力建设的过程
02 主线一:Beyond Serverless,数据驱动的自适应算力优化框架
理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后将通过表达式引擎解析表达式并取得正确的值,通过事件解析引擎解析用户自定义事件并完成事件的绑定,完成解析赋值以及事件绑定后进行视图的渲染,最终将
检索系统业务逻辑复杂,计算密集,模块众多。各模块的各自算力优化并不等于系统整体算力优化。为优化检索系统的算力分配,检索系统完成了从单个模块的图化,到联动上下游的分布式执行图的升级。
2.1全图化到数据驱动的图化,逼近算力优化天花板
难点:「为什么要立足整体管理子图」
1)解决服务间(子图间)的割裂。架构进入Serverless时代后,各个图相互割裂,服务内部的迭代优化很难考虑整体架构的收益;
创新:「数据,数据,还是数据」
「一套架构,多重视角」
完整的分布式执行图能实现自动调度,依据业务编排自动进行串/并行的执行;支持数据驱动的DAG表达,充分释放算力,持续保持系统处于算力分配的最佳状态。当前分布式执行图已经落地京东搜索广告,通过充分发掘检索系统及其上下游的数据依赖关系,经过自动编排后的系统对比流程驱动的架构,检索环节节省耗时超过16%,极大释放了检索链路的算力。
2.2弹性系统,智能算力分配助业务平稳增长
难点:
•平台多样。京东检索平台涉及业务包括搜索广告、推荐广告、首焦广告和站外广告。不同平台在检索流程上存在差异,且访问量也有所不同,每个业务单独建模,人力成本大
阶段一、维持系统稳定的PID弹性系统:
京东APP的流量分布呈现早晚两高峰结构,非高峰时期闲置大量冗余算力。阶段二的目标为满足系统约束下的流量价值最大化。调控手段为扩大/缩小召回系统各个环节的队列长度。新的系统反馈定义如下:
系统目标为在一定时间粒度下最大化单位算力的期望收益。该建模有如下挑战:
•流量的价值难以定义。使用策略的后验Uplift收益作为价值的Groudtruth来训练价值评估函数。广告检索系统使用点击和消费作为收益指标。
•糟糕的策略会对线上系统带来无可挽回的损失。系统使用离线数据预训练弹性系统。在实际运行中,弹性策略会在系统指定的安全边界内生效。同时,完备的熔断机制也保证了弹性策略失效后会由更稳定的保守策略接管系统。
•目前基于收益优化的弹性系统已经运用在日常情形下。现阶段弹性系统的价值评估函数还比较简单,且该弹性系统还无法应用于大促阶段。下一阶段的目标为精细化价值评估以及将收益最大化的弹性系统应用于大促。
03 主线二:与时间赛跑,高效检索引擎打开广告效果天花板
理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后将通过表达式引擎解析表达式并取得正确的值,通过事件解析引擎解析用户自定义事件并完成事件的绑定,完成解析赋值以及事件绑定后进行视图的渲染,最终将
在有限的时间内最大化算力的价值是检索团队追逐的目标。在硬件资源有限的背景下,一百ms耗时内遍历亿级商品池并用模型打分难以实现。京东检索团队参考了大量业界优秀的公开设计文档,结合京东广告的实际情况,规划了高效算法检索引擎的迭代路线。整体规划可以分为4个阶段:
3.1双塔到深度,从行业追赶到第一梯队
「ANN是什么?」为了在规定的耗时约束内完成对亿级候选集的检索,系统通常会使用近似近邻检索(ANN)来避免穷举候选集里所有的广告。常用的树状索引按照向量间的欧式距离将距离近的向量放在索引上相邻的位置。此索引上叶子结点为广告对应的节点,中间节点为聚类产生的没有物理含义的节点。结合宽度为K的Beam Search,则每层索引上需要打分的节点个数小于等于k²个,缩小了计算量。
「深度索引」双塔模型因其产生的向量满足近邻检索性质的特点在召回阶段受到广泛的应用。但模型表征能力,即打分能力也受到如下影响:
•双塔独立导致用户侧与Item侧特征融合不充分
结合以上不足,京东广告检索推出基于EM的深度索引。新索引突破了传统索引对双塔模型的结构限制。算法不仅可以纵向迭代:表征函数更复杂;还可以横向迭代:matching函数更复杂,且用户和广告可以任意阶段融合。
广告检索的本质是在索引上找到通向高价值广告的路径。双塔模型的树索引,作为一种特殊的深度索引,从根节点到叶子节点的路径由向量叉乘确定,无需模型参与。而深度索引的路径根据模型打分确认,目标为最大化路径指向广告的价值。
3.2召回架构升级,极致追求数据时效
3.3链路对齐,检索效率再提升
「为什么要链路对齐」自上而下看,目标的链路对齐有两个层次:
•从广告系统来看,检索负责筛选与用户相关的广告,后链路环节如粗排/精排的目标是最大化候选广告的eCPM等目标。广告系统各模块间的目标不齐限制了广告系统的整体收益
创新:以CTR建模的模型为例,双塔模型预估的pCTR计算方式为:
u代表用户向量,a代表广告向量。只需将在原向量加上一维数据,即可将检索目标从最大化CTR转化为最大化eCPM:
用户向量修饰:u′∈Rd+1
Item向量修饰:a′∈Rd+1,经过数学推导修饰后的向量内积能够逼近eCPM,eCPM≈u⋅aT
创新:京东广告将向量索引结构抽象为:兴趣层与业务层。业务层通常为广告,具备物理意义。兴趣层是路径的中间产物,不具备物理意义。以双塔索引为例,叶子节点表示广告,广告的状态(上/下架)应直接影响该叶子节点能否被检索。中间节点代表广告聚类抽象出的隐式兴趣,不受业务层广告状态的影响。
04 主线三:平台力量:平台化基建释放研发生产力
理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后将通过表达式引擎解析表达式并取得正确的值,通过事件解析引擎解析用户自定义事件并完成事件的绑定,完成解析赋值以及事件绑定后进行视图的渲染,最终将
4.1磨刀不误砍柴工:从京东广告业务迭代面临的挑战说起
「京东广告业务迭代密集」广告检索平台是一个业务复杂,计算、IO密集,为京东APP、京东小程序、京东PC等客户端提供在线广告检索的服务。平台的重要定位也决定了其迭代的密集程度:检索代码库平均每年有600+次合并,检索平均每年全量代码或配置发布次数已超500次,可见一斑。
「研发容量及效率的挑战」支撑检索系统的快速稳定迭代,需要有足够大的研发容量支撑。每个垂直业务线(搜索/推荐/首焦/站外)都包含业务架构及算法策略研发。同时在跨业务线的水平模块(召回/创意/出价)也包含对应的平台业务架构及算法策略研发、以及系统研发、测试等。平台支撑如上近300人的多元研发团队同时开发,为了保证持续业务健康发展,需具备数百至千级的实验吞吐量,提供准确易用的洞察分析工具。
「大促场景的紧急迭代挑战」京东面临一年两次以上的(618、双十一等)大促考验,大促时特有0逻辑需要得到快速落地。紧急迭代对系统代码的健壮性、可读性都带来不小挑战。
4.2万象适配:平台化支撑多元业务拓展定制
「业务框架的算子化设计」系统健康运行的基石是健壮的系统框架。将复杂的业务系统按功能拆分为多个算子(简称OP),不仅系统边界清晰,还可将业务策略进行归类和抽象。算子作为OP的原子单位,有明确的输入输出数据和清晰的业务定位。原子化算子遵循:
1、清晰的数据依赖:每个OP具备各自的INPUT和OUTPUT,同时INPUT具有只读属性
2、OP的可洞察性建模:OP中记录运行时DEBUG/TRACE数据,方便调试、监控与分析
「可插拔的策略定制」每个业务算子提供扩展点供业务策略定制,具有可灵活插拔的特性。这样的设计思想是采取类的组合关系+功能分治的思想,将单一的功能点从OP中抽离出来,通过单独的扩展点类来管理,功能上更内聚。
4.3超越极限:一站式配置管理及超大容量的极速实验发布平台
「一站式配置管理及发布」通常业务逻辑迭代需要充分了解当前的配置状态,将全部配置在统一管理界面中呈现,一方面提高了统一配置管理的便捷程度,同时让配置具有更优的可阅读性,让不具备开发能力的同事可以随时了解广告检索系统的业务处理流程,并进行一键实验操作。同时一站式的配置修改,贯穿于自测、联调测试、小流量、全量、holdback研发周期的全程跟踪和托管,免除了在多个平台切换的烦恼。
4.4洞察专家:可追踪可归因的在线洞察系统
「可调试可追踪」广告在线检索系统的强需求就是可追踪。面向研发,在线洞察系统提供DEBUG模式:
•调试模式可选择:可以选择跟踪特定广告或者是特定环节
•实时性:立即产出DEBUG数据
面向运营和广告主提供TRACE模式:
•线上请求可追踪:任意线上请求的结果数据均可全系统链路追踪
•请求可重发:实时请求重发复现现场,加速问题定位
05 总结展望
理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后将通过表达式引擎解析表达式并取得正确的值,通过事件解析引擎解析用户自定义事件并完成事件的绑定,完成解析赋值以及事件绑定后进行视图的渲染,最终将
AIGC在保险场景中的视觉应用
对号入座,快看看你的应用系统用了哪些高并发技术?
无用代码扫描组件设计