在过去十年,机器学习在学术界获得了很多的突破,在工业界也有许多运用落地。美团很早就开端探索不同的机器学习模型在查找场景下的运用,从最开端的线性模型、树模型,再到近两年的深度神经网络、BERT、DQN等,并在实践中也获得了杰出的作用与产出。

在美团查找AI化的进程中,比较中心的两个组件是模型~ 7 Y练习渠道PokerU v L @和在线预估结构Augur。本文t 9 B o I首要与大家讨论Augur的规划思路、作用,以及它的优势与缺乏,终究也简略介绍了一下Poker渠道的价值。期望这些内容对大家有所协助或许启示。

1. 背景

查找优化问题,是个典型的AIr c Q k w S运用问题,而AI运用问题首要是个体系问题。经历近10年的技能积累和沉积,美团查找体系架构从传统检索Q V L引擎升级转变为AI查找引擎。当时,美团查找全体架构首要由查找数据渠道、在线检索结构及云搜渠道、在线C ! pAI服务及试验渠道三大体系构成。在AI服务及试验渠道中,模型练习渠道Poker和在线预估结构J P [ gAugur是; ) d查找AI化的中心组F $ R @ T 8. C 2 t # T J j v,处理了模型从离线练习到在线服务的一系列体系问题,极大地提高了整个查找战略迭代功率、在线模型预估的功z 2 g (用以及排` | l u c 7 g – I序稳定性,并助力商户、外卖、内容等中心查找场G l V 5景事务目标的飞速提高。

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

首要,让咱们看看在美团App内的一次v Y S 7 3 p X完好的查找行为首要涉及哪w G ? d t q , J些技能模块。如下图所示,从点击输入框到终究的– r = W b C k % m成果展现,从抢手引荐,到动态补全、终究的商户列表展现、引荐理由的展现等,每一( j ~ = [ 6 :个模块都要经过若干层的模型处R ~ H Q U 理或许规矩干预,才会将最适合用户(目标)的成果展现在大家的眼前。

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

为了确保杰出的用户体验,技能团队对模型预估才能的要求变得越来越高,一起模型与特征的类型、数量及杂乱度也在日积月累。算法团队怎么尽量少地开发和布置上线,怎么快速进行模型特征的迭代?怎么确保杰出的预估功用?在线] U [ .预估结构Augur应运而生。经过一段时刻的实践,Augur也有效地满足了算法侧的需求,并成为美团查找与NLP部通用的处理计划。下面,咱们将从解读概念开端,然后再分享一下r O E ; / 0 { % :在实施进程中咱们团队的一些经验和考虑。

2.笼统进程:什么是模型预估

其实,模型预估的逻辑相对简略、明晰。可是假如要整个渠道做得好用且高效,这就需求结构体系和工具建造(一般是办理渠道)两个层面的配合,z $ $ ^ 5 e W 4需求统筹需求、功率与功用。

那么,什么是模型预估呢?假如疏忽掉各种O j , – ^ = 6 ;算法的细节,咱们能够以为模型是一个函数,有一批输入和输出,咱们供给即将预估文档的相关信息输入模型,并依据输出的值(即模型预估的值)对原有的文档进行排序或许其他处理。

朴实从一个8 / p ` I q k工程人员视角来看: 模型能够简化为一个公式( 举例:f(x1,x2W / } Q `)= aQ @ 9 R _ nx1 + bx2 +c ),练习模型是找出最合适的参数a| c m P g hbc。所谓特征,是其间的自变量x1与x s O Zx2,而模型预估,便是将给定的自变量x1与x2代入公式,求得一个解罢了。(当然实践模型输出的成果或许会愈加杂乱,包含输出矩阵、向量等等,这儿仅仅简略2 . n w * 7 W的举例说明。)

所以在实践事务场景中,一个模型预估的进程能够分为两个简略的步骤n ~ 4 v P:第一步,特征抽取(找出x1与x2);第二步,模型预L 1 7 8 U n估(履行公式 ,获得终究的成果)。

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

模型预估很简略,从事务工程的视角来看,不管多杂乱,它仅仅一个核算分数的进程。关于整个运算的优/ P D t 8 8 w F化,不管是矩阵运算,仍是底层的GPU卡的加快,业界和r 8 X i u l美团内部都有比较好的实践。美团也供给了高功用的TF-Serving服务(t | u X拜见《依据TensorFlow Serving的深度学习在线预估》一文)以及自研的MLX模型打分服务,都能够进行高功用的Bay ? E n w + N % 9tch打分。依据h o ` a o w C此,咱们针对不同的模型,采取不同的战略:

  • 深度学习模型:特征多,核算杂乱,功用要求高;咱们将核算进程放到公司一致供给的T% D L DF-Serving/MLX预估服务上;
  • 线性模型、树模型:查找场景下运用的特征相对较少,核算( # N B逻辑E n % _ s ^ k F也相对简略,咱们将在构建的预估结构内部再构建起高功用的本机求解逻辑,从而削减RPA + NC。
智能搜索模型预估框架的建设与实践

这一套逻辑很简略,构建起来也不杂乱,所以在建造初期,咱们快速在主搜的中心I 0 / 2事务逻辑中快Y l 8 = _ O速完结了这一架构,如下图所示。这样的一个架构使得咱们能够在主搜的中心排序逻辑中,能够运用各类线性模型的预估,一起也能够凭借公司的技能才能,进行深度模型的预估。关于特征抽取的部分,咱们也简略完结了一套规矩,便利算法同学能够自行完结一些简略的逻辑。

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

3. 预估结构思路的改动

3.1 老结构的限制

旧架构中模型预估与事务逻辑耦合的方法,在预估文档数和特征数量不大的时分能够供给较好的支o T K d I撑。可是,从2018年开端,查找事务瓶颈开端到来,点评事业部开端e O u H T对整个查找体系进行升级改造,并打造依0 ) Q C W据知识图谱的分层排序架构(详情能够拜见点评查找智能中心在2019年初推出的实践文a 1 0 n [ v r章《大众点评查找依据知识图谱的深度学习排序实践》)。这意味着:更多需求模g 9 d k f型预估的文档,更多的特征,更深层次的模型,更多的模型处理层级,以及更多的事务。在这样的需求背景下,老结构开端呈现了一些限制性,首要包含以下三个层面:

智能搜索模型预估框架的建设与实践
  • 功用瓶颈:中心层的模型预估的Size扩展到数[ ? – a ( m 9 ]千等级文档的时分,单机现已难以承载;近百万个特征值的传输开支现已难c + ~ e s v P u V以承受。K t 7 4 h W P
  • 复用困难:模型预估才能现已成为一个通& ` P X 5 5 &用的需求,单查找就有几十个场景都需求该才能;而老逻辑的事务耦合性Z 5 M W让复用变得愈加困难。
  • 渠道缺失:快速的事务迭代下,需求有一个渠道能够协助事务快速地进行模型和特征的办理,包含但不限于装备、上线q V i t i g ! #、灰度、验证等等。
智能搜索模型预估框架的建设与实践

3.2 新结构的鸿沟

跟所有新体系的诞生故事相同,老( J 1 ( ` C p V –系一致定会呈现问题。原有架构在少特征以及小模型下虽有优势,但事务耦合,无法横向扩展,也难以复用。针对需求和老结构的种种问题,/ M K _ | [ Z咱们开端构建了新的高功用散布式模型预估结构Augur,该结构指导思路是:

  • 事务解耦w P G ] &,设定结构鸿沟:只做特征/ 7 9 v ^抽取和模型预E Y o $估,对预估成果的处理等事务逻辑交给上层处理。

  • 无状态,且能够做到散布式R 3 N模型预估,无压力支撑数千等级文档数的深度模型预估。

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

架构上的改动,让Augur具备了复用的基础才能,一起也具有了散布式预估的才能。可惜,体系架构规划中没有“银弹”:尽管体系具有了杰出的弹性,但为此咱们也付出了一些代价,咱们会在文末进行解说。

4.预估渠道的构建进程

结构思路只能处理“能用”的问题,渠道M m #则是为了“通用”k a s与“好用”。一个优异的预估渠道需求确保高功用,具备较为通用且接口丰厚的中心} H b 3 `预估# N q o E x m结构,以及产品等级的事务办理体系。为了能够实在地提高预估才能和事务迭代的功率,渠道需求回答以下几个问题:

  • 怎么处理特征和模型的高效迭代?
  • 怎么处理批量预估的功用和资源问题?
  • 怎么完结才能的快速复用并能够1 _ & . ^ I C确保事务的安全?

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

4.1 构建预估内核:高效的特征和模型迭代

4.1.1 Operator和Transformer

在查找场景下,特征抽取较尴尬做的原因首要包含以下几点:

  • 来源多:商户、产品、买卖、用户等数十3 ^ O ~个维度的数据,还有穿插维度。由于美团事务很多,难以经过一致的特征存储去构建,买卖相关数据只能经过服务来获取。
  • 事务逻辑多:大多数据在不同的事务层会有复用,可是它们对特征的处理逻辑又有所不同。
  • 模型差异:同一个特征,在不同的模型下1 { N z,会有不同的处理逻辑。比方,一个接连型特征的分桶核算逻辑相同,但“桶”却因模D ~ M V U q – R型而– 2 & #各不相同;关于离散特征的低频过滤也是如此。
  • 迭代快:特征 o x的快速迭代,要求特征有快速在线上收效的才能,假如想要G O c改动一个判断还需求写代码上线布置,无疑会拖慢了迭代的速度。模型如此,特n z S 0 y w征也是如此。

针对特征的处理逻辑,咱们笼统出两个概念:

OperatorN S 通用特征处理$ U d逻辑,依据功用的不同又能够分为两类:

  • IO OP:用处理原始特征的获取,如从KV@ S k里获取数据,或许从对应的第三方服务中获取数据。内置批量接7 T * O S n口,能够完结批量召回,削0 2 W , [ z B r减RPC。
  • Calc OP:用于处理对获取到的原始特征做与模型无关的逻辑处理,如拆分、o o L判空、组合。事务能够结合需求完结特征处理逻辑。

经过IO、核算分离,特征抽取履行阶段就能够进行IO1 m X异步、自动聚合RPC、并行核算的编列优化,从而达到提高功用的意图。

Transformer:用于处理与模型相关的特征逻辑,如分桶 w ] = T N、低频过滤等等。一个特征能够装备一个或许多个Transformer。Transformer也供给接口,事务方能够依据自己的需求定制逻辑。

O 1 3 | v在线一致逻辑:Transformer是特征处理的模型相关逻辑,因x o Y Z 3 _ u 7此咱们将Transformer逻辑独自抽X G L ,包,在咱们样本出产的进程中运用,确保离线样本出产与线上特征处理逻辑的一致性。% C w h

依据这两个概念,Augur中特征的处理流程如下所示: 首要,咱们会进行特7 U U ~ ) Y / c征抽取 ,抽取完后,会对特征做一些通用的处理逻辑;然后,咱们会依据模型的需求进行二次改换,并将终究值输入到模型预估服H 2 . [务中。如下图所示:

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

4.1.p p j g T y2 特征核算E Z w 8 o b ; ^ rDSL

有了Operator的概念,为了便利事务方进行高效的特征迭代,Augur规划了一套弱类型、易读的特征表达式言语,将特征当作一系列OP与其他特征的组合,并依据Bison&JFlex构建了高功用语法和词法解析引擎。咱们在解说履行阶段还做了一系列优化,包含并行核算、中心特征共享、异步IO,以及自动RPC聚合等等。

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

举个例子:

// IO Feature: binaryBusinessTime;  ReadKV 是一个 IO 类型的 OP
ReadKV('mtptp, - X 3 _ 1 IoionlineS y R u Z H xfR # ( h ; % !eatureexp','_id',_id,'ba_search.platform_poi_business_hour_new.binarybusinesstime','STRING')
// FeatureA : CtxDateInfg 7 0 U G L 9 P qo;   P1 p  x c R ~arseJSON 是一个D + @ Calc 类型的 OP
ParseJSON(_ctx['dateInf1 k G W +o']);
// FeatureB : isTodayWeekend 需求看 Json 这种的日期是否是周末, 便能够复用  CtxDateInfo  这个特征; IsWeekend 也是是一个 Calc 类型的 OP
IsWeekend(CtxDateInfo['date'])

在上面的0 P w A例子中,Parse4 Q 7JSON与IsWeekend都是OP, CtxDateInfo与isTodayWeekend都是由其他特征以及OP组合而成的特征。经过这种方法,事务方依据自己的需求编写OP , 能够快速复用已有的OP和特征,发明自己U K d # 5 n L需求; 0 Q a u ] 8的新特征。而在实在的场景中,IO OP的数量相对固定。所以经过一段时刻的累计,OP的数量会趋于稳定,新特征只需依据已有的OP和特征组合即可完结,十分的高效。

4.1.3 装备化的模型表达

特征能够用利用OP、运用表达式的方O q & s i _ w 3 5G Z m _去体现,但特征还或许需v s j 5 j I , 2 l求经过Transformer的改换。为此,咱们相同为模型构建一套可解说的JSON表达模板,模型中每一个特征能够经过一个JSON目标进行装备,以一个输入到TF模型里的特征结构为例:

// 一个的特征的 JSON 装备
{
"tf_input_config": {"otherc8 q + n )  Uonfig"},
"tf_inputm - t 4 c ;_name": "modulestyle",
"name": "moduleS1 6 |tyle",
"transi ` a k Bforms": [                      // Transfomers:模型相关的处理逻辑,能够有多个,Augur 会依照次序履行
{
"name": "BUCKETIZE",             // Transfomer 的称号:这儿是分桶
"params": {
"bins": [0,1,2,3,4]           // Transfomer 的参数
}
}
],
"default_valuT F } m g oe": -1
}
​

经过以上装备,一个模型能够经过特征名和Transformer的组合明晰地表达。因此,模型与特y ` l , v 4 q )征都仅仅一段纯文本装备,能够保存在外部,Augur在需求的时分能够动态的加载,从而完结模型和特征的上线装备化,无需编写代码进行上线,安全且高效。

其间,咱们将输入模型的特征名(tf_input_name)和原始特征名(name)做了区别。这样的话,就f K [ G . L @ c能够只在外部编写一次表达式,注册一个共用特征,却能经过在模型的结构体中装备不同Transfomer发明出多个不同的模型预估特征] 2 ! d m j。这种做法相对节省资源,由于共用特征只需抽取核算一次即可。

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

此外,这一套装备文件也是离线样本出产时运用的特征装备文件,结合一致的OP&Transformer代码逻辑,进一步确0 R 7 ^ # x保了离线/在线处理的一致性,也简化了上线的进程。由于只需求在离线状态O 7 . ( 6 ? ^ B下装备一次样本生成文件,即可在离线样本出产、在线模型预估两个场景通用。

4.2 完善预估体系:功用、接口与周边设备

4.2.1 高效的模型{ v q c , c w预估进程

OP和Transformer构建了结构处理特征的根本才能。实践开发中,为了完结高功用的预估才能,咱们选用了分片纯异步的线程结构,层层Call Back,最大程度将线程资源留给实7 D %践核算。因此,预估服务对机器的要求并不高。

为了描绘清楚整个进程,这儿需求清晰特征的两种类型:

  • ContextLevel Feature:全局维度特征,一次模型预估恳求中,此类特征是通用的。比方时刻、地理位置、距离、用户信息等等V # g i g 2 f a D。这些信息只b l e S _ W ;需核: Z 1 M N算一次。
  • DocLevel Feature:文档维度特征,一次模型预估恳求中每个文档的特征不同,需求分别核算。

一个典型的模型预估恳求,如下 O k : 4图所示:

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

Augur发动时会加载所有特征的表达式和模型,一个模型预估恳求ModelScoreRequest会带来对应的模型名、要打分的文档id(docid)以及一些必要的全局信息Context。 AugurG G t n w在恳求射中模型之6 r 6后,将模型所用特征构建成一颗树,并区别ContextLevel特征和DocL4 U k _ Qevel特征。由于DocR % c h 6 @ )Level特征会依赖ContextLevel特征,故先将ContextLevel特征核算结束。关于Doc维度,由于对每一个Doc都要加载和核算对应的特征,所以在Doc加载阶段会对Doc列表进行& # T分片,并发完结特征的加载,并且各分片在完结特征加载之后就i ( j 8 ~进行打分阶段。也便是说,打分阶段自身也是分片并发进行的,各分片在终究打分1 d x ( i $ $完结后汇总数据,回来给调用方。 期R o O间还会经过异步接口将特征日志上报,便利算法同学进一步迭代。

在这个进程中,为了使整个流程异步( ] &非阻塞,咱们要求引证的服务供给异步接口。若部分服务未供给异步接口,能够将其包装成伪异步。这一套异步w T M C `流程使得单机{ o s ( d X D(16c16g)的服务容量提高超越100%,提高了资源I 4 I Y T n = m的利用率。

4.2.2 预估的功用及表达式N ) % t D G d的开支

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

至于大家关心的表达式解析对关于功用的影响其实能够疏忽。由于这个模型预估的耗时瓶颈首要在于原始特征的抽取功用(也便是特征存储的功用)以及预估服务的功用(也便是Serving的功用)。而 Augur 供给了表达式解析的Benchmark测验用例,能够进行解析功用的验证。

_I(_I('xxx'))
Benchm{ R J ` Kark              Mode  Cnt  Score   Error  Units
AbsBenchmarkTest.test  avgt   25  1.644  0.009  ms/op

一个两层嵌套的表达式解析10W次的功用是1.6ms左右。相比于整个预估的时刻,以及言语化表达式关于特征迭代功率的提高,这一耗时在当时事务场景下,根本能够疏忽不计。

4.2.3 体系的其他组成部分

一个完善可靠的预估体系,除了“看得见”的高功用预估才能,还需求做好以下几个常被疏忽的点:

  • 几个常被疏忽的点: 预估时产出的特征日志,需求经过结构上传到公司日志中心或许以用户期望的方法进行存储,便利模型的迭代。当然,必要的时分能够落入本地,便利问题的定位。

  • ,便利问题$ ` d b : S的定位:体系监控不用多说,美团内部的Cat&天网,能够构建出完善的监控体系。另一方面,特征的监控也很重要,由于特征获取x o [ l P { 0 L的稳定性i F { ^ . B决议了模型预估的质量,所以咱们构建了实时的特征散布监控体系,能够分钟级发6 { b 7 q现特征散布的反常,最大限度上确保X [ K T c V模型预估的可靠性9 : $ ( V

智能搜索模型预估框架的建设与实践
  • 丰厚的接口:除了预估接口,还需求有特征抽取接口、模型打分DeH G I D s W 9bug 接口、特% 6 { + 6 = T B y征表达式测验接口、模型独自测验接口、特征模型改写接口、特征依赖检等等一系列接口,这样才能够确保整个体系的可用性,并为F 4 Z i q `后面办理渠道的建造打下基础。

Aug2 P y Jur在完结了以上多种才能的建造之后,就能够作为一个功用相对完善且易扩展的在线预估体系。由于咱们在构建 Augur的时分,设立了清晰的鸿沟,故以上才能是独立于事务的,能够c U 7 ` I , 0 便利地进行复用。当然,Augur的功用办理,更多的事务接入,都需求办理渠道的承载。所以,咱们! G ` r I y 9就构建了Poker渠道,其间的在线预估办理模块是服务S 1 B I于Augur,能够进行模型特征以及事l [ R务装备的高效办G u } – =理。咱们将在下一末节进行介绍。

4.3 建造预估渠道:快速复用与高效办理

4.3.1 才能的快速复用

Augur在规划之初,就将所有事务逻辑Y . ;经过OP和Transformer承载,所以跟事务无关。考虑到美团查找与NLP部模型预估场景需求的多样性,咱们还为Augur赋予多种事务调用的方法。

  • 种事务调用的方法。:即依据Augur构建一个完好的Service,能够完结无状) @ { [ | S态散布式的弹性预估才能。
  • 布式的弹性预估能:Java服务化版8 7 C [别中内置了对Thrift 的支撑,使不同言语的事务都能够便利地具o Y ( P # V有模型预估才能。
  • 地具有:Augur支撑同一个服务一起供给PiB ,geon(美团内部的RPC结构)以及Thrift 服务,从而满足不同u & i X + * l 事务% Z . z `的不同需求。
  • 不同事务的不同需:Augur相同支撑以SDK的方法将才能嵌入到已有的集群当中。但如此一来,散布式才能就无法发挥了。所以,咱们一般运用在功用要求高、模型比较小、特征根本能够存在本地的场景下。

} b 2 j A间服务化是被运用最多的方法,为了便利事务方的运用P Z v o p Z,除了完善的文档外,咱们还构建了规范的服务模板,任何一个事务方根本上都能够在30分钟内构建出自己的Augur服务。服务模板内置F e &了60多个常用逻辑和核算OP , 并供给了最佳实践文档与装备逻辑,使得事务方在没有指导的状况下能够自行处理95%以上的问题。整个流程如下图所示:

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

当然,不管运用哪一种T ( } }方法去构建预估服务,都能够在美团内部的PY V # k o Zoker渠道上进行服务、模型与特征的办理。

4.3.2 Augur办理渠道Poker的构建

完结一个结构价值的最大化,需求一个完好的体系去支撑。而一个合格的在线预估渠z 5 6道,需求一个产品等级的办理渠道辅助。所以咱们构建了Poker(查找试验渠道),其间的在线预估服务办1 1 i Y Z p |理模块,也是AT C @ r 4 v t Hugur的最佳拍档。Augur是一个可用性较高的在线预估结构,而Poker+Augur则构成了一个好用的在线预估d e P T y +渠道。下图是? + B在线预u p ^ @ O估服务办理渠道的功用架构:

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

首要是预估中心特征的办理,上面提到咱们构建了言语化的特征表达式,这其实是个较为常见的思路。Poker利用Augur供给的丰厚接口,结合算法的运用习惯,构建了一套较为流通7 i n的特征办理工具。能够在渠道上完结新增、测验、上线、卸载、历史回滚等一系列操作。一起,还能够查询特征被服务中的哪些模I : ~型直接或许间接引证,在修正和操作时还有风险提示,统筹了便捷性与安全性。

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

模型办理也是相同,咱们在渠道上完结了模型的装备化上线、卸载、上线前的验证、灰度、独立的打分测验、Debug信息的回来等等。一起支撑在渠道上直接修正模型装备文件,渠道能够完结模型多版别控制,一键回滚等。装备皆为实时收效,避免了手动上线遇到问题后因处理时刻过长而导致丢失的状况。

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

4.3.3 Poker + Augur的运用与作用

随着Augur和Poker的成熟,美团查找与NLP部分内部现已有超越30个事务方现已全面接入了预估渠道,全体v ( v H的概略如下图所示:

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

预估结构运用迁移Augur后,功用和模型预估稳定性上均获得了较大起伏m Y @ i 3 T C + ^的提高。愈加重要的是,Poker渠道的在线预估服务办理和Augur预估结构,还将算法同学从繁复且风险的上线操作中解放出来,愈加专心于算法迭代,从而获得更好的作用。以点评查找为例,在K 0 f mPoker+Augur稳定上线之后,经过短短半年的时刻,点评查找中心KPI在高位基础上依然完结了大幅提高,是过去一年半涨幅的六倍之多,提早半年完结全年的目标。

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

4.4 进阶预估操作:模型也是特征

4.4.1 Model as a Feature,同+ u T构or异构?

在算法9 F S n @的迭代中,有时T A R s z m c v会将一个模型的预估的成果作为另外一个模型输入特征,从而获得更好的作用。如美团查找与NLP中心的算法同学运用BERT来处理长尾恳求商户的展现次序问题,此刻需求BERT as a Feature。一般的o ( T 5 : q做法是离线进行BERT批量核算,灌入特征存储b 6 { z供线上运用。但这种方法存在时效性较低(T+1)、覆盖度差等缺点。最好的方法天然是能够在线实时去做BERT模型预估,并将预估输出值作为特征,用于终究的模型打分。这就需求Augur供给Model as a Feat* % B nure的才能。

得益于Augur笼统的流程结构,咱们很快超额完结了使命。Model as a feato X y 2ure,尽管要对一个Model做预估操作,但从更上层的模型角度看,它便是一个特征。既然是特征,模型预估也便是一个核算OP罢了。 所以咱们只需求在内部完结一个特别的OP,ModelFeatureOpreator就能够洁净地处理这些问题了。

咱们在充y ; 7 r k n g D V分调研后,发{ s v现Model as a Feature有两个维度的需求:同构的特征和异构的特征。同构指的是这个模型特征与模型的其他特征相w + t m U ) r同,是与要预估的文档一致维度的特征,w w 1那这个模型就能够装备在同一个服务下,也便是本机能够加载这个Stacking: p u q (模型;而异构指的是Model Feature与当时预估的文档不是一致维度的,比方商户下挂的产品,商户打分需求用到产品打分的成果,这两个模型非一致维度,归于两个事务。正常逻辑下需求串行处理,可是Augur能够做得更高效。为此咱们规划了两个OP来处理问题:

  • LocalD A | d G &ModelFeature: 处理同构Model FP ] G 2 U D & ] ;eature的需求,用户只需像装备一般特征表达式相同即可完结在线的Model Stacking;当然,内部天然有优化逻辑,比方外部模型和特征模型所需的特征做一致整合,尽o P S y ; t i或许的削减资源耗费,提高功用。 该特征所装备的模型特征,将在本机履行,以削减RPC。

  • RemoteModelFeature:处理异构Model Feature的需求,用户仍是只需装备一个表达式,可是此表达式会去调用相应维度的Augur服务,获取相应的模型和特征数据供主维度的Augur服务处理。尽管多了一层. d e , x ` RPC,可是相关于纯线性的处理流程,分片异o J 1 `步后,仍是有不少的功用提高。

美团查找内部,现已经过Loc O 5 ualModelFeature的方法,完结了BERT as a F_ } ) _ yeature。在几乎没有新的运用学习本钱的前提下,一起在线上获得了显着的目标提高。

4.4.2 Online Model Ensemble

Augur支撑有独自抽取特征的接口,结合Model as a Feature,若需求一起为一个文档进行两个或许多个模型的打分,再将分数做加权后运用,十分便利地完结离线Ensemble出来模型的实时在线预估。咱们能够装备+ ( 9 j ~ | H一个简略的LT X rR、Empty 类型模型(仅用于特征抽取),& , N P ]或许其他任何 Augur 支撑的模型,再经过LocalModelFeature装备若干的Model Feature,就能够经过特征抽取接口得到一个文档多个模型的线E 1 u Q ] M / q t性加权分数了。而这一切都被包含在一个一致的笼统逻辑中,运用户的体验是接连一致的,几乎没有增加学习本钱。

除了上面的操作外,Augur还供给了打分的一? } , + ( h起带回部分特征的接口,供后续的事务规矩处理运用。

5. 更多考虑

当然,z R y + 4 f R .肯定没有完美的结构和渠道。Augur和Poker还有很大的进步空间,也有一些不可回避的问题。首要0 p % Z t包含以下几9 L V ~ p H个方面。

被迫“消失”的Listwise特征

前面提到,体系架构规划中没有“银弹”。在选用了无状y w G – ~态散布式的规划后,恳求会分片。所以ListWise类` _ 2 )型的特征就必须在打分前算好,再经过接口传递给Augur运用。在权K ! ( = v / ] l W衡功用和作用之后,算法同学抛弃{ F _ ^ / k y g了这E F a L一类型的特征。

当然,不是说Augur不能完结} P . { R % $ /,仅仅本钱有z O o ~ V J F b Q些高,所以暂时Hold 。咱们也有规划过计划,在可量化的收益高于本钱| C v B Z l 5 c的时分,L v 3 V o A咱们会在AuguM 6 b F U = @ 7r中开放协作的接口。

单机多层打分的缺失

Augur一次能够进行多个模型的打分,模型相互依赖(下一层模型用到上一层模型的成果)也能够经过S| z N V 3 K itaF a *cking技能来G b m 2 W处理。但假如模型相互依赖又逐层削减预6 _ 5 Q s估文档(比方,第一轮预估1000个,第二轮预估 500),则只能经过屡次RPC的方法去处理问题,这是一个现实问题的权衡。分片打分的功用提高,能否Cover屡次RPC的开s | ? h G D支?在实践开发中,为了保持结构的明晰简略,咱们选F 6 { Z M 7择了抛弃多层打分的特性。W ( E G

离线才能缺失?

Poker是查找试验渠道的名字。咱们规划0 R k ]它的初衷,是处理查找模型试验中,从离线到在线所有繁复的手工操作,使查找具有一键练习、一键Fork、一键上线的才能。与公司其他的练习渠道不同,咱们经过完善的在线预估结构倒推离线练习的需求,从而构建了与在q x $线无缝结合的查找试验渠道,极大地提高了算法同学的工作X w S j M . ;6 j ^ u K X

未来,咱们也会向大家介绍产品等级的一站式查找试验渠道,敬请期待。

6.未来展望

在一致了查找的在线A l y ( S x y 2 S预估结构后,咱们会进一步对Augur的功用&才能进行扩6 1 e B W e Z展。未来,咱们将会在检索粗排以Q D C @及功用要求更高的预估场景中去发挥它的才能与价值。一起5 I Y ,咱们正在将在线预估结构进一步融合到咱们的查找试验渠道Poker中,与离线练习和AB试验渠道做了深度的打通,为事务构建高效– b j F完好的模型试验基础设备。

假如你想近距离感受一下Augur的魅力,欢迎加入+ Q q ( k p G美团技能团队!

7. 作者简介

朱敏,紫顺,乐钦,洪晨,乔宇,武进,孝峰,俊浩等,均来a ; T自美团查找与NLP部。

阅读更多技能文章X m : W _ v & q %,请扫码关注微信公众号-美团技能团队!

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