解决方案:万象:百度的海量多媒体信息处理系统
优采云 发布时间: 2022-10-16 11:18解决方案:万象:百度的海量多媒体信息处理系统
由于用户可以访问和消费来自多个应用终端的内容和信息,因此搜索引擎需要采集他们在不同终端上的行为反馈以进行准确的排名。
这对搜索引擎爬虫系统提出了新的挑战,即如何获取分散到不同载体的用户行为数据。爬取系统需要超越以往只能爬取网页的限制,扩展到爬取图片、网页,甚至突破移动应用上的页面,获取用户授权的内容和信号。
进一步地,在搜索引擎内部的信息处理过程中,这些信号和特征以内容为粒度进行聚合传输,以便相同内容的其他载体在排序过程中使用这些信号。
比如谢昊的《会飞的大黄蜂》,在不同的视频中用户反馈信号不同,但本质上都是针对同一内容的用户反馈信号。传统上,这些视频来自不同的播放页面和站点,用户行为反馈信号被认为属于不同的网页,这种基于站点而不是内容的检索方式在新一代基于富媒体内容的搜索引擎系统中. 设计会有变化。
(3)富媒体信息消费方式多样化
传统网页搜索下,用户输入关键词检索信息,搜索引擎返回与用户搜索需求最相关的网页;而在富媒体信息下,用户不仅可以通过关键词检索信息,还可以输入图片检索信息,甚至通过内容语义。目前常见的产品形式有:
这些输入的多样化给搜索引擎的设计带来了新的要求:不仅是传统的基于item的倒置拉链,还有语义向量的倒置等等。
三、富媒体信息的处理与检索
富媒体信息处理与检索是指对视频、图片等多媒体资源进行收录筛选、索引,为用户提供通过文字、图片等输入方式检索信息的能力。下图为百度搜索引擎对富媒体信息的处理流程。
△ 富媒体信息处理与检索
首先,它会离线处理处理图片、视频等富媒体数据,识别内容和语义,然后将其转换为系统可以识别和处理的属性(如文本标签、分类标签等),并质量信息(如站点或作者权限、点赞/浏览量等,*敏*感*词*反信息等),或光学特性(如清晰度)。这些基本特征信息构成了富媒体数据的整个表示。
不同的富媒体数据之间也将存在相同/相似,包括和其他关系属性。例如,互联网上的许多视频片段可能来自某部电影;或者两个相同的视频文件来自不同的播放站点,具有不同的水印或封面。这种关系,在我们的系统中,称为实体粒度的聚合特征(相对于上一段提到的基本特征)。当判断两个实体相同时,可以将相关的特征信息合并汇总,供两个实体同时使用。比如播放量和点赞量会被累加,缺失的特征标签会被另一个实体补充等等,从而实现内容级别的聚合。
4.万象系统
在百度搜索引擎中,处理视频/图片等多媒体数据的系统称为:万象(取自包罗万象的意思,万象更新),就是对图片/视频等多媒体内容的处理和处理,提供*敏*感*词*收录,处理、过滤、索引能力为用户通过文本、图片等输入方式检索信息提供了强大的数据支持。
△万象建筑图
整个万象系统承载了百度搜索引擎的主要图像和视频数据处理,涉及海量的图像和视频(横视频和竖视频)。图片、视频搜索、推荐等。百度所有涉及富媒体的主要产品线。
规模和时效是整个系统处理富媒体信息的两个核心设计指标。
整个万象系统除了底层基础服务外,主要包括:
(1)千人系统:负责分析单个实体(图片/视频)的基本特征,例如分析单个图片的人物/场景/OCR/定义;
(2) Primitive system:负责分析实体之间的关系(同一性、相似性、收录、聚类等),例如是否为剪辑视频/是否为同一事件的图集等;
(3)Dding系统:负责对特征进行管理,以及根据内容实体的粒度对特征数据进行聚合和组织;
(4) 其他辅助系统:负责剪辑、转码、编辑等。
1. 刀片
千人系统分析单个实体产生的特征数据,我们称之为基础特征数据。分析和理解图片/视频是一个极其复杂且成本高昂的过程,需要调动整个千米系统中近数十万个Core弹性CPU资源和GPU/FPGA等专用计算资源。
在基本特征分析中,有些特征只需要低成本的CPU就可以分析处理,如图像的长宽等;而另一些则价格昂贵,需要GPU等高级硬件,制作时间长,如OCR/分类/清晰度等。高成本的功能将最大限度地减少重复计算并提高千英里的生产力。
△千人系统
在千人系统中,首要的问题是如何以有限的资源支撑如此庞大的计算需求。在千人系统中,所有的特征计算都被转换成 DAG 来执行。除了支持传统的批量特征计算外,流计算也是最重要的部分之一。DAG执行引擎可以有效管理各种特征关联,合并重复计算单元,结合数据热点调度,提高计算性能。同时还包括重算子的计算优化,比如OCR和视频指纹计算,如何突破单卡吞吐壁垒实现百倍甚至千倍规模增长等.
2.初始系统(初始)
仅仅分析单个图像或视频实体的特征并不足以满足业务需求。很多情况下,我们需要知道实体之间的关系,比如:(1)*敏*感*词*反识别,(2)原创识别,(3)高质量内容提取,(4)基于事件/时间/实体聚合搜索空间等关系,(5)基于相同或相似实体的推荐等。
这些关系的分析是由万象的子系统——楚元来完成的。
△初级系统
元元系统是根据千人系统产生的基本特征构建的。表征每个实体是它的基本特征属性,通过语料实体集中的指纹级比较,可以找到所需的各种关系。如何动态、实时地构建语料实体集是系统设计的挑战之一。
3. 阿萨诺斯
无论是千人输出的特性,还是楚渊输出的特性,最终都会被存储在特性数据库——丹顶系统中。
丹丁系统不仅存储实体的特征信息,更重要的是对实体粒度的特征属性进行聚合和传递。相同的两个实体(例如,视频)将具有不同的特征,例如标题、喜欢、转发等。如果圆圆分析这两个实体其实是同一个实体(比如只是同一个视频,不同水印),当信息聚合到丹顶系统时,相关属性会被聚合,可以用于任何实体同时。利用。
△ 脱丁系统
丹顶系统的聚合技术是将信息以内容为单位进行整合,从而为下游检索系统实现内容粒度的信息检索奠定基础。内容聚合过程不会擦除单个实体的原创特征信息,而是在保留单个实体的原创特征属性的同时实现动态聚合技术。
例如,实体 E1 和 E2 被认为是两个内容相同的视频,E1 具有更高质量的内容(例如,更清晰或没有黑白等),而 E2 具有更合适的标题 关键词,当用户使用搜索引擎时,E1会有更好的用户体验,并由搜索引擎分发给用户。此时生成的E1标题不是原创标题而是从E1和E2的标题关键词中选择的或者Reproduce的更适合相关性需求的标题。同时,E2的其他特征属性(如点击数、播放量、评论数等)也会同时添加到E1属性中,返回给搜索引擎作为最终的 E1 属性参与最终结果排序。
五、总结
在内容为王的时代,新一代搜索引擎已经从传统的基于网页的收录检索升级为基于富媒体信息等内容载体的信息收录检索。与传统网页不同,理解和处理富媒体数据比以前的网页更加困难和具有挑战性。
万象系统是百度搜索为解决富媒体信息海量处理问题而设计开发的系统。文章对万象系统进行了全面的概述。目前,万象系统已经承担了百度搜索所需的所有图片和视频数据。处理处理,管理超*敏*感*词*的图像和视频实体特征数据,支持每天数十亿的处理吞吐量,为百度产品的完善奠定基础。
原文链接:
百度架构师
百度官方技术公众号上线!
技术干货·行业资讯·在线沙龙·行业会议
招聘信息·内推信息·技术书籍·百度周边
欢迎各位同学关注!
解决方案:一种通用的基于实时指标监控管理方法
当前技术
在实时数据监控的基础上,也有一些开源架构提供相应的监控告警和可视化页面数据展示功能,如Prometheus和Zabbix,提供数据计算和数据可视化功能。很多情况下,我们需要使用调度任务按照指定的周期执行相应的应用程序。简单的任务可以借助 Spring 的定时任务来完成,复杂的任务可以借助一些通用的调度任务框架,比如 XXL-JOB 来完成。在使用Spring调度任务时,需要考虑分布式锁机制,防止不同的服务器同时运行相应的调度任务。同时,当相关机器出现问题时,应完成程序的自动切换。对于XXL-JOB架构的使用,需要构建相应的服务。当我们使用简单的程序应用时,投资成本比较大。
解决方案
从我们使用实时数据指标监控报警功能的角度来看,我们在现有数据指标计算的基础上,构建了一个灵活完善的数据监控报警系统。基于现有的实时数据指标结果信息完成告警监控。
方案详情一、报警规则后台管理模块
告警规则后台管理模块包括业务指标、告警规则、用户组三部分
2)告警规则:主要针对告警配置的管理,涉及告警级别、触发次数、告警时间、通知方式等。 3)用户组:主要针对业务指标生成的告警规则通知的用户组,用于完成消息通知,不同的用户组可以绑定不同的业务指标告警规则 2.调度任务数据查询模块
根据告警规则后台管理模块中配置的告警规则,定时调度查询,生成对应的指标结果信息
比如假设有一个业务维度,对应的维度名称是站点,站点下有不同的值(APP、微信、PC),用户配置的站点维度值是APP主站点,而对比昨天5分钟维度的同比数据,生成的rule_key为:APP主站_year-on-day_5分钟,查询rule_key下对应的表数据,结果信息如下:
{
"rule_key": "APP_同比昨天_5分钟",
"today": {
"202209021000": {
"pv": 111,
"uv": 1
},
"202209021005": {
"pv": 222,
"uv": 2
},
<p>
"202209021010": {
"pv": 333,
"uv": 3
},
"202209021015": {
"pv": 444,
"uv": 4
},
"202209021020": {
"pv": 555,
"uv": 5
}
},
"compared": {
"202209011000": {
"pv": 111,
"uv": 1
},
"202209011005": {
"pv": 222,
"uv": 2
},
"202209011010": {
"pv": 333,
"uv": 3
},
"202209011015": {
"pv": 444,
"uv": 4
},
"202209011020": {
"pv": 555,
"uv": 5
}
}
}</p>
其中,today为当天的时间数据,compare为比较时间,存储最近5个时间段的数据。
3.规则服务处理模块
收到调度任务数据查询模块生成的结果信息后,分析结果,将满足告警条件的信息发送给消息通知服务模块
用户对应的规则触发结果存储在redis中,其中redis的key为:{rule_key}_{user group}_{rule ID},结果为{number of times}_{触发状态(是否已经触发)}
ii. 如果不满足阈值告警触发条件,如果存储的值已经触发了告警阈值并且已经发送了告警信息,则将告警信息发送到消息通知服务模块,删除redis中的数据,如果告警阈值有未触发值,删除redis中的数据 4.消息通知服务模块
接收规则服务处理模块发送的数据,按照用户配置的消息发送形式组装发送消息信息,将告警规则发送给对应的用户
通过以上四个步骤,实现了实时数据指标级别的报警功能。当然,为了加快查询速度,可以将报警规则管理模块中配置的规则存储在redis中,每次有修改时同步更新,从而调度任务数据同步更新。在查询模块和规则服务处理模块中使用数据时,可以直接从redis获取数据,提高数据处理速度。