当前位置: 首页 > news >正文

百度搜索智能化算力调控分配方法

作者 | 泰来

导读

随着近年深度学习技术的发展,搜索算法复杂度不断上升,算力供给需求出现了爆发式的增长。伴随着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_i=Y(r_i,Q_(i,1),Q_(i,2),…,Q_(i,N) ) Oi=Y(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条Query,j阶段则为具体筛选阶段,增加一个维度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个采集周期模块状态信号。

系统状态预估: 对各种维度信息采集,之后通过人工规则,在线策略,离线预估等手段评估系统当前状态,把目前系统划分为系统异常状态,系统负载峰值状态,系统负载低谷状态,系统负载过渡状态。下面是系统状态定义规则,及状态转移图:

系统异常状态:系统发生故障,例如系统可用性SLA,CPU负载率,结果空值率等不符合预期。

系统负载峰值状态:系统请求数,CPU负载率等系统容量指标大于指定阈值。

系统负载低谷状态:系统请求数,CPU负载率等系统容量指标小于指定阈值。

系统负载过渡状态:负载峰值和低谷之间的过渡状态。

图片

档位判断:根据系统状态抽象成便于系统决策的系统档位,及每个档位内需要关注的系统问题。

1、异常档位:如何快速服务降级,保证保证系统质量。

2、峰值档位:需要关注系统的稳定性和响应时间,以确保系统在高负载下依然能够稳定运行。

3、低谷档位:可以考虑优化系统资源的分配,提升资源的投入产出比。在探测到系统出现异常故障状态时。

4、过渡档位:一种中间状态,它的主要作用是在系统从低负载状态过渡到高负载状态,或从高负载状态过渡到低负载状态时,提供一个缓冲阶段,以避免系统状态的突然跳变。过渡档位不进行策略的调整,而是保持系统在一个相对稳定的状态。这样做的目的是为了避免频繁的策略调整带来的系统震动,保证系统的稳定性。

方案决策执行:

降级档位主要应对系统异常或重大风险,其对应的策略包括关闭被动触发流量,以及降低召回集合,降低复杂模型计算等策,通过这种方式降低系统的负载,保证核心业务的正常运行。低谷档位对应的是弹性策略集,这些策略主要目的是在低谷期加强复杂策略的计算,提升搜索效果。而在峰值档位,我们主要采用削峰策略,包括减少被动触发流量,以确保系统在高负载下依然能够稳定运行。

示例:视频搜索弹性扩触发:

在系统资源容量低谷阶段,根据指标采集数据计算当前系统容量资源冗余情况,基于冗余资源进行扩触发比例计算,通过弹性算力决策模块下发触发信号,利用闲时资源扩大流量的触发面。

04 总结与展望

通过基于弹性级联框架的调控方式,提升了分层系统的效益比,对于每个用户请求实施精细化、差异化的调控组合,在算力效能提升上取得了不错的成绩。

算力分配是架构研究的核心问题之一,未来会在以下两个方面持续开展系统性工作:

1、结合AI大模型的推理能力在调控组合上可以做到更加精细化,在算力效能的提升上会带来更大的挖掘空间;

2、通过自适应的宏观调控给系统稳定性带来了柔性降级能力,后续会在这个方向上持续深耕,不断提升系统自动化的处置能力。

——END——

推荐阅读

UBC SDK日志级别重复率优化实践

百度搜索深度学习模型业务及优化实践

文生图大型实践:揭秘百度搜索AIGC绘画工具的背后故事!

大模型在代码缺陷检测领域的应用实践

通过Python脚本支持OC代码重构实践(二):数据项提供模块接入数据通路的代码生成

相关文章:

百度搜索智能化算力调控分配方法

作者 | 泰来 导读 随着近年深度学习技术的发展,搜索算法复杂度不断上升,算力供给需求出现了爆发式的增长。伴随着AI技术逐步走到深水区,算法红利在逐步消失,边际效应日益显著,算力效能的提升尤为重要,同时随…...

如何搭建接口自动化测试框架?

经过了一年多的接口测试工作,旧的框架也做了一些新的调整,删除了很多冗余的功能,只保留了最基本的接口结构验证、接口回归测试、线上定时巡检功能。 一、框架的演进 界面 UI 做了优化,整个框架的画风突然不一样了(人靠…...

ubuntu 20.04+ORB_SLAM3 安装配库教程

目录 安装ros(如果只是运行ORB-SLAM3,可以跳过安装)0. ros 安装教程1. 安装opencv2. 安装Pangolin3. 安装Eigen34.安装Python & libssl-dev5.安装boost库6.安装ceres库(不必须)7.安装Sophus库(不必须)8. 安装g20库…...

Poly风格模型的创建与使用_unity基础开发教程

Poly风格模型的创建与使用 安装Poly相关组件Poly模型的创建Poly模型编辑 安装Poly相关组件 打开资源包管理器Package Manager 在弹出的窗口左上角Packages选择Unity Registry 搜索框搜索 Poly 搜索结果点击Polybrush 点击右下角 Install 同时也别忘了导入一下模型示例&#…...

终于有人把VMware虚拟机三种网络模式讲清楚了!

前段时间VMware更新了,你用上最新版了吗? 有几个网工在操作中遇到过各种各样的问题。 比如说由于公司服务器重启导致出现下面的问题:在Xshell里连接虚拟机映射时连接失败;能够连接上虚拟机的映射地址,但git pull时报…...

Flutter实践二:repository模式

1.repository 几乎所有的APP,从简单的到最复杂的,在它们的架构里几乎都包括状态管理和数据源这两部分。状态管理常见的有Bloc、Cubit、Provider、ViewModel等,数据源则是一些直接和数据库或者网络客户端进行交互,取得相应的数据&…...

交换机Vlan和端口配置(H3C)

交换机Vlan配置(H3C) 配置VLAN配置VLAN接口的IP地址开启ARP网关保护功能,配置被保护的网关IP地址 配置VLAN Vlan物理端口3GigabitEthernet 1/0/1 ~ GigabitEthernet 1/0/14 ;GigabitEthernet 2/0/1 ~ GigabitEthernet 2/0/1450Gi…...

vue自定义指令控制权限

1、在main.js中注册全局指令 import Vue from vue;// 按钮权限控制指令 Vue.directive(permission, {inserted: (el, binding)>{const { value } binding;// 判断当前用户是否拥有该按钮权限if (!checkPermission(value)) {el.parentNode.removeChild(el);}} }); // 判断…...

jquery获取url参数

使用jquery获取url以及使用jquery获取url参数是我们经常要用到的操作,下面通过文字说明加代码分析的形式给大家解析,具体详情请看下文。 1、jquery获取url很简单,代码如下: window.location.href; 其实只是用到了javascript的基…...

SpringBoot和Spring源码下载

1.下载:在一个空的干净地创建一个文件夹叫springsourcecode,其实叫什么都行的。 git clone https://github.com/spring-projects/spring-framework.git 2.JDK要和gradle匹配 我们要21的,今天为止2023年11月13日,idea是2023.2。 …...

【算法练习Day49】每日温度下一个更大元素 I

​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:练题 🎯长路漫漫浩浩,万事皆有期待 文章目录 每日温度下一个更大元素 I总…...

Maven打包时跳过测试代码

Maven 打包时会把一些用于测试的类或文件也一起打包,无疑增加了打包失败的风险,也加剧了文件占用磁盘的大小。 所以本次写一下如何跳过测试类。 命令行方式跳过测试 我们可以用两种命令来跳过测试 mvn clean package -DskipTestsmvn clean package -D…...

2023-2024 年适用于 Windows 电脑的顶级视频录制软件

想捕捉您正在在线观看的视频吗?使用网络摄像头录制视频会议以供日后参考。正在寻找可以完成这些任务的视频捕捉软件?这篇文章说明了一切。以下是一些适用于 Windows PC 的最佳视频录制工具。 什么是视频录制软件? 顾名思义,视频捕…...

2023-11-14 mysql-主从复制-重置主从连接-记录

摘要: mysql的主从复制, 当从库执行binlog出错后, 会中止主从复制. 此时需要重置主从连接, 以重建主从关系. 主库操作: 一. 清理同步的数据库 drop database test;二. 重置主库状态 reset master;reset slave all;三. 检测主库状态 show master status;mysql> show master…...

go语言学习之旅之安装sdk环境,hello world!

学无止境 为什么学习Go语言 高效编程: Go语言被设计为一门高效的编程语言。其编译速度快,执行速度也相对较快,适合用于构建高性能的应用程序。 并发支持: Go语言天生支持并发编程,通过goroutine和channel提供了简单而…...

《Linux从练气到飞升》No.28 Linux中的线程同步

🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的…...

爬取动态网页内容的库

爬取动态网页内容时,传统的 Python 爬虫库(如 Requests、BeautifulSoup)可能无法直接获取 JavaScript 动态生成的内容。为了处理这种情况,你可以使用一些特别设计的库,它们能够模拟浏览器行为,执行 JavaScr…...

Ubuntu 安装常见问题

1. 安装oh my zsh 搜狗输入法不能用 vim /etc/environmentexport XIM_PROGRAMfcitx export XIMfcitx export GTK_IM_MODULEfcitx export QT_IM_MODULEfcitx export XMODIFIERS“imfcitx” export LANG“zh_CN.UTF-8”配置完后重启,稍等一会,右上角会有个…...

大数据分析师职业技能提升好考吗?含金量高不高

随着大数据时代的到来,大数据分析技能需求已经成为很多企业和机构的必备要求。大数据分析师证书成为当下的热门之一,那么大数据分析师证书需要具备哪些条件呢? 首先,报考大数据分析师证书需要具备以下方面的条件: …...

JumpServer2023漏洞复现合集

本文主要复现JumpServer2023年出现的大批量漏洞,既是分享也是为了记录自己的成长,近期会持续更新。 1. JumpServer MongoDB远程代码执行漏洞(CVE-2023-43651) 1.1 漏洞级别 高危 1.2 漏洞描述 经过身份验证的用户可以利用Mon…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...

SpringCloudGateway 自定义局部过滤器

场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...

Map相关知识

数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...