背景

随着大数据和人工智能时代的到来,数据的驱动使得企业经营决策和精细化运营的效果指标的量化评估成为可能,企业的决策和运营也越来越离不开数据的支持。尤其是朝夕万变的互联网行业,产品创新和决策都需要快速得到用户反馈的数据去不断的迭代更新。 产品的新特性是否会受到用户的欢迎?新优化的模型和策略的线上效果如何?如何低成本的进行快速且量化的效果验证? 答案是A/B test实验

事实上,一个高效的A/B test在线实验平台已经成为各大互联网公司进行产品迭代和策略优化的标配工具。A/B测试是互联网公司实现数据驱动的基础,Microsoft、Google, Amazon、Facebook都在这方面做了大量的工作,腾讯、阿里、百度等国内主流互联网公司也纷纷各自构建了一套支持产品迭代和策略优化的A/B test在线实验平台。

达观数据的算法和工程团队每天都在持续不断地尝试各种算法模型的升级和策略优化,而这些算法模型和策略有的相互独立,有的相互影响。为了对这些模型和策略进行有效的量化效果评估,我们借鉴了谷歌的 ”Overlapping Experiment Infrastructure”中的思想搭建了达观数据在线分层实验平台。该实验平台可以支持同时运行多个并行实验,支持多种分流模式,支持自动灰度发布,支持实验效果的实时反馈和可视化(达观数据桂洪冠)。

分层实验模型

达观数据在线分层实验平台的设计借鉴了谷歌2010年在KDD上公布的分层实验框架,并在其基础上根据我们的应用特点进行了大量的裁剪。谷歌分层实验框架对实验空间进行了纵向横向两个维度的划分,其中纵向的划分是对应的概念,横向的划分对应的概念。是指流量的一个划分(指对一部分流量的独占),是指系统参数的一个子集,而实验是指在一个流量划分上,进行零个或多个参数的修改,并最后改变请求处理的过程。概念还是比较抽象,我们来看一个栗子:

如上图,流量先被分成两个域,左边是一个只有单一层的非重叠域,右边是一个三层的重叠域。在这种情况下,每个请求要么被分到非重叠域要么被分到重叠域。如果请求在非重叠域(上图左侧),那么请求最多在一个实验中(这个实验可以改变参数集合中的任意参数的值),如果请求在重叠域(上图右侧),那么请求可以通过三个实验层总共九个实验中。每个实验层可以根据不同的流量划分策略把流量分配到相应参数集的实验中。

下图是一个更具体的栗子,左侧是非重叠域,右侧分为3层,分别是UI层搜索结果层广告结果层

根据我们的实践经验,一般每一层划定一个批次实验,这个批次试验中有一个是基准实验,其它的属于对比实验,基准实验以及每个对比试验都对应一个试验参数集(达观数据桂洪冠)。

分层实验模型特性

分层实验模型具备如下一些特性:

特性1:纵向域划分,横向层划分。

特性2:相互关联的策略参数位于相同实验层,相互独立的策略参数位于不同实验层。

特性3:流量在不同实验层之间根据不同的分流策略被重新分配,不同层的实验流量是正交的。

特性4:不同实验层之间的实验相互独立。

特性5:模型的发布层(Launch Layers)可以实现实验流量的灰度发布直至全流量发布。

流量分配策略

分层实验模型常见的流量分配策略:

策略1:随机分配

优点是简单自然,缺点是用户的请求会在不同参数集的实验中“穿梭”,造成用户体验上的不一致性。

策略2:按照cookie或用户id取模进行分配

此种流量划分方式可以确保用户的请求被分配到固定的实验中,不会造成用户体验的不一致。

策略3:按照cookie+日期取模进行分配

这种方式是综合了cookie和日期的信息后再取模,采用这种方式的话,一个实验一天内圈定的cookie是固定的,但随着日期的变更会圈定不同的cookie。

策略4:按照业务字段进行分配

这种方式可以满足特定的实验流量要求,比如可以按照用户的地域来源取特定城市的用户流量,或者按照用户年龄取特定年龄段的用户流量。

策略5:hash查询串取模进行分配

这种方式使得相同的查询串请求可以分流到确定的实验上。

为了保证层与层之间实验流量的相互独立,上述基于取模的流量分配策略需要考虑实验所在层layerid的信息, 假设当前层有20个bucket分桶(实验参数),则当前流量在当前层的bucket = (f(cookieid, layerid) % 20),f是某个hash函数。

流量分流条件

在通过上述流量分配策略选择一部分流量后,分流条件(condition)通过仅分配特定条件的流量给实验或域,以达到更高效利用流量的目的。比如,一个实验仅仅改变来自日语的查询,那么实验配置中只抽取日语的流量。我们可以基于地区,语言,浏览器等信息设置流量抽样条件。有了分流条件,一个只使用“日语”流量的实验,和一个只使用英语流量的实验,可以使用相同的cookie取模。

灰度发布策略

灰度发布是一种常用的发布流量控制策略,是指在实验的过程中根据实验的效果逐步加大实验流量同时持续跟踪实验效果直至最终全量一个实验。分层实验模型是如何实现灰度发布策略的呢? 谷歌提出一个发布层的概念(Launch Layers)。在这个架构下,一个特性的评估和发布过程是类似如下过程的:

1)创建一个实验或是一组实验来评估特性。注意配置实验涉及指定分配类型和相关的分配参数(比如:cookie取模),分配条件,和特性相关的参数。

2)评估实验指标。根据实验结果,判断是否要进行新一轮的实验,即通过修改或创建新的实验,或甚至修改代码从根本上改变特性。

3)如果特性可以发布,就进入发布过程:创建一个新的发布层和发布层实验,逐步的放量这个实验,并最终删除发布完的发布层,然后将发布层实验的相关参数设为系统默认参数。

达观分层实验平台架构

达观分层实验平台主要由实验配置管理中心实验分析与展示中心以及在线服务系统三部分组成。

实验配置管理中心

实验人员可以在实验配置管理中心进行实验的创建启动暂停删除等操作。

实验创建:实验数据主要包括(但不限于)实验的名称(比如搜索Reranking实验)、实验的起始时间、实验owner、实验参数集、实验作用模块、流量分配等。其中实验起始时间定义了实验生效发生作用的时间范围,超过此时间实验自动结束并停止。实验参数集定义了需要测试的不同实验参数数据,每个实验参数对应实验的一个bucket分桶(比如rank_strategy=5, rank_strategy=6, rank_strategy=7分别对应实验的三个bucket)。每个实验都有一个唯一的实验ID。

实验流量分配:对实验选择流量划分策略(见前文介绍)。

实验启动:创建好的时间在达到实验设置的开始时间后自动启动,实验人员也可以对暂停的实验重新执行启动操作。

实验暂停:实验人员可以对执行中的实验执行暂停操作。

实验删除:实验人员可以删除已经停止的实验,正在执行的实验无法直接删除(需要先执行停止操作)

实验权限控制:实验的owner(创建者)对实验有启动、暂停、删除等权限,也即只能操作自己创建的实验。实验配置管理中心直接控制线上服务的模型和策略的执行,安全性就显得尤为重要。

实验持久化:实验的数据被存储到MySQL数据库中进行持久化。

实验分析与效果展示中心

实验分析和可视化效果展示是实验平台不可或缺的组成部分。在数据实时采集模块,实验ID以及实验参数数据(比如策略和模型参数)连同系统的业务日志数据一起被记录和采集。在这里可以实时查看到每个执行中实验(实验ID区分)的统计分析和效果对比数据,既可以对一个实验的不同参数集(实验bucket分桶)的结果数据进行横向对比(通常与基准实验作对比),也可以对实验基于时间维度的纵向效果作对比。

上图是达观数据推荐算法和某客户推荐算法时间维度纵向效果(点击率)对比。

在我们的实践中,通过对实验日志数据的实时采集和分析,可以实现对实验效果(比如CTR指标)进行准实时的对比分析和监控。如果发现实验(新算法策略)的效果指标出现异常,可以在实验配置管理中心及时调整实验参数或调整实验流程或停止实验(达观数据桂洪冠)。

在线服务系统(实验执行环境)

在线服务系统是实验执行的环境。在线服务系统加载了一个实验平台客户端组件,该组件主要有2个职责:

职责1:定时从数据库中同步实验数据信息

职责2:实验流量决策。对每个请求流量,根据实验的流量划分策略进行bucket分桶计算,获取对应bucket的实验参数数据(策略和模型参数)。请求携带被分配的实验参数数据流入线上服务模块。

各线上服务模块从请求中获取自己关心的实验参数数据进行相应的实验,并在记录日志时把实验ID和参数数据一同写入。

总结

本文以谷歌2010年发布的分层实验框架为参考,阐述了分层实验模型的域、层、实验等基本概念,进一步分析了分层模型的基本特性、实验流量划分策略、分流条件以及灰度发布方法等内容。然后,重点介绍了达观数据分层实验平台架构的实验配置中心、效果分析与展示中心、在线服务系统(实验执行环境)等主要模块,描述了从实验创建到实验执行再到实验结果分析的全过程。

达观数据分层实验平台同时运行着数十个面向不同客户的多个系统应用的策略和模型迭代优化实验,已经成为公司基础平台体系架构中非常重要的组成部分。

未来展望

未来我们希望把达观数据分层实验平台做成开放的一站式实验服务平台,把我们的平台实验能力输出给更多的客户和合作伙伴,大家基于这个平台相互学习合作共赢。

参考文献

1.Diane Tang, Ashish Agarwal, Deirdre O’Brien, Mike Meyer   Overlapping Experiment Infrastructure: More, Better, Faster Experimentation

2.阿里妈妈大规模在线分层实验实践http://www.infoq.com/cn/articles/alimama-large-scale-online-hierarchical-experiment/

关于作者

桂洪冠,达观数据联合创始人,中国计算机学会CCF会员,自然语言处理技术专家。在参与创办达观数据前,曾在腾讯文学、阿里巴巴、新浪微博等知名企业担任数据挖掘高级技术管理工作。桂洪冠在数据技术领域拥有6项国家发明专利,中国科学技术大学计算机硕士学位。在大数据架构与核心算法以及文本智能处理等领域有深厚的积累和丰富的实战经验。

http://credit-n.ru/zaymyi-next.html

作者 达观数据

达观数据是一家专注于文本智能处理技术的国家高新技术企业,获得2018年度中国人工智能领域最高奖项 “吴文俊人工智能科技奖”,也是本年度上海市唯一获奖企业。达观数据利用先进的自然语言理解、自然语言生成、知识图谱等技术,为大型企业和政府客户提供文本自动抽取、审核、纠错、搜索、推荐、写作等智能软件系统,让计算机代替人工完成业务流程自动化,大幅度提高企业效率。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注