摘要:万象系统是百度搜索为了解决富媒体信息海量处理问题而设计和开发的系统,文中对万象系统进行了一次全面的总览介绍,万象系统目前在百度已经承接了搜索所需要的所有图片、视频数据的加工和处理,管理着超大量级的图片和视频实体特征数据,每天支持数十亿的处理吞吐,为百度产品的效果提升奠定了基础。
由于用户可以从多个应用端接入并消费内容和信息,其在不同端的行为反馈需要被搜索引擎所收集用于精准排序。
这对于搜索引擎抓取系统提出了新的挑战,即如何获取到这些分散到各个不同载体的用户行为数据。抓取系统需要超越此前仅抓取网页的限制,扩展到抓取图片、网页,甚至突破手机应用上的页面获取到经过用户授权的内容和信号。
进一步,在搜索引擎内部进行信息处理过程中,将这些信号和特征以内容为粒度进行聚合和传递,以让相同内容的其他载体在排序过程中可以用到这些信号。
例如,谢豪《野蜂飞舞》在不同的视频中都有不同的用户反馈信号,但实质上都是对同一个内容的用户反馈信号。传统而言,这些视频都来自不同的播放页和站点,用户行为反馈信号会被认为是不同网页的所属,而这种基于站点而不是内容的检索方式在新一代基于富媒体内容的搜索引擎系统设计中将发生改变。
(3)富媒体信息的消费方式呈现多样化
传统网页搜索下,用户输入关键词来检索信息,搜索引擎返回与用户搜索需求最相关的网页;而在富媒体信息下,用户不仅可以通过关键词来检索信息,还可以输入图片来检索信息,甚至通过内容语义来检索信息。目前,常见的产品形态是:
这些输入多样化对搜索引擎的设计带了新的要求:不仅仅是传统基于item的倒排拉链,还要考虑给予语义向量的倒排等。
三、富媒体信息的处理与检索
富媒体信息处理与检索,是指对包括视频、图片在内的多媒体资源进行收录、筛选、建立索引,并提供用户以文本、图片等输入方式进行信息检索的能力。下图给出了百度搜索引擎对富媒体信息的处理流程。
△富媒体信息的处理与检索
首先会在离线对图片、视频等富媒体数据进行加工和处理,识别出其中的内容与语义,然后转变成系统能够识别和处理的属性(如文本标签,分类标签等),质量信息(如站点或者作者权威性,点赞量/播放量等,黄反信息等等),或者光学属性(如清晰度)。这些基础特征信息构成了对一个富媒体数据的全部表述。
不同富媒体数据之间还会有相同/相似,包含等关系属性。如网上很多的剪辑视频,可能来自某部电影;或者两个一样的视频文件,只是来自不同播放站点带了不同的水印或者封面而已。这种关系,在我们系统中称之为实体粒度的聚合特征(相对于上一段所提到的基础特征)。当两个实体被判断为相同的时候,相关的特征信息可以合并汇聚,供两个实体同时使用。如播放量和点赞量会累加,缺失的特征标签会被另外一个实体补充等等,从而实现内容级别的汇聚。
四、万象系统
在百度搜索引擎中,对视频/图片等多媒体数据进行处理的系统称为:万象(取自包罗万象,万象更新的意思),是对图片/视频等多媒体内容的加工和处理,提供规模化的收录、加工、筛选、建立索引的能力,为用户以文本、图片等输入方式进行信息检索提供强有力的数据支持。
△万象架构图
整个万象系统承载了百度搜索引擎主要的图片与视频数据处理,涉及海量的图片、视频(横版视频与竖版视频);每天都在计算和处理这些庞大的数据,支持图片搜索、搜索结果配图、视频搜索、推荐等等所有百度内部涉及富媒体的主要产品线。
规模化与时效性是整个系统处理富媒体信息的两个最核心的设计指标。
除了底层的基础服务外,整个万象系统主要包括:
(1)千仞系统:负责分析单个实体(图片/视频)基础特征,如单一图片的人物/场景/OCR/清晰度等等分析;
(2)初元系统:负责分析实体与实体之间关系(相同,相似,包含,类聚等等),如是否是剪辑视频/是否同一事件的图集等;
(3)丹鼎系统:负责管理特征,以及按照内容实体粒度聚合和组织特征数据;
(4)其他辅助系统:负责裁剪、转码、编辑等。
1. 千仞系统(Blades)
千仞系统分析单一实体产出的特征数据,我们称为基础特征数据。分析和理解图片/视频是极其复杂和高成本的过程,在整个千仞系统中需要调动近几十万Core的弹性CPU资源以及GPU/FPGA等专用计算资源。
在基础特征分析中,有些特征只需要成本低廉的CPU就能分析处理,如图片长宽;而有些则成本高昂,需要GPU等高级硬件且耗时很长才能产出,如OCR/分类/清晰度等等。成本高的特征,在千仞中会尽量减少重复计算,提高生产率。
△千仞系统
在千仞系统中,首要问题是如何用有限的资源支持如此庞大的计算需求。在千仞系统中,所有特征计算都会转换成DAG执行,除了支持传统的批量特征计算外,流式计算也是最重要部分之一。DAG执行引擎能有效地对各种特征关联关系进行管理,合并重复计算单元,同时结合数据热点调度,从而提高计算的性能。同时还包括重型算子的计算优化,例如OCR以及视频指纹计算,如何突破单卡吞吐屏障实现百倍甚至千倍规模提升等等。
2. 初元系统(Initial)
光分析出单个图片或者视频实体的特征还不足以满足业务需求。在很多情况下,我们需要知道实体与实体之间的关系,例如:(1)黄反鉴别、(2)原创识别、(3)优质内容提取、(4)基于事件/时间/空间等关系的实体聚合查找、(5)基于相同或者相似实体的推荐等等。
这些关系的分析是由万象的子系统——初元来完成的。
△初元系统
初元系统是基于千仞系统生产出来的基础特征构建的。表征每个实体是其基础的特征属性,通过在全集实体集合中进行指纹级别的比对,来找到所需要的各种关系。如何动态地、实时地构建全集实体集合是系统设计的挑战之一。
3. 丹鼎系统(Athanors)
无论是千仞产出的特征还是初元产出的特征,最终都会存储到特征库——丹鼎系统。
丹鼎系统不仅仅是存储实体的特征信息,而更重要的是进行实体粒度的特征属性聚合和传递。相同的两个实体(例如,视频)会有不同的标题、点赞量、转发量等等特征属性。如果初元分析出两个实体其实为同一个实体(如只是带上了不同水印的同一个视频),当这些信息汇聚到丹鼎系统的时候,相关的属性会聚合并可同时为任何一个实体使用。
△丹鼎系统
丹鼎系统的聚合技术是为了将信息以内容为单位进行整合,从而给下游检索系统实现内容粒度的信息检索奠定基础。内容聚合过程并不会把此前单个实体原有的特征信息给抹去,相反会在保留原有单个实体特征属性下实现动态汇聚技术。
例如,实体E1和E2被认为是两个内容相同的视频,E1拥有比较高质量的内容(例如,更清晰或者无黑白等),而E2拥有更符合需求的标题关键词,当用户使用搜索引擎的时候,E1会有更好的用户体验并被搜索引擎分发给用户,这个时候所生成的E1标题就不是原有标题而是从E1和E2的标题关键词中挑选或者再生产更能符合相关性需求的标题。同时,E2的其他特征属性(如点击量,播放量百度会收录动态页面吗,评论数等)也会同时累加到E1属性上,作为最终E1的属性返回给搜索引擎参与最后的结果排序。
五、总结
在以内容为王的时代,新一代的搜索引擎已经从传统的基于网页的收录与检索,升级成基于富媒体信息等多种内容载体的信息收录与检索。与传统网页不同,富媒体数据的理解与处理相比于此前的网页会更难、更具有挑战。
万象系统是百度搜索为了解决富媒体信息海量处理问题而设计和开发的系统,文中对万象系统进行了一次全面的总览介绍,万象系统目前在百度已经承接了搜索所需要的所有图片、视频数据的加工和处理,管理着超大量级的图片和视频实体特征数据百度会收录动态页面吗,每天支持数十亿的处理吞吐,为百度产品的效果提升奠定了基础。