掌桥专利:专业的专利平台
掌桥专利
首页

在线服务实验方法、装置、计算机设备和存储介质

文献发布时间:2023-06-19 11:57:35


在线服务实验方法、装置、计算机设备和存储介质

技术领域

本申请涉及数据处理领域,特别是涉及一种在线服务实验方法、装置、计算机设备和存储介质。

背景技术

人工智能系统的实验方法,其基本功能是通过线上实验比较人工智能系统中涉及到的不同模型、不同方法或者不同配置的优劣。其中,人工智能系统常见形态是接收用户输入,通过人工智能模型处理后,返回结果。例如在智能客服中,输入为用户输入的语音或者文字,人工智能模型的作用是生成对应的回复,而返回结果就是给用户的回复。再比如在推荐系统中,输入为用户的特征数据,人工智能模型的作用是找出要推荐给用户的物品列表,而输出是推荐给用户的物品列表。为了评估上述人工智能模型的效果,需要通过计算一些指标来进行量化,比如在只能客服系统中,用户和系统交互的轮次或者用户对本次对话的评分反映了对话模型的效果。再比如在推荐服务中,用户对推荐物品的点击率反映了推荐模型的效果。比较不同模型效果的过程称为实验。

传统技术中有两种常见的场景,一个是比较两个完全不同的方法或者模型的效果,比如比较ItemCF模型和UserCF模型;另一个是比较相同模型的不同取值组合的效果,例如BERT模型由三个主要的参数,参数L表示神经网络层数、参数H表示隐含层的大小、参数A表示注意力头(attention heads)的数量;加入L有n1种取值,H有n2种取值,A有n3种取值,则最终参数取值组合数量n=n1*n2*n3,实验目标是比较m种(m≤n)参数组合下模型的效果。为此要首先对要评估的系统进行参数化,以统一评估对象。例如对于“比较不同的模型M1和M2”的场景,引入与现有参数不重名的新参数M,则该问题亦转化为评估取值组合的问题。

评估一组取值组合的配置及过程称为一组实验,一般一个系统中可能需要同时进行多组实验。例如推荐服务中,一般至少有召回、排序两个模块,则需要设置两组实验分别去比较召回模块的取值组合和排序模块的取值组合。

一般实验方法分为离线实验、单层实验以及多因子实验。离线实验不适用线上流量,使用离线收集的数据对要评估的m种参数组合分别计算相关评价指标,以选出较优的参数组合;单层实验使用线上流量,但只有一个实验层,如有多组实验,则每组实验只能使用一定比例的流量,例如4组实验,各使用四分之一的流量进行实验;最后的多因子实验对于一个N参数,每个参数有M种取值的系统,一共需要M

传统的实验方法的问题是无法用户大规模线上系统,具体来说,对于离线实验,因其使用离线数据,因为数据和环境均与线上环境有偏差,得到的实验结果可信度较低,只能用于参考,无法用于实际决策;对于单层线上实验,因为不同实验组需要互斥在总流量中占用一部分流量用于实验,则当前序实验组划出足够的流量用于实验时,可能造成后面实验组无法得到足够的流量,因而造成流量饥饿,而导致的实验结果可信度低的问题;对于多因子实验来说,因其实验数量随着参数数量的增加呈指数增长,所以根本无法应用于大规模线上系统中。

此外,还有的测试方式,通过构建多个实验层,并且每个实验层设定至少一个实验,通过获取实验配置人员的实验配置数据来实现实验流量的分配,决定每个实验层中各个实验所占的流量比例,当接收到用户请求后,直接根据实验流量分配数据分配在每个实验层中该用户请求进入的目标实验,将该用户请求分流至每个实验层中的目标实验,以此解决现有技术中的AB测试只按照用户的ID最后一位划分,因尾号分布不随机,造成的实验相互影响,存在较大结果误差的问题;虽然该方式相比于传统实验方法在一定程度上增加了实验结果的可信度,但是因为只能使用实验数据,所以仍然无法解决流量饥饿以及参数数量巨大时实验的性能问题。

发明内容

基于此,针对上述技术问题,本申请提供一种在线服务实验方法、装置、计算机设备及存储介质,以解决现有技术中流量饥饿以及参数数量巨大时实验的性能问题。

一种在线服务实验方法,应用于在线服务实验系统中,其中,所述在线服务实验系统包括至少一个实验域,各所述实验域对应一个待评估系统,各所述待评估系统包括待评估对象,所述方法包括:

对所述待评估对象进行参数化处理,得到所述待评估参数;

根据参数关联性对所述待评估参数进行分组,得到分组参数,其中,所述分组参数中包括多个取值组合,每个所述取值组合对应一个实验;

为各所述分组参数所在实验层指定一个请求键值;

当接收到用户请求时,根据所述请求键值确定是否存在与所述用户请求对应的实验,若存在,则将其作为命中实验;并

将所述命中实验对应的取值组合作为生效参数,计算得到实验结果。

一种在线服务实验装置,应用于在线服务实验系统中,其中,所述在线服务实验系统包括至少一个实验域,各所述实验域对应一个待评估系统,各所述待评估系统包括待评估对象,所述装置包括:

处理模块,用于对所述待评估对象进行参数化处理,得到所述待评估参数;

分组模块,用于根据参数关联性对所述待评估参数进行分组,得到分组参数,其中,所述分组参数中包括多个取值组合,每个所述取值组合对应一个实验;

配置模块,用于为各所述分组参数所在实验层指定一个请求键值;

实验模块,用于当接收到用户请求时,根据所述请求键值确定是否存在与所述用户请求对应的实验,若存在,则将其作为命中实验;以及

输出模块,用于将所述命中实验对应的取值组合作为生效参数,计算得到实验结果。

一种计算机设备,包括存储器和处理器,以及存储在所述存储器中并可在所述处理器上运行的计算机可读指令,所述处理器执行所述计算机可读指令时实现上述在线服务实验方法的步骤。

一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,所述计算机可读指令被处理器执行时实现上述在线服务实验方法的步骤。

上述在线服务实验方法、装置、计算机设备和存储介质,通过根据参数之间的关联性,将待评估参数进行分组,并为每一参数设定一个实验层,每个实验层上设定请求键值用于对用户请求进行筛选,以确定与用户请求对应的实验,对所有命中实验的参数组合得到生效参数取值。使用多个实验层的实验,解决了流量饥饿的问题,并使用线上流量,使得实验结果更加可信;而且,还使用参数分组,解决了大规模线上实验的性能及有效性问题。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为在线服务实验方法的应用环境示意图;

图2为在线服务实验方法的流程示意图;

图3为在线服务实验装置的示意图;

图4为一个实施例中计算机设备的示意图。

具体实施方式

除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请;本申请的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本申请的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

为了使本申请的目的、技术方案及优点更加清楚明白,下面结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供的在线服务实验方法,可以应用于如图1所示的应用环境中。其中,该应用环境可以包括终端102、网络以及服务端104,网络用于在终端102和服务端104之间提供通信链路介质,网络可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。

用户可以使用终端102通过网络与服务端104交互,以接收或发送消息等。终端102上可以安装有各种通讯客户端应用,例如网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。

终端102可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器(Moving Picture Experts Group AudioLayer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts GroupAudio Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。

服务端104可以是提供各种服务的服务器,例如对终端102上显示的页面提供支持的后台服务器。

需要说明的是,本申请实施例所提供的在线服务实验方法一般由服务端/终端执行,相应地,在线服务实验装置一般设置于服务端/终端设备中。

本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

应该理解,图1中的终端、网络和服务端的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。

其中,终端102通过网络与服务端104进行通信。服务端104对待评估对象进行参数化处理,并为参数化后得到的多个待评估参数进行分组,然后设定每一个分组参数具有一个实验;为各分组参数所在实验层指定请求键值,该当接收到终端102的用户请求时,基于所述请求键值确定命中实验,然后获取其对应的参数作为生效参数,并将实验结果发送到终端102。其中,终端102和服务端104之间通过网络进行连接,该网络可以是有线网络或者无线网络,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务端104可以用独立的服务器或者是多个组成的服务器集群来实现。

在一个实施例中,如图2所示,提供了一种在线服务实验方法,以该方法应用于图1中的服务端为例进行说明,包括以下步骤:

步骤202,对所述待评估对象进行参数化处理,得到所述待评估参数。

在一些实施例中,本申请的技术方案应用于在线服务实验系统中,其中,所述在线服务实验系统包括至少一个实验域,各所述实验域对应一个待评估系统,各所述待评估系统包括待评估对象。

在一些实施例中,一般地,会新建一个项目,然后该项目中包括多个待评估系统。

项目的引入使得本实施例可以作为实验平台供多个接入方使用,包含项目、域等划分,使其可以适用于跨团队大规模系统开发场景,使得本申请的技术方案更有实际应用价值。

进一步地,在一些实施例中,为每一个待评估系统创建一个实验域,不同待评估系统对应不同的实验域,可以实现多个待评估系统的实验,提高了实验效率。而且,实验域主要是工程上的考虑,因为我们实际开发中经常遇到一个项目多个团队参与其中,每个团队负责其中的一个或多个模块,有些指标可能是多个团队都关心的,有些指标可能只是某个团队内部关心的,根据各种不同的需求,实验域主要是提供了一种灵活的划分方式,让实验域和实验域之间不要互相干扰。其中,一个实验域里面的任何一层划分流量,都只是在所属域中划分,不会影响其他域中的流量。

进一步地,所述对待评价对象进行参数化处理,得到待评估参数,包括:

检测所述待评估对象的数据类型;若所述数据类型为参数,将所述待评估对象作为所述待评估参数;若所述数据类型为非参数,根据引入的预设参数对所述待评估对象进行参数化处理,得到所述待评估参数。

有些场景本身就是对参数的评估,比如bert模型层数、隐含层的大小,注意力头的数量等,这种无需做特殊处理。其他场景可能初始并不是对参数的评估,但其本质也是对参数的评估,因此可以转化为对参数的评估,一般是通过引入参数的方法,比如评价两个完全不同的模型,例如,itemCF和userCF哪个更好,在本实施例中可以引入一个叫做modelName(模型名)的参数,其中,userCF和itemCF指的是基于用户的协同过滤和基于物品的协同过滤;那么这个问题就被转化为评估modelName的两种取值(modelName=userCF或modelName=itemCF)更好的问题了。

步骤204,根据参数关联性对所述待评估参数进行分组,得到分组参数,其中,所述分组参数中包括多个取值组合,每个所述取值组合对应一个实验。

在一些实施例中,对所有待评估参数,包括参数化过程中引入的预设参数进行分组操作;其中,参数关联性是指待评估参数之间是否相互独立,如果相互独立则将其划分到不同的分组,得到分组参数;如果待评估参数之间相互关联,则将其划分到相同的分组。

其中,取值组合,比如,某参数组里有三个参数A、B、C,假设每个参数有2种取值,那么最多有2×2×2=8种取值组合,每种取值组合会对应一个实验。在讨论某一个实验时,可以说这个实验对应的参数取值是A=xx,B=xx,C=xx,也可以说这个实验对应的参数取值组合为A=xx,B=xx,C=xx。

具体地,例如前端参数BColor(背景颜色)和TColor(文字颜色)两个参数不能独立改变,因为若是独立变化,其中会存在无效组合,比如BColor(背景颜色)和TColor(文字颜色)皆为blue,表示背景颜色和文字颜色皆为蓝色,这种显然是无效组合,根本无需浪费线上流量进行实验,而应该在实验设置阶段就将其排除。

在一些实施例中,本申请根据参数关联性对待评估参数进行分组,使得实验者可以在配置阶段就能识别出无效的参数组合并将其排除,大大提高了实验效率。

再例如,BERT模型的参数L、H和A,会被分到同一组中,因为它们之间相互关联,共同决定了人工智能模型的效果;但L、H和A不会与前端参数BColor(背景颜色)和TColor(文字颜色)划分到一组,因为它们之间不具有相关性,前端颜色的改变对后端模型的效果不会产生什么影响,反之亦然。

进一步地,在分组后,需要为各分组参数设定一个实验层。

其中,实验层是参数分组后,每组参数对应一个实验层,具有对流量进行划分功能的参数。假如有5组参数,就会对应5个实验层,所有的用户请求都会经过每一个实验层,在每一个实验层内部又会对流量划分范围,比如落在0%~10%的范围的请求会命中实验A,10%~20%范围的请求会命中实验B,20%~100%范围内的请求在这一层不会命中任何实验。一个请求在某个层命中或不命中实验,不影响它在其他实验层的命中情况。

例如,对于BERT模型的参数,假如L有n1种取值,H有n2中取值,A有n3种取值,则最终有n=n1*n2*n3种取值,其中,有m种有效组合,其中m<

进一步地,还会在每一层设置一个特殊的空白实验,该空白实验对应的取值组合是系统本身原有的取值组合,而其他每个实验都对应空白实验取值组合的一种变化,这样可以识别出新的系统变更相比于原系统,效果到底是变差了还是变好了,如果变好了,变好了多少,以此作为是否可以用新的系统变更原有系统的决策依据。

进一步地,还会为每个实验设置一个开始时间和结束时间,在开始时间之前和结束时间之后,该实验均处于未生效状态,只有生效的实验才会参与后续计算。

本实施例依据参数分组的结果进行实验分层,并且基于参数关联性的参数分组及分层方法,可以排除无效的实验,使得实验配置更加合理,实验结果更加可信。而又因为无效实验被排除,性能开销也相应地降低。这相对于参数与实验层相互独立的技术方案,大大提高了实验的可信度及性能。

此外,因为待评估系统的实验者一般是具体业务系统的技术人员,一般情况下,他们只理解具体业务系统的领域知识,而对于实验系统的设计思想和工作原理知之甚少,只将实验系统当作一个黑盒工具使用,因此他们在设置实验的时候,不会理解参数和实验层的关系,以及由此带来的实验有效性问题,因此需要实验系统本身在操作流程上对其进行引导。具体来说,在本申请的实施例中,在实验者通过本发明提供的UI界面添加实验域之后,就会要求实验者先输入待评估的所有参数,然后提示其按照参数关联性对其进行分组。在实验者对参数分组后,本申请中的服务端会自动为每组参数创建对应的实验层,这明显优于现有技术中需要实验者手动创建实验层的方式,因为在实验者不了解实验设计原理的情况下,大部分实验者无法进行合理的层配置,可能将同一层中实验大量不相关的参数,极端情况下甚至在一层中实验所有参数或每个参数放在一层,这都是实际开发过程中会遇到的问题。

由此可见,本申请的参数分组及自动创建实验层的方法,明显减少了实验者的犯错机会,也因此大大降低实验系统的使用培训成本。

进一步,为了排除无效实验,本申请还通过一些参数筛选算法对所述分组参数进行无效筛检,得到筛检后的分组参数。

可选地,获取实验配置检查表,其中,所述实验配置检查表中包括多个预设取值组合;将各所述取值组合与所述预设取值进行对比,并将对比结果一致的取值组合从所述分组参数中删除,得到筛检后的分组参数,其中,当删除所述取值组合时,对应删除所述取值组合对应的实验。

这种参数筛选算法可以称之为静态检查,要求实验者在配置实验之前先预先配置一个检查表,其中包含了常见的不可接受的取值组合。在实验者完成实验配置时,会先进行静态检查,对于包含不可接受取值组合的实验,对其进行剔除。

可选地,生成实验模拟数据,其中,所述实验模拟数据包括与各所述实验层对应的请求键值;通过所述实验模拟数据中的请求键值为各所述实验层分配用户请求,并进行模拟实验,得到模拟实验结果,其中,所述模拟实验结果用于指示用户端上传分组参数筛检结果;根据所述分组参数筛检结果对所述分组参数进行筛检,得到筛检后的分组参数。

这种可以称之为预实验检查,本申请的后台程序会自动生成模拟数据,模拟数据中包含所有层配置的请求键值,然后使用模拟数据对通过静态检查的实验进行模拟的命中计算及生效取值组合计算,并以模拟实验报告的形式展现给实验者,以便实验者提前发现实验中的问题。

可选地,还有一种在每次实验过程中的筛选算法,可以称之为实时检查,指的是在真实线上流量实验过程中,动态监控待评估系统的指标,如发现某实验引起待评估系统指标明显降低,则认为该实验可能存在异常,后台程序会通过邮件等形式发出告警,通知实验者人工介入处理。判断某个实验是否引起待评估系统指标明显降低的方式为:

监控所述待评估系统的系统指标;若所述系统指标出现变化,则判断引起所述系统指标变化的实验,作为异常实验,其中,所述;根据所述异常实验对所述分组参数进行筛检,并用筛检后的分组参数替换筛检前的分组参数,并重复获取命中实验的操作,直到无法获取异常实验。

可选地,指标出现变化一般是指:指标显著降低,例如降低到原来的50%、70%;则会判断引起系统指标显著减低的试验,作为异常实验。因为不同实验的对应的参数取值不同,所以系统指标是一定会变化的,实际上,实验系统的目的正是为了验证不同参数取值对系统指标的影响,因此不能说引起指标变化的就是异常实验。因为我们的目标是寻找能使系统指标提升的参数取值组合,因此实时监控中若发现某个实验导致系统指标显著降低,才认为该实验是一个应当剔除的无效实验。这里需要满足两个条件,一个是“指标降低”,如果是指标提升,那正是我们希望达到的;第二个条件是“显著性”,因为有些降低可能是偶然或者正常波动,只有足够显著的降低才认为是异常,显著性的衡量方式为低于该指标的置信区间下界。

其中,判断引起所述系统指标变化的实验,作为异常实验包括:

获取当前实验层的空白实验对应的取值组合关联的历史返回作为参考数据历史;将所述参考数据历史关联的用户请求作为参考用户行为历史;以指定的时间周期对所述参考用户行为历史进行分段聚合,得到所述待评估系统的指标参考数据集;计算所述指标参考数据集在预设置信水平范围内时,所述系统指标的置信下界;将当前实验对应的参数组合关联的所有历史返回作为实验返回历史;对预设时间段内的实验返回历史进行聚合,计算出待评估系统指标实验值;若所述系统指标实验值低于系统指标的置信下界,则将当前所述实验作为所述异常实验。

具体地,每一实验层中都会设置一个特殊的空白实验,该空白实验对应的取值组合是系统本身原有的取值组合,而其他每个实验都对应空白实验取值组合的一种变化,这样可以识别出新的系统变更相比于原系统,效果到底是变差了还是变好了,如果变好了,变好了多少,以此作为是否可以用新的系统变更原有系统的决策依据。

其中,判断引起系统指标变化的实验,作为异常实验的方式为:获取当前实验层的空白实验对应的取值组合关联的历史返回作为参考数据历史;将所述参考数据历史关联的用户请求作为参考用户行为历史;以指定的时间周期对所述参考用户行为历史进行分段聚合,得到所述待评估系统的指标参考数据集;计算所述指标参考数据集在预设置信水平范围内时,所述系统指标的置信下界;将当前实验对应的参数组合关联的所有历史返回作为实验返回历史;对预设时间段内的实验返回历史进行聚合,计算出待评估系统指标实验值;若所述系统指标实验值低于系统指标的置信下界,则将当前所述实验作为所述异常实验。具体地:

1)将该层空白实验对应取值组合关联的所有历史返回作为参考返回历史;

2)将所述参考返回历史关联的用户行为作为参考用户行为历史;

3)以指定的时间周期对所述参考用户历史行为进行分段聚合,计算出待评估的系统指标参考数据集,指标参考数据集中每一个样本是在某一个时间段聚合计算得出的系统指标;

4)计算所述指标参考数据集在置信水平为(1-α)的情况下的系统指标参考值置信下界,其计算方法为

5)将当前实验对应的取值组合关联的所有历史返回作为实验返回历史;

6)将所述实验返回历史关联的用户行为作为实验用户行为历史;

7)将最近一段时间的实验用户行为历史进行聚合,计算出待评估系统指标实验值;

8)如所述系统指标实验值低于系统指标参考值置信下界,则认为该实验引起待评估系统指标明显减低。

进一步地,每个实验对应的参考数据历史的获取方式为:

对于每个用户请求,计算器命中实验及生效参数,生成返回并收集其关联数据,其中,所述关联数据中包括用户收到返回后的行为数据以及待评估系统的系统数据,可以将其作为参考数据历史,或者历史参考数据。通过上述至少一种检查,可以及时、有效地排除大部分无效实验,减少其对待评估系统的业务影响,同时亦减少实验系统的性能开销(减少了无效实验对应的不必要的计算)。

步骤206,为各所述分组参数所在实验层指定一个请求键值。

在一些实施例中,本实施例指定了多种请求键值,包括但不仅限于:

用户id+实验层id

Cookie+实验层id

Cookie+Data+实验层id

随机值+实验层id

特别的,在一些实施例中,本申请在每种请求键值中都包含实验层id,是因为实验层id是创建实验层的时候生成的一串随机字符或者数字,使得实验层之间的流量划分正交。即一个用户请求在实验层Lx被划分到哪个实验中,并不影响到该请求在实验层Ly中分到哪个实验,所有经过实验层Lx某个实验的流量,在实验层Ly层都会被均匀地实验层Ly层的每个实验中。

具体地,实验层id的生成方式为:

(当前时间戳毫秒值-开始时间戳毫秒值)<<22+网卡MAC哈希值后5位+IP哈希值后5位+同一时间戳多次请求的序列号。

步骤208,当接收到用户请求时,根据所述请求键值确定是否存在与所述用户请求对应的实验,若存在,则将其作为命中实验。

其中,用户请求包括实验用户和在线用户请求,其中,在线的用户请求是指实际的用户请求。

在本实施例中,现有技术中因为仅仅依靠对实验用户分配实验,这样会有两个问题,一是数据量太小,而因为实验用户群体与真实用户群体数据分布特征不同,会导致数据有偏,这两个问题都会导致实验结果可靠性降低。而本申请通过对所有用户流量无差别对待,解决了数据量小和数据有偏的问题,使得实验结果更加可信。

当接收到每个用户请求,则首先提取该用户请求的请求键值,然后对请求键值计算哈希值,将哈希值对100取模以判断该请求落入那个上述流量范围,以此决定该请求进入哪个实验。将任意长度的二进制值串映射为固定长度的二进制值串,这个映射的规则就是哈希算法,而通过原始数据映射之后得到的二进制值串就是哈希值。

用户请求中必须包含实验层指定的请求键值,才会在该层命中实验。比如,只有在请求中包含用户id的场景中,才可以把请求键值类型设置为用户id,通过这种方式可以大大提高实验效率。对于一个给定的待评估系统,请求中有哪些字段实验者是预先知道的,在设置实验时也必须要考虑到这一点,如果由于实验者疏忽在某一层设置了无法提取的请求键值类型,那在这一层请求就不会命中任何实验。

具体地,本实施例可以使用MurmurHash来提升请求键值的哈希计算速度,其计算公式(1)为:

Bucketindex=(MurmurHash(requestkey)%100+100)%100 (1)

其中,requestkey表示提取的请求键值,Bucketindex表示落入哪个流量范围。

进一步地,为了提高实验系统灵活性,还可以为每一实验层设置白名单用户,为其预先指定实验,其中,所述白名单用户所对应的用户请求流向指定的实验。当接收到用户请求,则直接判断该用户请求所对应的用户是否在白名单用户中:

若所述用户请求对应的用户为白名单用户,则直接将该用户请求命中预先指定的实验。

在一些实施例中,本申请相比于没有包含白名单用户处理方法,本申请的技术方案通过白名单用户的特殊处理,使得实验系统可以满足更多的实际使用场景。

步骤210,将所述命中实验对应的取值组合作为生效参数,计算得到实验结果。

根据用户请求在不同实验层命中的所有实验,确定其生效参数取值,其计算方式为:

对所有命中实验对应的参数取值取并集,例如命中实验1的参数取值为{p1=v1,p2=v2},命中实验2的参数取值为{p3=v3,p4=v4},则最终得到的生效参数为:

{p1=v1,p2=v2,p3=v3,p4=v4}

特别地,上述参数分组方案以及实验分层方案,保证了一个参数不会被分配到不同的实验中,因此在计算最终的生效参数时,不会出现参数取值冲突的问题。

进一步地,在得到生效参数取值之后,还包括:

根据所述生效参数取值计算返回值发送给与所述用户请求对应的用户终端,其中,所述用户终端会收集与所述返回值关联的用户对象的行为数据回传给实验系统。

在本实施例中,根据生效参数取值计算返回值并返回给用户终端,然后接收用户终端统计的在收到所述返回值后的用户行为。例如推荐服务器,需要关注对于推荐给用户的列表,用户是否发生了点击行为或者购买行为。

进一步地,待评估系统也会收集一些特定的系统数据回传给实验系统。

用户终端回传的用户行为数据和待评估系统回传的系统数据,共同组成对应请求的关联数据。

通过这种方式,可以使得本申请的技术方案利用实验得到的指标数据更精确地反映了用户和系统的真实情况,以备后续为用户提供更精准的信息处理方案。

进一步地,在得到生效参数取值,并获取了所述请求关联数据之后,还可以包括:

在实验结束后,将命中该实验的所有用户请求的所述请求关联数据进行聚合处理,得到该实验对应的指标数据。其中,所述指标数据包括至少一组有效数据。例如对于命中某实验的所有推荐请求的关联数据,聚合后可以得到其点击率或者转化率等指标,这些指标数据会被存储在数据库中(包括但不仅限于关系型数据库、分布式文件存储系统等),用于后续的统计分析。

通过这种方式的服务实验方法,可以大大提高实验效率和精度。

进一步地,在所述将所述命中实验对应的取值组合作为生效参数取值之后,还包括步骤:

从所述实验指标数据中选择最优的指标,将其对应的所述生效参数取值更新到所述待评估系统中,得到更新后的待评估系统。

在一些实施例中,本申请还为每个待评估系统创建一个特殊的发布层,在某次实验后发现的最优生效参数取值可以放入该发布层中,对于后续请求,若未命中任何实验,则使用发布层中的参数取值。

这样做的原因是,本申请的技术方案在大规模线上系统中,要将系统优化真正应用到系统中,往往要等待下一个版本周期,在本实施例中,使用发布层,可以使得当前最优的参数组合即时生效,以便于快速观察新的系统优化对模型以及对各项商业指标的影响。相比于没有发布层的技术方案,本申请中的特殊的发布层,使得两次版本周期内通过实验系统得出的最优方案可以快速在业务系统中生效,而后续实验又可以在此基础上进行,使得业务系统更加敏捷,更加适用于人工智能应用场景,取得了意想不到的有益效果。

上述最优生效参数取值只有满足对应指标相对参考指标显著提升才可以放入所述发布层。判断指标是否显著提升的方式为:

计算所述参考数据集在置信水平为(1-α)的情况下的系统指标参考值置信上界,其计算方法为

进一步地,在一些实施例中,提供了一个客户端jar包,其中包含预置程序,待评估系统只需要在自己项目中引入此jar包,并指定对应的项目id或者域id,上述预置程序就可以自动地从实验系统后台更新最新的实验配置,并在待评估系统本地完成上述实验命中及生效参数计算等逻辑。

本实施例通过jar包中的预置程序周期性地将实验配置拉到业务系统本地,每次的实验命中都是在本机计算,而无需通过远程调用,相比于需要业务系统通过远程系统调用去计算实验命中结果,极大地提高了系统的性能,使其更加适用于大规模系统。

特别地,实验配置的拉取提供周期自动更新,和手动立即更新两种方式,以提供足够的灵活性。

特别地,上述预置程序中内置了OAuth鉴权,未鉴权的请求无法拉取实验配置,以确保数据的安全。

上述预置程序还包含了数据上报功能,以将部分缓存在评估系统本地的指标数据上传到实验系统后台,用于统一的指标聚合计算。

上在线服务实验方法中,通过根据参数之间的关联性,将待评估参数进行分组,并为每一参数设定一个实验层,每个实验层上设定请求键值用于对用户请求进行筛选,以确定与用户请求对应的实验,对所有命中实验的参数组合得到生效参数取值。使用多个实验层的实验,解决了流量饥饿的问题,并使用线上流量,使得实验结果更加可信;而且,还使用参数分组,解决了大规模线上实验的性能及有效性问题。

应该理解的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,如图3所示,提供了一种在线服务实验装置,该装置与上述实施例中在线服务实验方法一一对应。该在线服务实验装置包括:

处理模块302,用于对所述待评估对象进行参数化处理,得到所述待评估参数;

分组模块304,用于根据参数关联性对所述待评估参数进行分组,得到分组参数,其中,所述分组参数中包括多个取值组合,每个所述取值组合对应一个实验;

配置模块306,用于为各所述分组参数所在实验层指定一个请求键值;

实验模块308,用于当接收到用户请求时,根据所述请求键值确定是否存在与所述用户请求对应的实验,若存在,则将其作为命中实验;以及

输出模块310,用于将所述命中实验对应的取值组合作为生效参数,计算得到实验结果。

进一步地,处理模块302,包括:

检测子模块,用于检测所述待评估对象的数据类型;

判断子模块,用于若所述数据类型为参数,将所述待评估对象作为所述待评估参数;

参数化子模块,用于若所述数据类型为非参数,根据引入的预设参数对所述待评估对象进行参数化处理,得到所述待评估参数。

进一步地,在分组模块304之前,还包括:

筛检子模块,用于通过参数筛选算法对所述分组参数进行无效筛检,得到筛检后的分组参数。

进一步地,筛检子模块,包括:

获取单元,用于获取实验配置检查表,其中,所述实验配置检查表中包括多个预设取值组合;

对比单元,用于将各所述取值组合与所述预设取值进行对比,并将对比结果一致的取值组合从所述分组参数中删除,得到筛检后的分组参数,其中,当删除所述取值组合时,对应删除所述取值组合对应的实验。

进一步地,筛检子模块,包括:

生成单元,用于生成实验模拟数据,其中,所述实验模拟数据包括与各所述实验层对应的请求键值;

实验单元,用于通过所述实验模拟数据中的请求键值为各所述实验层分配用户请求,并进行模拟实验,得到模拟实验结果,其中,所述模拟实验结果用于指示用户端上传分组参数筛检结果;

筛检单元,用于根据所述分组参数筛检结果对所述分组参数进行筛检,得到筛检后的分组参数。

进一步地,在输出模块310之后,还包括:

监控模块,用于监控所述待评估系统的系统指标;

判断模块,用于若所述系统指标出现变化,则判断引起所述系统指标变化的实验,作为异常实验,其中,所述;

筛检模块,用于根据所述异常实验对所述分组参数进行筛检,并用筛检后的分组参数替换筛检前的分组参数,并重复获取命中实验的操作,直到无法获取异常实验。

进一步地,判断模块,包括:

历史获取子模块,用于获取当前实验层的空白实验对应的取值组合关联的历史返回作为参考数据历史;

数据转移子模块,用于将所述参考数据历史关联的用户请求作为参考用户行为历史;

聚合子模块,用于以指定的时间周期对所述参考用户行为历史进行分段聚合,得到所述待评估系统的指标参考数据集;

计算子模块,用于计算所述指标参考数据集在预设置信水平范围内时,所述系统指标的置信下界;

历史返回子模块,用于将当前实验对应的参数组合关联的所有历史返回作为实验返回历史;

历史聚合子模块,用于对预设时间段内的实验返回历史进行聚合,计算出待评估系统指标实验值;

筛检输出子模块,用于若所述系统指标实验值低于系统指标的置信下界,则将当前所述实验作为所述异常实验。

上述在线服务实验装置,通过根据参数之间的关联性,将待评估参数进行分组,并为每一参数设定一个实验层,每个实验层上设定请求键值用于对用户请求进行筛选,以确定与用户请求对应的实验,对所有命中实验的参数组合得到生效参数取值。使用多个实验层的实验,解决了流量饥饿的问题,并使用线上流量,使得实验结果更加可信;而且,还使用参数分组,解决了大规模线上实验的性能及有效性问题。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图4所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机可读指令和数据库。该内存储器为非易失性存储介质中的操作系统和计算机可读指令的运行提供环境。该计算机设备的数据库用于存储参数。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机可读指令被处理器执行时以实现一种在线服务实验方法。本实施例通过根据参数之间的关联性,将待评估参数进行分组,并为每一参数设定一个实验层,每个实验层上设定请求键值用于对用户请求进行筛选,以确定与用户请求对应的实验,对所有命中实验的参数组合得到生效参数取值。使用多个实验层的实验,解决了流量饥饿的问题,并使用线上流量,使得实验结果更加可信;而且,还使用参数分组,解决了大规模线上实验的性能及有效性问题。

其中,本技术领域技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable Gate Array,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机可读指令,计算机可读指令被处理器执行时实现上述实施例中在线服务实验方法的步骤,例如图2所示的步骤202至步骤210,或者,处理器执行计算机可读指令时实现上述实施例中在线服务实验装置的各模块/单元的功能,例如图3所示模块302至模块310的功能。

本实施例通过根据参数之间的关联性,将待评估参数进行分组,并为每一参数设定一个实验层,每个实验层上设定请求键值用于对用户请求进行筛选,以确定与用户请求对应的实验,对所有命中实验的参数组合得到生效参数取值。使用多个实验层的实验,解决了流量饥饿的问题,并使用线上流量,使得实验结果更加可信;而且,还使用参数分组,解决了大规模线上实验的性能及有效性问题。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机可读指令来指令相关的硬件来完成,所述的计算机可读指令可存储于一非易失性计算机可读取存储介质中,该计算机可读指令在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。

本申请所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形、改进或者对部分技术特征进行等同替换,而这些修改或者替换,并不使相同技术方案的本质脱离本发明个实施例技术方案地精神和范畴,都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

相关技术
  • 在线服务实验方法、装置、计算机设备和存储介质
  • 服务器电源在线更新方法、装置、计算机设备及存储介质
技术分类

06120113116482