AB 实验说明

用户登录

image-20210712112723596

首次部署完系统,进入登录页面, 默认用户名密码为 admin/admin, 首次登陆后,会强制修改密码。 密码修改完成, 可以在设置里新建普通用户,后面使用普通用户登录, admin 密码可以单独保管好。

image-20210712112946738

AB 实验配置

在整个实验配置中, 相关的概念可以参考这里。我们按照相关概念一步步操作。

创建场景

image-20230321101649852

创建实验室

实验室是一组流量的集合。可以一个实验室,也可以创建多个。 但是 base 实验室必须要有,这样如果流量没有匹配到实验室,可以走 base 实验室。

image-20210712115215047

image-20210712115235617

在这里我们创建了一个base 实验室。 选择了 UID 分桶,并且承载了 100% 的流量, 分桶数为 100, 桶号为 0 -100。

这里有个运行环境的概念,我们可以在预发环境了里测试整个实验的配置,如果没有问题后,可以发布到线上。这里我们用的就是预发环境。

image-20210712115837149

我们可以在实验室列表中,看到相关的实验室。并且能看到, 实验室还没有上线。也就是说,在预发环境里也没有生效。我们可以把实验整体配置完成后,再配置上线。

添加分层

在实验室列表中可以进入层管理来管理分层信息。可以添加单层,也可以多层。多层之间流量是正交的,可以有效复用流量。 这里我们添加两层,对应召回和排序实验。

image-20210712141033776

创建实验

从实验组管理里可以创建实验。实验组是一个逻辑概念,里面包含具体的实验,比如基准实验和测试实验。

image-20210712141350641

基准实验:

image-20210712141532947

测试实验:

image-20210712141805404

这里我们创建了两个实验,流量分别占比 50%。 并且有个实验参数,version, 不同的实验值不同。version 相当于实验参数变量。

添加成功后,实验组是未上线状态,首先通过更新按钮进入实验组,把实验先上线。然后依次是实验组,实验室的上线。

image-20210712141846593

点击这里进行实验上线

image-20210712142030659

客户端调用

  host := "http://1730760139076263.cn-beijing.pai-eas.aliyuncs.com/api/predict/pairec_experiment"
	client, err := NewExperimentClient(host, common.Environment_Prepub_Desc, WithLogger(LoggerFunc(log.Printf)), WithErrorLogger(LoggerFunc(log.Fatalf)), WithToken("xxx"))
	if err != nil {
		t.Fatal(err)
	}

	experimentContext := model.ExperimentContext{
		RequestId:    "pvid",
		Uid:          "211789765",
		FilterParams: map[string]interface{}{},
	}

	experimentResult := client.MatchExperiment("ab_test", &experimentContext)

	fmt.Println(experimentResult.GetLayerParams("recall").GetString("version", "not exist"))

	fmt.Println(experimentResult.Info())
	fmt.Println(experimentResult.GetExpId())

common.Environment_Prepub_Desc, 这里指定了预发环境,输出如下:

image-20210712142538602

可以看到, 实验参数返回了 version = v2, 实验ID 是ER19_L30#EG65#E156_L31, ER19 指的实验室的ID。L30#EG65#E156 是召回层 L30 上命中了实验 E156。 这里可以通过实验标识能看到。L31 是 rank 层,但是目前没有配置实验,这里显示没有命中实验。

experimentResult.GetExpId() 这里的命中的实验ID要返回给客户端,通过曝光回流来统计实验效果。

image-20210712142937324

正式上线生成

如果是实验室第一次上线,可以通过实验室的克隆功能把预发的配置clone 到线上。 但是线上的数据全是未上线的状态,需要手动的上线。

如果后续再有实验的变更,需要手动的在预发和生产环境同步配置。

image-20210913152132854

与 pairec 推荐引擎集成

如果使用了 pairec 的推荐引擎框架,pairec 本身集成了 ab 服务,并且预定义了一些配置参数可以直接使用。具体参考这里