智能搜索模型预估框架Augur的建设与实践

在过去十年,机器学习在学术界取得了众多的突破,在工业界也有很多应用落地。美团很早就开始探索不同的机器学习模型在搜索场景下的应用,从最开始的线性模型、树模型,再到近两年的深度神经网络、BERT、DQN等,并在实践中也取得了良好的效果与产出。

本文将与大家探讨美团搜索与NLP部使用的统一在线预估框架Augur的设计思路、效果、优势与不足,希望对大家有所帮助或者启发。

搜索优化问题,是个典型的AI应用问题,而AI应用问题首先是个系统问题。经历近10年的技术积累和沉淀,美团搜索系统架构从传统检索引擎升级转变为AI搜索引擎。当前,美团搜索整体架构主要由搜索数据平台、在线检索框架及云搜平台、在线AI服务及实验平台三大体系构成。在AI服务及实验平台中,模型训练平台Poker和在线预估框架Augur是搜索AI化的核心组件,解决了模型从离线训练到在线服务的一系列系统问题,极大地提升了整个搜索策略迭代效率、在线模型预估的性能以及排序稳定性,并助力商户、外卖、内容等核心搜索场景业务指标的飞速提升。

其实,模型预估的逻辑相对简单、清晰。但是如果要整个平台做得好用且高效,这就需要框架系统和工具建设(一般是管理平台)两个层面的配合,需要兼顾需求、效率与性能。

纯粹从一个工程人员视角来看:模型可以简化为一个公式(举例:f(x1,x2)=ax1+bx2+c),训练模型是找出最合适的参数abc。所谓特征,是其中的自变量x1与x2,而模型预估,就是将给定的自变量x1与x2代入公式,求得一个解而已。(当然实际模型输出的结果可能会更加复杂,包括输出矩阵、向量等等,这里只是简单的举例说明。)

所以在实际业务场景中,一个模型预估的过程可以分为两个简单的步骤:第一步,特征抽取(找出x1与x2);第二步,模型预估(执行公式,获得最终的结果)。

模型预估很简单,从业务工程的视角来看,无论多复杂,它只是一个计算分数的过程。对于整个运算的优化,无论是矩阵运算,还是底层的GPU卡的加速,业界和美团内部都有比较好的实践。美团也提供了高性能的TF-Serving服务(参见《基于TensorFlowServing的深度学习在线预估》一文)以及自研的MLX模型打分服务,都可以进行高性能的Batch打分。基于此,我们针对不同的模型,采取不同的策略:

这一套逻辑很简单,构建起来也不复杂,所以在建设初期,我们快速在主搜的核心业务逻辑中快速实现了这一架构,如下图所示。这样的一个架构使得我们可以在主搜的核心排序逻辑中,能够使用各类线性模型的预估,同时也可以借助公司的技术能力,进行深度模型的预估。关于特征抽取的部分,我们也简单实现了一套规则,方便算法同学可以自行实现一些简单的逻辑。

跟所有新系统的诞生故事一样,老系统一定会出现问题。原有架构在少特征以及小模型下虽有优势,但业务耦合,无法横向扩展,也难以复用。针对需求和老框架的种种问题,我们开始构建了新的高性能分布式模型预估框架Augur,该框架指导思路是:

架构上的改变,让Augur具备了复用的基础能力,同时也拥有了分布式预估的能力。可惜,系统架构设计中没有“银弹”:虽然系统具有了良好的弹性,但为此我们也付出了一些代价,我们会在文末进行解释。

框架思路只能解决“能用”的问题,平台则是为了“通用”与“好用”。一个优秀的预估平台需要保证高性能,具备较为通用且接口丰富的核心预估框架,以及产品级别的业务管理系统。为了能够真正地提升预估能力和业务迭代的效率,平台需要回答以下几个问题:

下面,我们将逐一给出答案。

4.1.1Operator和Transformer

在搜索场景下,特征抽取较为难做的原因主要包括以下几点:

针对特征的处理逻辑,我们抽象出两个概念:

Operator:通用特征处理逻辑,根据功能的不同又可以分为两类:

通过IO、计算分离,特征抽取执行阶段就可以进行IO异步、自动聚合RPC、并行计算的编排优化,从而达到提升性能的目的。

基于这两个概念,Augur中特征的处理流程如下所示:首先,我们会进行特征抽取,抽取完后,会对特征做一些通用的处理逻辑;而后,我们会根据模型的需求进行二次变换,并将最终值输入到模型预估服务中。如下图所示:

4.1.2特征计算DSL

有了Operator的概念,为了方便业务方进行高效的特征迭代,Augur设计了一套弱类型、易读的特征表达式语言,将特征看成一系列OP与其他特征的组合,并基于Bison&JFlex构建了高性能语法和词法解析引擎。我们在解释执行阶段还做了一系列优化,包括并行计算、中间特征共享、异步IO,以及自动RPC聚合等等。

举个例子:

4.1.3配置化的模型表达

特征可以用利用OP、使用表达式的方式去表现,但特征还可能需要经过Transformer的变换。为此,我们同样为模型构建一套可解释的JSON表达模板,模型中每一个特征可以通过一个JSON对象进行配置,以一个输入到TF模型里的特征结构为例:

其中,我们将输入模型的特征名(tf_input_name)和原始特征名(name)做了区分。这样的话,就可以只在外部编写一次表达式,注册一个公用特征,却能通过在模型的结构体中配置不同Transfomer创造出多个不同的模型预估特征。这种做法相对节约资源,因为公用特征只需抽取计算一次即可。

此外,这一套配置文件也是离线样本生产时使用的特征配置文件,结合统一的OP&Transformer代码逻辑,进一步保证了离线/在线处理的一致性,也简化了上线的过程。因为只需要在离线状态下配置一次样本生成文件,即可在离线样本生产、在线模型预估两个场景通用。

4.2.1高效的模型预估过程

OP和Transformer构建了框架处理特征的基本能力。实际开发中,为了实现高性能的预估能力,我们采用了分片纯异步的线程结构,层层CallBack,最大程度将线程资源留给实际计算。因此,预估服务对机器的要求并不高。

为了描述清楚整个过程,这里需要明确特征的两种类型:

一个典型的模型预估请求,如下图所示:

Augur启动时会加载所有特征的表达式和模型,一个模型预估请求ModelScoreRequest会带来对应的模型名、要打分的文档id(docid)以及一些必要的全局信息Context。Augur在请求命中模型之后,将模型所用特征构建成一颗树,并区分ContextLevel特征和DocLevel特征。由于DocLevel特征会依赖ContextLevel特征,故先将ContextLevel特征计算完毕。对于Doc维度,由于对每一个Doc都要加载和计算对应的特征,所以在Doc加载阶段会对Doc列表进行分片,并发完成特征的加载,并且各分片在完成特征加载之后就进行打分阶段。也就是说,打分阶段本身也是分片并发进行的,各分片在最后打分完成后汇总数据,返回给调用方。期间还会通过异步接口将特征日志上报,方便算法同学进一步迭代。

在这个过程中,为了使整个流程异步非阻塞,我们要求引用的服务提供异步接口。若部分服务未提供异步接口,可以将其包装成伪异步。这一套异步流程使得单机(16c16g)的服务容量提升超过100%,提高了资源的利用率。

4.2.2预估的性能及表达式的开销

框架的优势:得益于分布式,纯异步流程,以及在特征OP内部做的各类优化(公用特征、RPC聚合等),从老框架迁移到Augur后,上千份文档的深度模型预估性能提升了一倍。

至于大家关心的表达式解析对对于性能的影响其实可以忽略。因为这个模型预估的耗时瓶颈主要在于原始特征的抽取性能(也就是特征存储的性能)以及预估服务的性能(也就是Serving的性能)。而Augur提供了表达式解析的Benchmark测试用例,可以进行解析性能的验证。

4.2.3系统的其他组成部分

一个完善可靠的预估系统,除了“看得见”的高性能预估能力,还需要做好以下几个常被忽略的点:

Augur在完成了以上多种能力的建设之后,就可以当做一个功能相对完善且易扩展的在线预估系统。由于我们在构建Augur的时候,设立了明确的边界,故以上能力是独立于业务的,可以方便地进行复用。当然,Augur的功能管理,更多的业务接入,都需要管理平台的承载。于是,我们就构建了Poker平台,其中的在线预估管理模块是服务于Augur,可以进行模型特征以及业务配置的高效管理。我们将在下一小节进行介绍。

4.3.1能力的快速复用

Augur在设计之初,就将所有业务逻辑通过OP和Transformer承载,所以跟业务无关。考虑到美团搜索与NLP部模型预估场景需求的多样性,我们还为Augur赋予多种业务调用的方式。

其中服务化是被应用最多的方式,为了方便业务方的使用,除了完善的文档外,我们还构建了标准的服务模板,任何一个业务方基本上都可以在30分钟内构建出自己的Augur服务。服务模板内置了60多个常用逻辑和计算OP,并提供了最佳实践文档与配置逻辑,使得业务方在没有指导的情况下可以自行解决95%以上的问题。整个流程如下图所示:

当然,无论使用哪一种方式去构建预估服务,都可以在美团内部的Poker平台上进行服务、模型与特征的管理。

4.3.2Augur管理平台Poker的构建

实现一个框架价值的最大化,需要一个完整的体系去支撑。而一个合格的在线预估平台,需要一个产品级别的管理平台辅助。于是我们构建了Poker(搜索实验平台),其中的在线预估服务管理模块,也是Augur的最佳拍档。Augur是一个可用性较高的在线预估框架,而Poker+Augur则构成了一个好用的在线预估平台。下图是在线预估服务管理平台的功能架构:

首先是预估核心特征的管理,上面说到我们构建了语言化的特征表达式,这其实是个较为常见的思路。Poker利用Augur提供的丰富接口,结合算法的使用习惯,构建了一套较为流畅的特征管理工具。可以在平台上完成新增、测试、上线、卸载、历史回滚等一系列操作。同时,还可以查询特征被服务中的哪些模型直接或者间接引用,在修改和操作时还有风险提示,兼顾了便捷性与安全性。

4.3.3Poker+Augur的应用与效果

随着Augur和Poker的成熟,美团搜索与NLP部门内部已经有超过30个业务方已经全面接入了预估平台,整体的概况如下图所示:

4.4.1ModelasaFeature,同构or异构?

在算法的迭代中,有时会将一个模型的预估的结果当做另外一个模型输入特征,进而取得更好的效果。如美团搜索与NLP中心的算法同学使用BERT来解决长尾请求商户的展示顺序问题,此时需要BERTasaFeature。一般的做法是离线进行BERT批量计算,灌入特征存储供线上使用。但这种方式存在时效性较低(T+1)、覆盖度差等缺点。最好的方式自然是可以在线实时去做BERT模型预估,并将预估输出值作为特征,用于最终的模型打分。这就需要Augur提供ModelasaFeature的能力。

得益于Augur抽象的流程框架,我们很快超额完成了任务。Modelasafeature,虽然要对一个Model做预估操作,但从更上层的模型角度看,它就是一个特征。既然是特征,模型预估也就是一个计算OP而已。所以我们只需要在内部实现一个特殊的OP,ModelFeatureOpreator就可以干净地解决这些问题了。

我们在充分调研后,发现ModelasaFeature有两个维度的需求:同构的特征和异构的特征。同构指的是这个模型特征与模型的其他特征一样,是与要预估的文档统一维度的特征,那这个模型就可以配置在同一个服务下,也就是本机可以加载这个Stacking模型;而异构指的是ModelFeature与当前预估的文档不是统一维度的,比如商户下挂的商品,商户打分需要用到商品打分的结果,这两个模型非统一维度,属于两个业务。正常逻辑下需要串行处理,但是Augur可以做得更高效。为此我们设计了两个OP来解决问题:

美团搜索内部,已经通过LocalModelFeature的方式,实现了BERTasaFeature。在几乎没有新的使用学习成本的前提下,同时在线上取得了明显的指标提升。

4.4.2OnlineModelEnsemble

Augur支持有单独抽取特征的接口,结合ModelasaFeature,若需要同时为一个文档进行两个或者多个模型的打分,再将分数做加权后使用,非常方便地实现离线Ensemble出来模型的实时在线预估。我们可以配置一个简单的LR、Empty类型模型(仅用于特征抽取),或者其他任何Augur支持的模型,再通过LocalModelFeature配置若干的ModelFeature,就可以通过特征抽取接口得到一个文档多个模型的线性加权分数了。而这一切都被包含在一个统一的抽象逻辑中,使用户的体验是连续统一的,几乎没有增加学习成本。

除了上面的操作外,Augur还提供了打分的同时带回部分特征的接口,供后续的业务规则处理使用。

当然,肯定没有完美的框架和平台。Augur和Poker还有很大的进步空间,也有一些不可回避的问题。主要包括以下几个方面。

被迫“消失”的Listwise特征

前面说到,系统架构设计中没有“银弹”。在采用了无状态分布式的设计后,请求会分片。所以ListWise类型的特征就必须在打分前算好,再通过接口传递给Augur使用。在权衡性能和效果之后,算法同学放弃了这一类型的特征。

当然,不是说Augur不能实现,只是成本有些高,所以暂时Hold。我们也有设计过方案,在可量化的收益高于成本的时候,我们会在Augur中开放协作的接口。

单机多层打分的缺失

Augur一次可以进行多个模型的打分,模型相互依赖(下一层模型用到上一层模型的结果)也可以通过Stacking技术来解决。但如果模型相互依赖又逐层减少预估文档(比如,第一轮预估1000个,第二轮预估500),则只能通过多次RPC的方式去解决问题,这是一个现实问题的权衡。分片打分的性能提升,能否Cover多次RPC的开销?在实际开发中,为了保持框架的清晰简单,我们选择了放弃多层打分的特性。

离线能力缺失?

Poker是搜索实验平台的名字。我们设计它的初衷,是解决搜索模型实验中,从离线到在线所有繁复的手工操作,使搜索拥有一键训练、一键Fork、一键上线的能力。与公司其他的训练平台不同,我们通过完善的在线预估框架倒推离线训练的需求,进而构建了与在线无缝结合的搜索实验平台,极大地提升了算法同学的工作效。

未来,我们也会向大家介绍产品级别的一站式搜索实验平台,敬请期待。

在统一了搜索的在线预估框架后,我们会进一步对Augur的性能&能力进行扩展。未来,我们将会在检索粗排以及性能要求更高的预估场景中去发挥它的能力与价值。同时,我们正在将在线预估框架进一步融合到我们的搜索实验平台Poker中,与离线训练和AB实验平台做了深度的打通,为业务构建高效完整的模型实验基础设施。

如果你想近距离感受一下Augur的魅力,欢迎加入美团技术团队!

朱敏,紫顺,乐钦,洪晨,乔宇,武进,孝峰,俊浩等,均来自美团搜索与NLP部。

THE END
1.离线编程操作,优势应用与未来离线编程技术,离线编程操作,优势在数字化和智能化的时代,编程技术已经渗透到各个领域,无论是软件开发、机器人控制还是自动化生产等,都离不开编程的影子,离线编程操作作为一种新兴的编程方式,逐渐在各个领域中崭露头角,本文将详细介绍离线编程操作的概念、优势、应用场景以及未来发展趋势。 http://www.skypure.com.cn/post/35344.html
2.今日头条极速版邀请码是多少(含2024邀请码大全)离线缓存寓目视频.支持在线寓目 离线缓存寓目视频。 .今日头条支持议决频道保举 寓目历史 参加看单 搜刮成果快速找到想看的视频。 .支持D,N1投电视寓目。 .在线寓目演唱会 直播,互动送道具。 .开通腾讯视频,IP,畅享院线大片。 .支持微信 登录腾讯视频 .可以在影视圈 饭团分享视频图片 涂鸦 小视频。 .打造我的影院,个性化保举https://www.jianshu.com/p/3caa0b45ced3
3.CAD快速看图授权离线使用功能后,计算侧面积还是需要联网【必须联网才能用的功能】图形识别、布局转模型、图纸对比、编辑助手、云盘、侧面积、面积偏移、测量统计http://cadclub.glodon.com/question/detail/15764
4.离线爬塔快还是在线爬全职龙城综合讨论手机用户100362845 https://www.taptap.cn/moment/509259797300776424
5.免费翻译文档工具哪款速度快?免费翻译文档工具可以离线使用吗?速度比较快的是福昕翻译大师,福昕翻译大师是一款由福昕软件公司推出的智能翻译软件,是一款针对中英互译的在线翻译工具。无论是英语、汉语,还是一些其他主要语言,福昕翻译大师都能快速精准地实现翻译工作。 免费翻译文档工具可以离线使用吗? 福昕翻译大师软件支持离线使用。福昕翻译大师软件是一个基于云端翻译服务的翻译软件,https://www.foxitsoftware.cn/fanyi/jiaocheng/6036.html
6.C4DR19.068离线更新包中文版在线更新小版本比较慢,所以上线了这个19.068的离线更新包,快速更新升级r19小版本!注意:是在安装了C4D R19的基础上,通过安装更新包来进行软件的升级更新 c4dr19支持图像、视频和音频的格式已经完全重写了,速度和内存的效率得到了增强,让你的工作流程更加快速和稳定,新特性也会让你的视野变得更加开阔。C4dr19提供了许多http://www.modown.cn/archives/36429.html
7.嵌入式端音频开发(基础篇)之2021蜂鸟芯片(US526U5/US527U5 )(是云知声最新一代专门为离在线远场语音交互场景设计的高性能,高集成度, 低成本的智能语音芯片,可广泛且快速应用于智能家居,智能家电,86 盒,灯具等产品。 蜂鸟L(US513U6) 是一颗亚毫瓦级超低功耗面向带电池和便携式产品以及对功耗有严苛要求的 各类产品推出的智能纯离线语音识别芯片https://blog.51cto.com/u_15459030/4810840
8.让离线检测更快更准,海康睿影推出智能离线AXI设备凤凰网山东与传统的离线抽检以及在线全检不同,海康睿影离线AXI检测设备离线抽检和自动全检可灵活切换,不仅可以针对少量样品进行抽检,也可以针对小批量、多批次的产品进行自动全检。 例如,某工厂某天将样本量增加到1000片以上,传统离线设备只能靠人工逐一检测,耗时耗力,而通过海康睿影离线AXI设备切换到批量全检,检测速度更快,检测效率https://sd.ifeng.com/c/8ZynkiPNCm5
9.录制YouTube视频的7种方法[PCMac手机和在线]通过订阅YouTube Premium,用户可以将YouTube视频下载到手机上以供离线观看。但是,下载功能在计算机上不可用。 不用担心,只要有屏幕录制软件,您就可以在任何设备上录制 YouTube 视频。在本文中,我们将探讨七种行之有效的方法 在PC、Mac、手机和在线上录制 YouTube 视频。之后,您就可以在任何设备上离线观看 YouTubehttps://www.ukeysoft.com/zh-CN/recorder/record-youtube-video-on-pc.html
10.快存视频app最新版快存视频app下载官网最新版快存视频app最新版是一款功能强大的视频下载与管理软件,旨在帮助用户轻松快捷地保存自己喜爱的短视频内容。无论是来自社交媒体平台的热门视频,还是其他自网站上的精彩片段,快存视频都能迅速下载并保存,让用户随时随地享受精彩视觉盛宴。该应用操作简单,界面友好,适合各类用户使用。 https://www.97507.net/az/43651.html
11.chapter111.md·StarTogether/mlopsbook对于在线学习,更新速度是最快的,是增量更新的进阶版,在每次获得一个新样本的时候就实时更新模型,但是这样的方式会导致一个很严重的问题,就是模型的稀疏性很差,打开过多“碎片化”的不重要特征。 增量更新相对来说是一种 tradeoff 的方式,既可以减少样本训练时间长、数据延迟严重带来的问题,又可以减少每个样本更新带https://api.gitee.com/StarTogether/mlops-book/blob/master/chapter-11-1.md
12.?Ukey开票软件提示离线怎么解决?导读:我们自己开具增值税发票的话,会使用Ukey开票软件.不管是增值税专用发票,还是增值税普通发票,都是可以通过Ukey开票软件来实现的.在使用Ukey开票软件的时候,也会有很多提示.那Ukey开票软件提示离线怎么解决?有关解决办法如下. Ukey开票软件提示离线怎么解决? https://www.kuaizhang.com/news/detail_48380.html
13.小米负责人在线“小爱同学”专场,快来聊一聊九月的负责人在线栏目 ,是小米集团质量月活动的一环,为了进一步推进小米的质量,我们邀请到了小米各个部门的负责人。 本期请到的是小爱同学业务负责人@王刚、集团技术委员会质量负责人@朱虹、小爱同学产品负责人@李丹、小爱同学互联互通产品负责人@崔岩、小爱同学客户端产品负责人@马骞、小爱同学语音负责人@王玲玲、小爱https://web.vip.miui.com/page/info/mio/mio/detail?app_version=dev.20051&postId=30744281
14.UE4培训班虚幻4引擎培训机构全场景学习系统「 面授+在线+离线 」 面授场景 4-8个月全日制教学,岗位定向课程商业案列实训,一线总监执教,企业定向培养。 在线场景 365天线上直播,点播。全天候专家答疑作业点评指导,关卡式学习,大咖公开课。 离线场景 学习进程分析,扩展课程学习,能力成长路径,配套内部教材,硬件系统集成。 了解更多 > 火星时代教https://www.hxsd.com/ztkc/ue4yq19/
15.如何又快又准地查英文字典?这4个在线词典你必须知道!这4个在线词典你必须知道! 经常会有小伙伴跑来跟小编抱怨,英文字典好厚啊 ,这么复杂,每次用来查词都要花大把大把的时间,实在是太不方便了。难度系数简直爆棚了实在搞不懂,那些用词典背单词的筒子是不是想不开啊? 我想应该不是,这之间应https://mp.weixin.qq.com/s?__biz=MjM5OTM4ODA0MQ==&mid=2650616883&idx=1&sn=fd030dc249d883e2863ddb58512ed8e1&chksm=bf35a2d588422bc39470ed37dcac14b420c67677503cfd745aa25ddfe927174818f82cf298cf&scene=27
16.智达云4.3.0—用人工智能助力设计师简一模吧云端模型库入驻,在线搜索海量云端资源 海量云资源 海量用户、上下游生态 智达云拥有国内外海量用户 完善的上下游生态链 以及众多的合作伙伴 大量云资源站入驻智达云 即刻拥有海量云资源 兼容多平台 撞破次元壁 无论MAC还是Windows 丝滑使用无限制 全面支持离线模式 https://www.jianyi80.com/33547.html