云服务器建立多个网站吗,h5网站开发培训哪里好,网站建设费用什么意思,抖音带运营是怎么回事作者 | 泰来 导读 随着近年深度学习技术的发展#xff0c;搜索算法复杂度不断上升#xff0c;算力供给需求出现了爆发式的增长。伴随着AI技术逐步走到深水区#xff0c;算法红利在逐步消失#xff0c;边际效应日益显著#xff0c;算力效能的提升尤为重要#xff0c;同时随…
作者 | 泰来 导读 随着近年深度学习技术的发展搜索算法复杂度不断上升算力供给需求出现了爆发式的增长。伴随着AI技术逐步走到深水区算法红利在逐步消失边际效应日益显著算力效能的提升尤为重要同时随着宏观经济影响大规模的算力需求供给也遭遇到了瓶颈。同时随着流量、时间或系统故障时带来的容量变化总算力约束也在时刻改变周期性的出现波峰、波谷以及会因为流量突增、网络抖动等原因导致系统出现稳定性问题。 在此背景下需要一种更加智能化、个性化的算力调控分配方法不断提高系统的自适应性使得在给定资源上限的情况下最大化资源投入的性价同时在故障时刻发生时自适应的调整算力分配降低系统负载。 全文4328字预计阅读时间11分钟。 01 问题与挑战
互联网行业十余年的蓬勃发展及硬件性能的持续攀升使得 Ranking相关算法进入到了深度学习时代模型、技术创新层出不穷。但随着技术逐步进入到深水区在同样的算力需求下对效果的增长边际已经非常明显。
同时伴随当前宏观经济影响大规模算力的需求供给也持续遭遇瓶颈如何在有限的算力资源内不断创造出更大的效果价值是一项非常有挑战性的工作。 为此我们不断探索根据流量价值及系统状态自适应的进行算力分配使得总体投入产出比不断提升。 02 整体思路
目前搜索系统流转过程中调控手段彼此相互之间是独立的调控的算子的输入输出没有全局视角调控算子彼此割裂、联动和管理是比较困难的且调控手段大多基于静态阈值配置。但我们认为系统中请求经过每层的调控算子是有状态的理想的级联系统中每种调控算子应该是全局可见的需要从全局的视角更好的审视业务系统站在更高的维度去看算力调控分配这项工作。
我们在微观和宏观两方案开展了相关调控工作
1.微观忽略系统容量状态在当前时刻下根据流量产生的价值来动态的分配算力使得在给定算力总约束下获得全局最优。 2.宏观随着流量、时间或系统故障时带来的容量变化总算力约束在不断改变需要在给定的资源及响应时间限制下计算出在当前限制条件下的最优分配方式。动态的调整系统核心阶段的计算强度合理调控峰值算力。并基于搜索系统的实时状态反馈自动的调节系统的安全状态。使搜索系统能够在速度、资源、效果、稳定性等多个维度上进行自适应的调控。 2.1 问题建模
变量说明
第i条流量 r i r_i ri。
流量i在阶段j的具体信息例如队列长度模型选型等可以用表示其中的alpha beta gamma都可以根据经验进行设定并用实验来验证。 Q ( i , j ) [ α ∗ q u e u e l e n g t h , β ∗ c p u u s a g e , γ ∗ g p u u a s a g e ] Q_(i,j) [α*queue_length, β*cpu_usage, γ*gpu_uasage] Q(i,j)[α∗queuelength,β∗cpuusage,γ∗gpuuasage]
流量在第j阶段的折扣因子 Y i Y_i Yi。
第i条流量的价值 O i Y ( r i , Q ( i , 1 ) , Q ( i , 2 ) , … , Q ( i , N ) ) O_iY(r_i,Q_(i,1),Q_(i,2),…,Q_(i,N) ) OiY(ri,Q(i,1),Q(i,2),…,Q(i,N)) 目标通过调控流量在各个阶段的信息例如队列长度、模型选型等从而调节折扣因子最终实现流量价值最大化假设M条流量经过N个阶段表达如下 C1 成本约束对于任意一个阶段都必须小于等于其成本
C2 时间约束对于任意一个请求流量在N个阶段的耗时综合都必须小于等于规定的耗时
C3 辅助约束对于任意一个请求任意一个阶段都必须有大于等于0的值。
对于一个实时的搜索系统来说在线进行上述的优化并不太实际也会带来比较多的困难。为了简化分析和提高系统的鲁棒性我们将上述N个阶段拆封成N个子问题这样方便对各个阶段进行监控和可靠的干预提高系统的鲁棒性例如当系统出现巨大的变化时可以随时动态调整各个阶段的参数。简化问题求解将C1、C2约束进行一定的拆分。 具体来说对于阶段j流量的价值最大化我们可以看作是上述的一个子问题。 假设 Y j r i , Q ( i , j ) Y_j r_i,Q_(i,j) Yjri,Q(i,j)是单调递增的但其对 Q ( i , j ) Q_(i,j) Q(i,j)的导数是单调递减的也就是其价值会随着配置资源的增加而越来越缓慢的增加。
2.2 示例说明
示例用相关性精排阶段的弹性候选集进行举例
假设将流量i细化成第i条Queryj阶段则为具体筛选阶段增加一个维度k表示URL级别的参数和特征信息。在正排候选集筛选阶段k信息表示为多个特征的分数信息authority_feature【权威性特征】、click_feature【点击特征】…correlation_feature【相关性特征】。
则在正排候选集筛选阶段请求i的第k条url的信息可以表示为 流量i在弹性候选集下的折扣因子可以看作是 1 - 删掉URL数量在原本可出现在最终排序的Top40的概率假如候选集合中完全没有删除的URL则无折扣损失若是候选集合中删除了URL但对最终Top40的召回无影响也可以看作是对总价值无折扣影响。 具体来说针对第i条query的k条url的具体信息我们采用多个维度的特征进行考量。 其中 如果是0表示丢弃1表示留下第k条url希腊字母表示的是采取的阈值标准例如评分位于后x%。如果一个url的所有特征贡献度排名都处于分布的末尾则会将该url从候选集中剔除。 03 关键技术
过去传统的调控方式下既不知道上游阶段做过哪些调控动作也不知道在自己的阶段上做的调控动作下游是如何反馈的只能追求自己的局部最优。而我们认为在搜索这种分层的级联系统下越往下流转看到的特征和信号越多调控动作应该随着流转过程发生状态转变不应该是静态的。我们创新的采用弹性级联调控框架将调控手段进行组合追求全局的最优解从全链路上提升算力投入产出的性价比。 具体做法我们构建的弹性级联框架包含四个部分
1、调控算子集合将调控动作按照Query级别、URL级别、Feature级别进行划分调控算子拥有相同基类接口规范统一
2、计算中心负责实时计算各种调控动作所需的各类信号、以及流量价值的判断、容量信号的获取等
3、参数集合经过计算中心产出的特征和信号固化超参数使得模块内超参数全局可见跨模块之间按照规定协议统一进行交互
4、调控决策器主要负责根据参数集合确定各个阶段的调控档位设置并调用算子集合里的算子进行执行每个调控阶段包含控制流Control Level和反馈流FeedbackLevel控制流能结合当前阶段看到的特征和信号给出它下游其他阶段的调控档位反馈流是当前阶段参考其他阶段给出的调控档位建议和当前阶段看到的特征和信号确定实际执行的调控档位。通过这种方式每个调控阶段既能看到到其他阶段实际执行的调控状态同时也能根据它们对当前阶段的指导建议进行综合判断最终在全链路上获取全局最优解。 如上图左侧可以看到整个弹性级联框架的组成部分右侧是举例正排阶段的弹性候选集的实际计算过程将各种维度的特征通过计算中心生成价值参数用于调控决策器进行决策然后给出实际的正排计算集合。我们不仅建立控制反馈流级联自适应调控系统而且还提供了一个全局视角的弹性算力分配控制中心。弹性算力系统主要通过对集群各种维度指标的获取、策略分析及周期性执行最适合当前机器负载状态的策略组合参数来实现其核心弹性算力分配决策。
根据当前搜索系统当前智能弹性调参把系统定义和描述为下面4种状态系统异常状态负载峰值状态弹性过渡状态负载低谷状态根据不同的系统状态执行当前状态的策略集合从而使资源使用率及业务收益效果最优。具体方案见下图 主要包含流程如下
信息采集自动化的周期性采集业务日志流量pv流量分类流量质量和机器状态CPU/MEM使用率等信息。对于这些信息进行深入挖掘分析主要从以下几个时间维度进行采集
1、峰值时间段模块状态信号
2、前n个采集周期模块状态信号
3、前一天同时刻前n个采集周期模块状态信号
4、前一周同时刻前n个采集周期模块状态信号。
系统状态预估: 对各种维度信息采集之后通过人工规则在线策略离线预估等手段评估系统当前状态把目前系统划分为系统异常状态系统负载峰值状态系统负载低谷状态系统负载过渡状态。下面是系统状态定义规则及状态转移图
系统异常状态系统发生故障例如系统可用性SLACPU负载率结果空值率等不符合预期。
系统负载峰值状态系统请求数CPU负载率等系统容量指标大于指定阈值。
系统负载低谷状态系统请求数CPU负载率等系统容量指标小于指定阈值。
系统负载过渡状态负载峰值和低谷之间的过渡状态。 档位判断根据系统状态抽象成便于系统决策的系统档位及每个档位内需要关注的系统问题。
1、异常档位如何快速服务降级保证保证系统质量。
2、峰值档位需要关注系统的稳定性和响应时间以确保系统在高负载下依然能够稳定运行。
3、低谷档位可以考虑优化系统资源的分配提升资源的投入产出比。在探测到系统出现异常故障状态时。
4、过渡档位一种中间状态它的主要作用是在系统从低负载状态过渡到高负载状态或从高负载状态过渡到低负载状态时提供一个缓冲阶段以避免系统状态的突然跳变。过渡档位不进行策略的调整而是保持系统在一个相对稳定的状态。这样做的目的是为了避免频繁的策略调整带来的系统震动保证系统的稳定性。
方案决策执行
降级档位主要应对系统异常或重大风险其对应的策略包括关闭被动触发流量以及降低召回集合降低复杂模型计算等策通过这种方式降低系统的负载保证核心业务的正常运行。低谷档位对应的是弹性策略集这些策略主要目的是在低谷期加强复杂策略的计算提升搜索效果。而在峰值档位我们主要采用削峰策略包括减少被动触发流量以确保系统在高负载下依然能够稳定运行。
示例视频搜索弹性扩触发
在系统资源容量低谷阶段根据指标采集数据计算当前系统容量资源冗余情况基于冗余资源进行扩触发比例计算通过弹性算力决策模块下发触发信号利用闲时资源扩大流量的触发面。
04 总结与展望
通过基于弹性级联框架的调控方式提升了分层系统的效益比对于每个用户请求实施精细化、差异化的调控组合在算力效能提升上取得了不错的成绩。
算力分配是架构研究的核心问题之一未来会在以下两个方面持续开展系统性工作
1、结合AI大模型的推理能力在调控组合上可以做到更加精细化在算力效能的提升上会带来更大的挖掘空间
2、通过自适应的宏观调控给系统稳定性带来了柔性降级能力后续会在这个方向上持续深耕不断提升系统自动化的处置能力。
——END——
推荐阅读
UBC SDK日志级别重复率优化实践
百度搜索深度学习模型业务及优化实践
文生图大型实践揭秘百度搜索AIGC绘画工具的背后故事
大模型在代码缺陷检测领域的应用实践
通过Python脚本支持OC代码重构实践二数据项提供模块接入数据通路的代码生成