在深度学习时代,算力的需求和消耗日益增加,如何下降算力成本,提升算力效率,逐渐成为一个重要的新课题。智能算力旨在对算力进行精细化和个性化分配,实现最优化资源利用。本文主要分享美团外卖广告在智能算力探索和实践过程当中积累的经验,但愿能给你们带来一些帮助或者启发。前端
目前,美团外卖日订单量已突破4000万,成为美团最为重要的业务之一。外卖广告服务也从最初的支撑单一业务线发展到如今的十余条业务线,服务总体承受的流量日益增加,所消耗的机器资源也达到了必定的规模。算法
在外卖场景下,流量呈现明显的双峰结构,即午饭和晚餐两个时段为流量波峰,其他时段流量较小。在这种流量特色下,外卖广告服务在高峰时段面临较大的性能压力,在非高峰时段存在大量算力冗余,从全局来看,机器算力分配效率低,流量价值仍然具备较大的挖掘空间。一方面,流量消耗的算力没有根据流量价值进行动态的分配,形成系统在高价值流量上算力分配不足,价值没有获得充分的挖掘,而在低价值流量上,却存在浪费大量算力的现象;另外一方面,在非高峰时段,系统流量较低,致使系统的总体资源利用率偏低,限制了系统获取更高的业务收益。后端
所以,算力须要进行更合理的分配来获得更加高效的利用。当前业界对于动态算力分配的研究较少,以阿里巴巴定向广告平台的DCAF[1]为表明,该方案根据流量价值进行差别化的算力分配,对不一样价值的流量分配不一样的候选队列长度,实现有限资源约束下的收益最大化。DCAF提供了一种优秀的解决方案,但该方案在外卖广告场景下存在必定的局限性。安全
针对外卖广告场景,外卖广告技术团队在DCAF方案的基础上进行了一系列探索和改进,首次进行了队列弹性分配和模型弹性分配相结合的尝试,并取得了不错的收益。一方面,在机器资源持平的状况下,CPM能够提高2.3%;另外一方面,在业务收益持平的状况下,机器资源能够减小40%,最后咱们在外卖列表广告精排阶段推全了机器资源持平的方案。架构
在外卖广告投放引擎中,为应对极大的在线流量压力和庞大的候选集,咱们将整个检索过程设计成候选集依次递减的漏斗型级联架构,主要包含召回、粗排、精排、机制等模块。框架
实现智能算力的总体思路,是在系统算力容量约束下,对不一样价值流量进行差别化算力分配,从而提升在广告检索过程当中的算力分配效率,实现收益的最大化。智能算力主要包括如下四个要素:运维
1. 流量价值量化:流量价值指流量为平台、广告商家、用户三方带来的收益,系统须要具有量化流量价值的能力。异步
2. 流量算力量化:流量算力指流量在系统内消耗的机器资源,在外卖广告场景下,流量消耗的算力和候选集大小、召回通道数量、模型大小、链路复杂度等系统变量紧密相关,一样系统须要具有量化流量算力的能力。函数
3. 系统算力容量量化:系统算力容量指系统的机器资源总和,和流量算力量化的量纲一致,一般能够经过压测等手段获取系统的算力容量;在系统算力分配过程当中,须要保证整体流量算力消耗不超过系统的算力容量。性能
4. 智能算力分配:基于以上三个要素,在广告投放引擎全链路进行智能算力分配,咱们把算力分配的手段定义为“弹性动做”,在外卖广告场景下,咱们主要概括了如下四种动做:
弹性链路:在检索链路上,不一样价值流量能够分配不一样复杂度的检索链路。
这些弹性动做的可选范围,定义为“弹性档位”,如队列长度100和200对应弹性队列的两个不一样档位。在智能算力下,算力的分配过程即弹性动做和弹性档位的智能决策过程。
为了让智能算力在外卖广告场景下落地,咱们主要面临着以下的挑战:
问题求解
系统稳定性保障
通用性&扩展性
通过工程团队和算法团队深度Co-Design后,咱们设计了一套多动做组合决策的智能算力框架。整个框架由决策组件、采集组件和调控组件组成,其中决策组件做为智能算力框架的核心,以SDK形式嵌入应用服务,提供可复用可扩展的多动做组合最优档位决策能力和系统稳定性保障能力,为广告投放引擎的各阶段赋能;采集组件和调控组件为系统稳定性保障提供支撑。下面主要对最优档位决策和系统稳定性保障两个模块进行详细介绍。
在业内已有弹性队列求解方案的基础上,咱们进行一系列探索和改进:
基于以上策略,咱们实现了多弹性动做组合最优化档位决策。
现有方案
DCAF[1]将该问题转化为对应的对偶问题进行求解,获得决策公式,实现弹性队列分配。
方案改进
上述建模方案在外卖广告场景中存在如下问题:
如图所示,因为档位$j=j_0$的算力和价值已知,无需对不一样模型的价值和算力进行预估,后续的流量价值预估和流量算力预估工做都面向弹性队列便可。
如图所示,最优档位决策模块分为离线和在线两个阶段,包含以下四个子模块:
流量价值预估是智能算力决策的核心,要求具有必定准确性。而线上进行模型预估会增长检索链路耗时,咱们采用离线XGB模型预估+在线查找词表的方案,既保证了预估的准确性,又足够轻量。
价值评估指标选取:通常来讲,流量价值指当前流量为广告平台带来的收入;在外卖广告场景中,咱们关注平台收入的同时,也关注商家的收入,所以咱们的流量预估的指标选定为$k_1 * 平台收入 + k_2 * 商家收入$。
如图所示,流量价值预估模块包含离线和在线两个阶段。
离线阶段:
模型训练
在线阶段:
业内智能算力的落地以弹性队列为主,通常采用队列长度做为流量算力评估指标,而队列长度做为流量算力评估指标面临如下两个问题:
算力评估指标选取:为了解决以上问题,咱们采用流量消耗的CPU时间做为流量算力评估指标。
如图所示,流量算力预估包括离线和在线两个阶段。
离线阶段:
模型训练
训练过程:首先将样本划分到不一样特征分桶中(同一分桶中队列长度不一样,其余特征相同),而后分别对不一样分桶拟合算力和队列长度的关系。
在线阶段:
1. 离线 λ 求解
基于价值预估和算力预估模块,经过回放历史流量,利用二分查找算法求解最优 λ。
离线 λ 求解的核心步骤是流量回放:经过重放历史同时段流量,复用线上逻辑,为每一个请求模拟决策当前 λ 下的最优档位。
主要问题及解决方案
2. 在线档位决策
在智能算力下,系统从等额算力分配转换成动态算力分配,为保障系统服务稳定性,咱们提供了熔断降级等常规措施,还实现了基于系统状态的PID实时调控功能。
PID(Proportion Integration Differentiation)是一个经过比例、积分、微分进行控制的主流控制算法,咱们经过对系统状态的实时监控和变化感知,基于PID算法对系统状态进行实时调控,保证系统状态的稳定。
系统状态一般能够用系统的CPU/GPU利用率、QPS、RT(Avg、TP9九、TP999等)、调用失败率(FailRate)等指标衡量。
调控目标
调控目标应该选取最可以快速反映出系统状态变化的指标,基于这个原则,咱们选取了TP99九、FailRate、CpuUtils做为调控目标。
调控策略
基于PID调控器,支持多种调控策略:
调控过程
智能算力接入PID实时调控后,在系统负载偏高时,能够快速稳定有效的反馈调节,将系统性能保持在目标水位。
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% |
收益来源分析
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% |
收益来源分析:
这篇文章主要从最优档位决策和系统稳定性保障两个方面,介绍了智能算力在外卖广告从0到1建设过程当中的思考和优化思路。
将来在算法策略上,咱们将尝试基于进化算法和强化学习算法,对系统全链路组合下的算力最优分配问题进行建模和求解;在引擎架构上,对系统仿真能力、在线决策能力和稳定性保障能力进行持续优化,同时尝试和公司弹性伸缩系统相结合,发挥智能算力的更大价值。
[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.
顺辉、家宏、宋伟、国梁、乾龙、乐彬等,均来自美团外卖广告技术团队。
美团外卖广告技术团队大量岗位持续招聘中,诚招广告后台/算法开发工程师及专家,坐标北京。欢迎感兴趣的同窗加入咱们。可投简历至:maoshunhui@meituan.com(邮件主题请注明:美团外卖广告技术团队)
阅读美团技术团队更多技术文章合集
前端 | 算法 | 后端 | 数据 | 安全 | 运维 | iOS | Android | 测试
| 在公众号菜单栏对话框回复【2020年货】、【2019年货】、【2018年货】、【2017年货】等关键词,可查看美团技术团队历年技术文章合集。
| 本文系美团技术团队出品,著做权归属美团。欢迎出于分享和交流等非商业目的转载或使用本文内容,敬请注明“内容转载自美团技术团队”。本文未经许可,不得进行商业性转载或者使用。任何商用行为,请发送邮件至tech@meituan.com申请受权。