乐趣区

关于美团:美团外卖广告智能算力的探索与实践

在深度学习时代,算力的需要和耗费日益增长,如何升高算力老本,进步算力效率,逐步成为一个重要的新课题。智能算力旨在对算力进行精细化和个性化调配,实现最优化资源利用。本文次要分享美团外卖广告在智能算力摸索和实际过程中积攒的教训,心愿能给大家带来一些帮忙或者启发。

1. 业务背景

目前,美团外卖日订单量已冲破 4000 万,成为美团最为重要的业务之一。外卖广告服务也从最后的撑持繁多业务线倒退到当初的十余条业务线,服务整体接受的流量日益增长,所耗费的机器资源也达到了肯定的规模。

在外卖场景下,流量出现显著的双峰构造,即午餐和晚餐两个时段为流量波峰,其余时段流量较小。在这种流量特点下,外卖广告服务在顶峰时段面临较大的性能压力,在非顶峰时段存在大量算力冗余,从全局来看,机器算力调配效率低,流量价值依然具备较大的开掘空间。一方面,流量耗费的算力没有依据流量价值进行动静的调配,造成零碎在高价值流量上算力调配有余,价值没有失去充沛的开掘,而在低价值流量上,却存在节约大量算力的景象;另一方面,在非顶峰时段,零碎流量较低,导致系统的整体资源利用率偏低,限度了零碎获取更高的业务收益。

因而,算力须要进行更正当的调配来失去更加高效的利用。以后业界对于动静算力调配的钻研较少,以阿里巴巴定向广告平台的 DCAF[1]为代表,该计划依据流量价值进行差异化的算力调配,对不同价值的流量调配不同的候选队列长度,实现无限资源束缚下的收益最大化。DCAF 提供了一种优良的解决方案,但该计划在外卖广告场景下存在肯定的局限性。

针对外卖广告场景,外卖广告技术团队在 DCAF 计划的根底上进行了一系列摸索和改良,首次进行了队列弹性调配和模型弹性调配相结合的尝试,并获得了不错的收益。一方面,在机器资源持平的状况下,CPM 能够晋升 2.3%;另一方面,在业务收益持平的状况下,机器资源能够缩小 40%,最初咱们在外卖列表广告精排阶段推全了机器资源持平的计划。

2. 整体思路

在外卖广告投放引擎中,为应答极大的在线流量压力和宏大的候选集,咱们将整个检索过程设计成候选集顺次递加的漏斗型级联架构,次要蕴含召回、粗排、精排、机制等模块。

实现智能算力的整体思路,是在零碎算力容量束缚下,对不同价值流量进行差异化算力调配,从而进步在广告检索过程中的算力调配效率,实现收益的最大化。智能算力次要包含以下四个因素:

1. 流量价值量化:流量价值指流量为平台、广告商家、用户三方带来的收益,零碎须要具备量化流量价值的能力。

2. 流量算力量化:流量算力指流量在零碎内耗费的机器资源,在外卖广告场景下,流量耗费的算力和候选集大小、召回通道数量、模型大小、链路复杂度等零碎变量严密相干,同样零碎须要具备量化流量算力的能力。

3. 零碎算力容量量化:零碎算力容量指零碎的机器资源总和,和流量算力量化的量纲统一,通常能够通过压测等伎俩获取零碎的算力容量;在零碎算力调配过程中,须要保障总体流量算力耗费不超过零碎的算力容量。

4. 智能算力调配 :基于以上三个因素,在广告投放引擎全链路进行智能算力调配,咱们把算力调配的伎俩定义为“ 弹性动作”,在外卖广告场景下,咱们次要演绎了以下四种动作:

  • 弹性队列:线上检索是一个漏斗的过程,不同价值流量能够在级联漏斗的各模块中调配不同候选队列长度。
  • 弹性模型:在模型预估服务中,不同价值流量能够调配不同模型,大模型绝对小模型预估成果更好的同时耗费的算力也更多。
  • 弹性通道:在多通道召回中,不同价值流量能够调配不同的召回通道。
  • 弹性链路:在检索链路上,不同价值流量能够调配不同复杂度的检索链路。

    这些弹性动作的可选范畴,定义为“弹性档位 ”,如队列长度 100 和 200 对应弹性队列的两个不同档位。 在智能算力下,算力的调配过程即弹性动作和弹性档位的智能决策过程

挑战剖析

为了让智能算力在外卖广告场景着落地,咱们次要面临着如下的挑战:

  • 问题求解

    • 挑战点:智能算力的指标是最优化算力资源分配,这就要求咱们对“在零碎算力束缚下,最大化流量收益”这个问题进行求解。
    • 应答思路:参考已有计划,将问题拆解为流量价值预估、流量算力预估以及算力调配三个子问题进行求解,并针对外卖广告场景进行摸索和改良。
  • 零碎稳定性保障

    • 挑战点:将零碎算力调配托管给智能算力框架,从等额算力调配到智能算力调配,不仅须要保障智能算力框架自身的稳定性,更须要保证系统全链路的安稳运行。
    • 应答思路:除了监控报警、熔断降级等惯例保障伎俩,咱们实现了基于零碎状态的实时调控性能,保障系统稳定性。
  • 通用性 & 扩展性

    • 挑战点:兼顾根底能力的复用和个性化能力的扩大,撑持外卖广告举荐和搜寻两大方向,多个业务场景的接入。
    • 应答思路:外围组件以 SDK 模式提供可复用、可扩大能力,同时基于通用的价值评估指标、算力评估指标和智能算力框架,撑持多弹性动作的组合决策和多业务场景的高效接入。

3. 方案设计

通过工程团队和算法团队深度 Co-Design 后,咱们设计了一套多动作组合决策的智能算力框架。整个框架由决策组件、采集组件和调控组件组成,其中决策组件作为智能算力框架的外围,以 SDK 模式嵌入应用服务,提供可复用可扩大的多动作组合 最优档位决策能力 零碎稳定性保障能力,为广告投放引擎的各阶段赋能;采集组件和调控组件为零碎稳定性保障提供撑持。上面次要对最优档位决策和零碎稳定性保障两个模块进行具体介绍。

3.1 最优档位决策

在业内已有弹性队列求解计划的根底上,咱们进行一系列摸索和改良:

  • 通过选用更加通用的流量算力评估指标,同时减少流量算力预估模块,保障量化指标通用的同时进步精确度,解决 算力量化不通用和不准确 的问题。
  • 通过构建非凡档位,首次尝试了 弹性队列和弹性模型的联合 ,解决了 局部流量无奈建模 的问题。

基于以上策略,咱们实现了多弹性动作组合最优化档位决策。

3.1.1 问题建模

现有计划

DCAF[1]将该问题转化为对应的对偶问题进行求解,失去决策公式,实现弹性队列调配。

计划改良

上述建模计划在外卖广告场景中存在以下问题:

如图所示,因为档位 $j=j_0$ 的算力和价值已知,无需对不同模型的价值和算力进行预估,后续的流量价值预估和流量算力预估工作都面向弹性队列即可。

3.1.2 决策框架

如图所示,最优档位决策模块分为离线和在线两个阶段,蕴含如下四个子模块:

  • 流量价值预估模块(离线 + 在线):预估流量在不同档位下的价值。
  • 流量算力预估模块(离线 + 在线):预估流量在不同档位下的算力。
  • 离线 λ 求解模块(离线):通过回放历史流量,利用二分查找算法求解最优 λ。
  • 在线决策模块(在线):对线上流量,基于档位决策公式计算最优档位,并依据计算结果调配不同模型和队列长度。

3.1.3 流量价值预估

流量价值预估是智能算力决策的外围,要求具备肯定准确性。而线上进行模型预估会减少检索链路耗时,咱们采纳离线 XGB 模型预估 + 在线查找词表的计划,既保证了预估的准确性,又足够轻量。

价值评估指标选取:一般来说,流量价值指以后流量为广告平台带来的支出;在外卖广告场景中,咱们关注平台支出的同时,也关注商家的支出,因而咱们的流量预估的指标选定为 $k_1 * 平台支出 + k_2 * 商家支出 $。

如图所示,流量价值预估模块蕴含离线和在线两个阶段。

离线阶段

  • 特色筛选 & 分桶:基于离线特色重要性剖析和散布状况,进行特色筛选和分桶。
  • 模型训练

    • 次要问题:初期咱们采纳统计计划,在特色分桶较多的状况下,数据稠密问题重大,且队列长度越大,数据越稠密。
    • 解决方案:采纳 XGB 模型代替统计计划,加强泛化能力。
  • 分桶价值存储:不同特色分桶的价值预估后果以 KV 构造写入词表。

在线阶段

  • 特色抽取 & 解析:进行特色抽取、解析,依照离线分桶规定生成 Key 值。
  • 原始价值预估:依据 Key 值查找对应分桶的价值,而后通过线性插值计算原始队列长度下申请的价值。
  • 档位价值预估:如下图所示,借助粗排打分,通过计算不同档位下价值的衰减状况,实现不同档位的价值预估。

3.1.4 流量算力预估

业内智能算力的落地以弹性队列为主,个别采纳队列长度作为流量算力评估指标,而队列长度作为流量算力评估指标面临以下两个问题:

  • 通用性问题:在弹性模型、弹性通道和弹性链路中流量算力耗费不禁队列长度惟一确定,比方不同起源的流量可能走不同模型(不同模型算力耗费可能不同)。
  • 精确度问题:外卖广告场景下,即便对于弹性队列动作,流量算力耗费和队列长度也不是简略的线性关系。

算力评估指标选取:为了解决以上问题,咱们采纳流量耗费的 CPU 工夫作为流量算力评估指标。

如图所示,流量算力预估包含离线和在线两个阶段。

离线阶段

  • 特色筛选 & 分桶:基于离线特色重要性剖析和散布状况,进行特色筛选和分桶。
  • 模型训练

    • 训练过程:首先将样本划分到不同特色分桶中(同一分桶中队列长度不同,其余特色雷同),而后别离对不同分桶拟合算力和队列长度的关系。

      • 次要问题:因为数据分布不均匀,队列长度大于肯定阈值后,因为数据稠密,分桶内算力统计值开始呈现稳定,不利于线上决策。
    • 为了解决数据稠密的问题,并拟合实在业务中的 拆包景象 ,咱们应用了 分段线性拟合 计划,将算力和队列长度之间的关系拟合为分段线性函数(下图是某个特色分桶内算力和队列长度关系拟合后果)。
  • 算力词表存储:不同特色分桶的算力预估后果以 KV 构造写入词表。

在线阶段

  • 特色抽取 & 解析:进行特色抽取、解析,依照离线分桶规定生成 Key 值。
  • 算力预估:依据 Key 值查找对应分桶的算力。

3.1.5 档位决策

1. 离线 λ 求解

基于价值预估和算力预估模块,通过回放历史流量,利用二分查找算法求解最优 λ。

离线 λ 求解的外围步骤是流量回放:通过重放历史同时段流量,复用线上逻辑,为每个申请模仿决策以后 λ 下的最优档位。

次要问题及解决方案

  • 问题形容:离线流量大,将流量划分为多个工夫片后,λ 的求解过程须要进行屡次流量回放,仿真复杂度高。
  • 解决方案:通过流量采样、多个工夫片并行化求解等计划,疾速求解最优 λ。

2. 在线档位决策

3.2 零碎稳定性保障

在智能算力下,零碎从等额算力调配转换成动静算力调配,为保障系统服务稳定性,咱们提供了熔断降级等惯例措施,还实现了基于零碎状态的 PID 实时调控性能。

  • 流量准入:提供分广告位、城市、时段等不同流量准入规定,管制智能算力流量。
  • 监控报警:提供 PV 和零碎整体两个维度的档位、性能、算力等变动监控和阈值报警。
  • 熔断降级:实时监控智能算力的异样,达到配置的异样阈值后,智能算力会主动熔断降级,进行等额算力调配。
  • 异步决策:为保障主流程整体链路耗时不增长,智能算力决策是一个异步的过程,超时后进行等额算力调配。

3.2.2 基于零碎状态的 PID 实时调控

PID(Proportion Integration Differentiation)是一个通过比例、积分、微分进行管制的支流控制算法,咱们通过对系统状态的实时监控和变动感知,基于 PID 算法对系统状态进行实时调控,保证系统状态的稳固。

零碎状态通常能够用零碎的 CPU/GPU 利用率、QPS、RT(Avg、TP99、TP999 等)、调用失败率(FailRate)等指标掂量。

调控指标

调控指标应该选取最可能疾速反映出零碎状态变动的指标,基于这个准则,咱们选取了 TP999、FailRate、CpuUtils 作为调控指标。

调控策略

基于 PID 调控器,反对多种调控策略:

  • 调控动作档位:对于弹性队列,能够调控队列长度的系数或者下限,从而调节候选队列长度。
  • 调控决策公式:能够通过调控决策公式的 λ 系数,从而调节零碎整体的算力耗费。

调控过程

  • 零碎状态上报:投放引擎服务通过监控零碎,实时反馈系统以后状态,同步到 MQ,其中外围指标具备 10s 的时效性。
  • 采集组件:基于 Flink 流解决框架,实时解析聚合零碎状态数据,并进行去噪和平滑解决,解决后的数据写到 KV 存储。
  • 调控组件:基于 PID 算法,通过轮询感知零碎状态变动,依据抉择的调控指标,实时调控零碎算力,将调控后果反馈到投放引擎的决策组件,造成调控闭环。

智能算力接入 PID 实时调控后,在零碎负载偏高时,能够疾速稳固无效的反馈调节,将零碎性能放弃在指标水位。

4. 试验

4.1 试验设置

  • 零碎算力容量的选取:为了保障线上零碎能依据实时流量疾速调整,联合外卖的流量特点,咱们抉择 15min 作为最小的调控单元;理论场景中,咱们选取过来多天内流量最大且性能稳固的高峰期工夫片,并统计该工夫片内耗费的总 CPU 工夫作为零碎算力容量 C。
  • Baseline 选取:选取线上无智能算力的流量作为对照组。
  • 流量价值预估:选取最近多天流量作为训练数据,应用 XGB 模型进行预估并将后果写入词表。
  • 流量算力预估:选取最近多天流量作为训练数据,将算力随队列长度的变动拟合为分段线性函数,并将最终预估后果写入词表。
  • 离线 λ 求解:外卖场景中,同环比流量变化趋势基本一致,咱们通过重放昨日流量,离线计算当日每个工夫片内(15 分钟为一个工夫片)最优 λ 并存储为词表。
  • 试验思路:离线仿真时应用的零碎算力容量 C 可控制线上算力的耗费,故而可通过调节离线求解应用的零碎算力容量 C 实现机器资源持平或业务收益持平的试验。

4.2 试验一:机器资源持平,进步业务收益

CPM ROI CTR CVR 机器资源
Baseline(零碎算力容量 =C) +0.00% +0.00% +0.00% +0.00% +0.00%
智能算力(零碎算力容量 =C) +2.36% -1.40% +0.94% +0.09% +0.46%

收益起源剖析

  • 流量顶峰时段,保证系统稳固的同时,通过差异化算力调配晋升业务收益。
  • 非流量顶峰时段,进步系统资源利用率,将闲暇机器资源转化为业务收益。

4.3 试验二:业务收益持平,缩小机器资源

CPM ROI CTR CVR 机器资源
Baseline(零碎算力容量 =C) +0.00% +0.00% +0.00% +0.00% +0.00%
智能算力(零碎算力容量 =60% * C) +0.70% -1.22% +0.15% +0.85% -40.8%

收益起源剖析

  • 通过压抑午顶峰和晚顶峰算力耗费,达到缩小机器资源的指标。从下图能够看出,在顶峰时段,实验组的机器资源耗费约占对照组的 60%。
  • 同时,在顶峰时段进行差异化算力调配,在非顶峰时段进步资源利用率,填平整体业务收益。

5. 总结与瞻望

这篇文章次要从最优档位决策和零碎稳定性保障两个方面,介绍了智能算力在外卖广告从 0 到 1 建设过程中的思考和优化思路。

将来在算法策略上,咱们将尝试基于进化算法和强化学习算法,对系统全链路组合下的算力最优调配问题进行建模和求解;在引擎架构上,对系统仿真能力、在线决策能力和稳定性保障能力进行继续优化,同时尝试和公司弹性伸缩零碎相结合,施展智能算力的更大价值。

6. 参考文献

[1] Jiang, B., Zhang, P., Chen, R., Luo, X., Yang, Y., Wang, G., … & Gai, K. (2020). DCAF: A Dynamic Computation Allocation Framework for Online Serving System. arXiv preprint arXiv:2006.09684.

7. 作者简介

顺辉、家宏、宋伟、国梁、乾龙、乐彬等,均来自美团外卖广告技术团队。

8. 招聘信息

美团外卖广告技术团队大量岗位继续招聘中,诚招广告后盾 / 算法开发工程师及专家,坐标北京。欢送感兴趣的同学退出咱们。可投简历至:maoshunhui@meituan.com(邮件主题请注明:美团外卖广告技术团队)

浏览美团技术团队更多技术文章合集

前端 | 算法 | 后端 | 数据 | 平安 | 运维 | iOS | Android | 测试

| 在公众号菜单栏对话框回复【2020 年货】、【2019 年货】、【2018 年货】、【2017 年货】等关键词,可查看美团技术团队历年技术文章合集。

| 本文系美团技术团队出品,著作权归属美团。欢送出于分享和交换等非商业目标转载或应用本文内容,敬请注明“内容转载自美团技术团队”。本文未经许可,不得进行商业性转载或者应用。任何商用行为,请发送邮件至 tech@meituan.com 申请受权。

退出移动版