全部产品
云市场

模型的部署和使用

更新时间:2019-05-16 17:29:44

一. 流程概述

模型可以简单理解为一个公式,公式中包含了特征和权重的组合。模型无法直接作用于排序,影响排序的是各种特征在模型作用下产出的分数。我们将模型根据输入特征产出分数的过程,称之为预测。如果是在查询过程中,将特征输入模型并产出分数,我们称之为在线预测。如果是提前对所有的数据特征输入模型产出分数,并将结果推到线上供查询时使用,我们称之为离线预测。目前开放搜索只支持离线预测,也就是说训练好的模型要对所有的文档做一次打分,并将结果回流到线上供查询时使用。在算法平台中承担这一任务的是部署管理模块,用户可通过新建部署任务对应用所有存量数据通过模型做一次打分,并将结果回流到线上供查询时使用。下面我们会从部署场景、部署流程、排序中如何使用模型等角度详细介绍部署管理模块的相关功能。

二. 部署场景介绍

开放搜索支持两阶段的排序,粗排和精排。粗排时参与排序的文档量大,对排序性能要求较高;精排时参与排序的文档量小,对性能要求相对宽松。因此,模型作用在不同的排序场景中,预测的结果推到线上时采用的处理方式是不同的。
在粗排场景中,由于粗排性能要求较高,模型预测结果数据和应用的数据必须关联在一起,所以应用于粗排场景的模型,在生效时需要触发索引重建。但是模型部署在粗排后,粗排和精排表达式都可以使用该模型。
在精排场景中,由于性能要求相对宽松,在排序时我们可以通过访问另一个服务获取预测结果,所以应用于精排场景的模型,在生效时不需要索引重建,可以直接回流。但是模型仅仅部署在精排的话,只有精排表达式能使用该模型。
通过区分粗排部署场景和精排部署场景,我们在满足高性能要求的同时又提供了一定的模型数据更新的灵活性。

三.部署流程演示和详解

1.粗排部署流程

粗排部署状态转换图:1

粗排部署场景中,模型预测结果需要通过应用索引重建才能回流到线上供查询使用。因此,粗排部署场景状态转换图中会有索引重建状态,并受索引重建状态的影响。上图展示了粗排部署场景中各个状态之间的转换关系,有些状态是自动转换,有些是需要我们手动触发,上面的数字是我们手动触发时对应的操作。

2.精排部署流程

2
精排部署不需要触发索引重建,部署比较灵活,整个流程比较简单。上图详细展示了精排部署的整个生命周期,以及处于不同阶段时部署的状态,下面我们一一介绍。
模型训练好了之后,我们通过创建部署并选择精排场景,即可将模型应用到精排排序中(只可以精排表达式中使用该模型)。新建部署时,如果新增模型或者有模型更新,系统会自动使用模型对存量数据进行预测,此时部署处于预测中状态。预测完成后,OpenSearch自动会将模型回流到检索系统,供查询时使用,并设置部署状态为生效中。
对于已经生效的部署,我们可以点击下线部署按钮,将部署下线掉。如果该部署中的模型有在公式中使用,则下线部署时会报错。已经下线的部署,重新上线时会重新回流一次,这时部署处于部署中状态。
已经下线的部署可通过部署列表右侧的删除按钮将部署完全删除。

3.模型部署的操作演示

下面我们按照部署的创建到删除这个过程对上面的状态转换与部署操作流程做详细介绍。
第一步:选择部署应用和场景。模型训练好了之后,我们通过新建部署,并选择粗排部署场景即可将模型应用到粗排和精排排序中(可以在粗排和精排表达式中使用该模型)。
3
第二步:选择模型。在这一步可以选择添加一个新模型,同时也可以勾选更新已部署到当前应用当前场景的模型,这样部署创建之后会自动对新增或者更新的模型进行预测。(更新部署指的是用最新的数据输入到模型对商品/文档计算输出新的分数,保证模型效果的时效性。)
4
第三步:校验及生效方式。
5
6
部署场景选择粗排的话,由于部署想要生效需要索引重建,所以在这一步可以选择是马上索引重建生效还是之后索引重建生效。

  • 如果选择的是稍后自行索引重建,那么部署任务提交后模型会先进行预测,预测完成后会变为等待索引重建状态。

7

  • 如果选择的是立即索引重建,那么部署任务提交后模型会先进行预测,预测完成后会变为索引重建状态。需要注意的是由于开放搜索只允许一个应用最多保留两个版本的限制,在这种情况下如果应用已经有2个版本,那么创建部署会失败。

8

部署场景选择精排的话,部署生效无需索引重建。模型预测完成后即可在精排中使用。
9

4.部署状态说明

  • 预测中:部署任务中的模型系统在执行预测的阶段,通常只需数分钟。
  • 等待索引重建:粗排部署任务选择之后索引重建生效后,在模型预测完成之后会出现等待索引重建的状态,当应用定时索引重建或者手动触发索引重建时会进入索引重建中状态。
  • 索引重建中:处于索引重建中的粗排部署任务,如果正在索引重建的版本被删除,部署任务又会变为等待索引重建状态。
  • 生效中:部署已顺利完成生效的状态。对于生效中的粗排部署,如果对应的OpenSearch应用版本被删除,而且这个版本是应用最新的版本,那么部署任务会变为等待索引重建状态。
  • 已下线:等待索引重建或生效中的部署,可以通过点击部署列表后面的下线按钮将部署下线。下线操作生效后则状态变为“已下线”。(下线部署时我们会校验部署中的模型是否在公式中使用,如果有公式引用了相关模型,下线操作会失败。已经下线的部署可以通过点击重新部署将部署中的模型重新推上线,如果部署之前生效的版本还在线,那么部署会立即生效,否则需要索引重建才能生效。已经下线的部署可通过部署列表右侧的删除按钮将部署完全删除。)

    四. 排序中使用模型

    部署生效之后,部署列表页会展示部署生效的应用版本。在对应的版本上我们可以通过设置排序表达式使用我们的模型。每个模型都会提供对应的特征函数,以人气模型为例,在公式中可以通过popularity(model_name)来获取模型的分数。需要注意的是在粗排场景中生效的模型可以在粗排和精排表达式中使用,在精排场景中生效的模型只能在精排表达式中使用。另外,对于在创建部署之后新增的文档新增的文档,由于文档没有使用模型对其进行预测,所以该文档在计算对于模型的分数时默认为0分。设置排序表达式的详细操作步骤请参考OpenSearch搜索相关性配置
    公式配置完成之后,我们就可以在查询中使用了。我们可以通过OpenSearch提供的A/B测试功能来验证使用模型和没有使用模型的搜索效果。我们在A/B测试页面创建两个不同的实验,一个实验的粗排或精排表达式使用了算法模型,一个实验没有使用算法模型。开通行为数据采集之后,我们推送点击数据,最终通过数据报表页面查看使用了模型的ipv指标是否有所改善。A/B测试相关的详细操作步骤请参考OpenSearch A/B test