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


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

文章插图
 
  • 丰富的接口:除了预估接口,还需要有特征抽取接口、模型打分Debug 接口、特征表达式测试接口、模型单独测试接口、特征模型刷新接口、特征依赖检等等一系列接口,这样才可以保证整个系统的可用性,并为后面管理平台的建设打下基础 。
Augur在完成了以上多种能力的建设之后,就可以当做一个功能相对完善且易扩展的在线预估系统 。由于我们在构建 Augur的时候,设立了明确的边界,故以上能力是独立于业务的,可以方便地进行复用 。当然,Augur的功能管理,更多的业务接入,都需要管理平台的承载 。于是,我们就构建了Poker平台,其中的在线预估管理模块是服务于Augur,可以进行模型特征以及业务配置的高效管理 。我们将在下一小节进行介绍 。
4.3 建设预估平台:快速复用与高效管理
4.3.1 能力的快速复用
Augur在设计之初,就将所有业务逻辑通过OP和Transformer承载,所以跟业务无关 。考虑到美团搜索与NLP部模型预估场景需求的多样性,我们还为Augur赋予多种业务调用的方式 。
  • JAVA服务化调用:即基于Augur构建一个完整的Service,可以实现无状态分布式的弹性预估能力 。
  • Thrift调用:Java服务化版本中内置了对Thrift 的支持,使不同语言的业务都可以方便地拥有模型预估能力 。
  • 双框架:Augur支持同一个服务同时提供Pigeon(美团内部的RPC框架)以及Thrift 服务,从而满足不同业务的不同需求 。
  • Java SDK:Augur同样支持以SDK的方式将能力嵌入到已有的集群当中 。但如此一来,分布式能力就无法发挥了 。所以,我们一般应用在性能要求高、模型比较小、特征基本可以存在本地的场景下 。
其中服务化是被应用最多的方式,为了方便业务方的使用,除了完善的文档外,我们还构建了标准的服务模板,任何一个业务方基本上都可以在30分钟内构建出自己的Augur服务 。服务模板内置了60多个常用逻辑和计算OP , 并提供了最佳实践文档与配置逻辑,使得业务方在没有指导的情况下可以自行解决95%以上的问题 。整个流程如下图所示:
智能搜索模型预估框架的建设与实践

文章插图
 
当然,无论使用哪一种方式去构建预估服务,都可以在美团内部的Poker平台上进行服务、模型与特征的管理 。
4.3.2 Augur管理平台Poker的构建
实现一个框架价值的最大化,需要一个完整的体系去支撑 。而一个合格的在线预估平台,需要一个产品级别的管理平台辅助 。于是我们构建了Poker(搜索实验平台),其中的在线预估服务管理模块,也是Augur的最佳拍档 。Augur是一个可用性较高的在线预估框架,而Poker+Augur则构成了一个好用的在线预估平台 。下图是在线预估服务管理平台的功能架构:
智能搜索模型预估框架的建设与实践

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

文章插图
 
模型管理也是一样,我们在平台上实现了模型的配置化上线、卸载、上线前的验证、灰度、独立的打分测试、Debug信息的返回等等 。同时支持在平台上直接修改模型配置文件,平台可以实现模型多版本控制,一键回滚等 。配置皆为实时生效,避免了手动上线遇到问题后因处理时间过长而导致损失的情况 。
智能搜索模型预估框架的建设与实践

文章插图
 
4.3.3 Poker + Augur的应用与效果
随着Augur和Poker的成熟,美团搜索与NLP部门内部已经有超过30个业务方已经全面接入了预估平台,整体的概况如下图所示:
智能搜索模型预估框架的建设与实践

文章插图
 
预估框架使用迁移Augur后,性能和模型预估稳定性上均获得了较大幅度的提升 。更加重要的是,Poker平台的在线预估服务管理和Augur预估框架,还将算法同学从繁复且危险的上线操作中解放出来,更加专注于算法迭代,从而取得更好的效果 。以点评搜索为例,在Poker+Augur稳定上线之后,经过短短半年的时间,点评搜索核心KPI在高位基础上仍然实现了大幅提升,是过去一年半涨幅的六倍之多,提前半年完成全年的目标 。


推荐阅读