剖析字节案例,火山引擎 A/B 测试 DataTester 如何“嵌入”技术研发流程

news2024/11/25 5:03:19

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群

日前,在 WOT 全球创新技术大会上,火山引擎 DataTester 技术负责人韩云飞做了关于字节跳动 A/B 测试平台的分享。DataTester 是字节跳动内部应用多年的 A/B 实验平台,平台自建立至今,承载了字节 500 余个业务线的 A/B 实验任务,累计已开展过 150 万次实验,现在字节跳动每天会新增实验 2000 余个,同时在 DataTester 上运行的实验有 3 万余个。

字节跳动内部有着非常浓厚的数据文化和实验文化,抖音、今日头条的名字都经由 A/B 测试确定,而 A/B 测试也是整个研发链路上的必经一环。本文将以字节研发流程中的两个案例,介绍 A/B 测试在研发全流程中的角色。

1.产品系统重构

今日头条是一款信息类互联网产品,它会基于数据挖掘的推荐引擎向用户推荐文章。今日头条早期的信息流服务是使用 Python 的一项单体服务,但随着字节业务发展的迅速,今日头条的流量也迎来了爆发式增长,产品在性能工程上的复杂度也在急剧升高。

为了优化产品,使之更加适应大流量下的响应,今日头条的信息流业务设计了一次大规模服务化重构:语言选型从 Python 切换到了 Golang,从单体服务架构演变成了分层的微服务架构。

但这个重构设计,是围绕产品性能方面的技术指标展开的,但对于用户体验的影响和业务目标的影响,却无法通过短期观察得到结论。为了避免复杂的新系统上线后,降低头条用户的产品使用体验,因此在重构方案设计完毕后,今日头条业务花费了 6 个月以上的时间,开展了新方案和旧方案对比的 A/B 测试,总共进行过几十次 A/B 实验,多点开启灰度测试,并不断分析结果、迭代方案,确认改进点对业务数据指标的影响。

在半年多之后,这个复杂的新系统终于结束了 A/B 测试,并推全上线。上线后的新系统对今日头条大部分全局指标几乎无影响,甚至一些关键指标取得了显示正向的结果。

2.产品 Bug 修复

这个案例是字节直播产品的场景。该产品在设计了新的精排模型,原本期望是想召回模型学习到更多信息,提前做一些召回符合用户兴趣的内容,提升部分产品关键指标。但在实际操作中,由于模型配置出现了 Bug,上线失败。

因此,该直播产品的团队针对这个 Bug 进行了修复,但只能采用使精排模型变得更复杂的方案。新的功能虽然已经成功跑通,但由于模型更加复杂,对于用户产品体验负向影响的风险会随之升高。

为了验证新开发的功能对用户体验的影响,该团队使用 DataTester 开启了 A/B 测试,他们将用户分为新用户组、老用户组分别开启实验,通过数据观察发现,新的功能对于新用户的而言没有什么实质性影响,新用户的使用时长、留存等指标依然是在一个特定区间波动;但在老用户组的实验数据中,他们发现老用户在内容人均阅读时长上,有了 0.3%的显著提高。虽然 0.3%是一个看起来不大的数字,但对于字节产品的用户体量而言,这种幅度的提升,在用户内容消费时长上的实质提升很大。

上述两个案例是 DataTester 在字节跳动应用的缩影,实际上,在字节整个的研发流程中,开发、上线、BugFix、优化、重构,A/B 测试都会作为基础设施中的一环,来服务于整个研发流程。除此之外,A/B 实验也广泛应用于字节跳动业务的方方面面,从产品命名到交互设计,从改变字体、弹窗效果、界面大小,到推荐算法、广告优化、用户增长...... 可以说,DataTester 已经融入在字节的每一个业务和每一项决策中。

DataTester 当前已通过火山引擎面向外部企业开放服务,能基于先进的底层算法,提供科学分流能力和智能的统计引擎,支持多种复杂的 A/B 实验类型。目前,火山引擎 DataTester 已经服务了美的、得到、凯叔讲故事等在内的上百家标杆客户,将成熟的“数据驱动增长”经验赋能给各行业。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/336820.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Roboguide与TIA V16通讯

软件需求:1. roboguide;2. TIA V16;3. KEPServer; 在之前的文章中介绍过KEPServer与TIA V16的通讯,此处不再介绍。接下来,介绍roboguide与KEPServer的仿真通讯。 创建一个roboguide项目。选择【外部设备】➡【添加外部设备】 选择【OPC Server】➡【OK】 OPC服务器名称命…

linux安装并配置nginx

菜鸟教程 一 . Nginx安装和部署 1.输入指令,下载相关的依赖包 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-develYUM(Yellow dog Updater, Modified)为多个Linux发行版的前端软件包管理器 -y 是参数,默认不要确认, rp…

对话 ChatGPT:现象级 AI 应用,将如何阐释「研发效能管理」?

ChatGPT 已然是 2023 开年至今,互联网上最热的话题没有之一。从去年的 AI 图片生成,到 ChatGPT,再到现在各种基于大模型的应用如雨后春笋般出现……在人们探讨技术无限可能的同时,另一个更深刻的命题也不可回避地浮现出来&#xf…

汽摩仪表快检盒

不怕失业 ​ ​最近大火的ChatGPT说要取代程序员,老婆子惊慌失措,跟着糟老头憋屈,咸鱼想靠软件翻身,这下白瞎了。 ​温州寄来了汽车燃油预热控制板,绍兴又寄来了发动机仪表,昆山的尾门在路上,都…

如何成为java架构师?2023版Java架构师学习路线总结完成,真实系统有效,一切尽在其中

导读 从初级Java工程师成长为Java架构师,你需要走很长的路,很多有计划的人在学习之初就在做准备。你知道Java架构师学习路线该怎么走吗?成为一个优秀的Java架构师究竟需要学什么?接下来就跟小编一起揭晓答案。 架构师是一个充满挑战的职业&#xff0…

Python自定义模块

到目前为止,读者已经掌握了导入 Python 标准库并使用其成员(主要是函数)的方法,接下来要解决的问题是,怎样自定义一个模块呢?Python 模块就是 Python 程序,换句话说,只要是 Python 程…

Swagger自动生成api文档

Swagger自动生成api文档Swagger是什么Swagger底层原理使用方式1修改pom文件2启动类中加入注解EnableSwagger23加入SpringFoxConfig.java4加入WebMvcConfig.java文件5 给Web 服务的接口加注解访问可视化页面Swagger是什么 Swagger 是一个规范和完整的框架,用于生成、…

C经典小游戏之扫雷

编译环境:VS022 目录 1.算法思路 2.代码模块 2.1 game.h 2.2 game.cpp 2.3 test.cpp 3.重点分析 4.金句省身 1.算法思路 主要采用二维数组进行实现,设置两个二维数组,一个打印结果,即为游戏界面显示的效果,一个用…

值类型和引用类型

一、值类型和引用类型示例: 值类型:基本数据类型系列,如:int,float,bool,string,数组和结构体等。 引用类型:如:指针,slice切片,map&a…

windows wireshark抓到未加入组的组播消息

现象 在Windows上开启wireshark,抓到了大量地址为239.255.255.251的组播包。 同时,根据组播相关命令,调用netsh interface ipv4 show joins,显示当前并没加入 239.255.255.251 组播组。 解决 根据IGMP Snooping,I…

《机器学习》学习笔记

第 2 章 模型评估与选择 2.1 经验误差与过拟合 精度:精度1-错误率。如果在 mmm 个样本中有 aaa 个样本分类错误,则错误率 Ea/mEa/mEa/m,精度 1−a/m1-a/m1−a/m。误差:一般我们把学习器的实际预测输出与样本的真实输出之间的差…

MySQL---单表查询、多表查询

一、单表查询 素材: 表名:worker-- 表中字段均为中文,比如 部门号 工资 职工号 参加工作 等 CREATE TABLE worker ( 部门号 int(11) NOT NULL, 职工号 int(11) NOT NULL, 工作时间 date NOT NULL, 工资 float(8,2) NOT NULL, 政治面貌 v…

STM32驱动RC522

STM32驱动RC522开发环境:STM32CUBEMXKeil5使用平台:STM32F401CCU6该内容由网上内容改编,若不合适,请联系删除。一、使用STM32CUBEMX配置SPI二、驱动部分三、主函数调用四、移值攻略开发环境:STM32CUBEMXKeil5 使用平台&#xff1…

力扣:珠玑妙算(详解)

前言:内容包括四大模块:题目,代码实现,大致思路,代码解读 题目: 珠玑妙算游戏(the game of master mind)的玩法如下。 计算机有4个槽,每个槽放一个球,颜色可…

电力系统网架规划MATLAB程序分享

网架数据展示:完整程序:close all;clear all;clc;warning off; % 去除警告 tic; % tic用来保存当前时间,而后使用toc来记录程序完成时间%% 基本参数T12; % 典型日 8-19h % 8-19h 负荷各时段负荷总量total_P_LOAD[828,1001,1105,1105,994,1105…

STM32CubeMX+SPI+FATFS读写SD卡

一、软件硬件说明软件:STM32CubeMX V6.6.1 /KEIL5 V5.29硬件:正点原子mini开发板,SD卡,通过SPI方式驱动SD卡,用的是SPI1接口以上内容来源于正点原子mini开发板手册,SD卡的详细介绍也可以去查阅这个手册。二、STM32Cube…

Ethercat系列(3)TWCat3下抓包实例分析

简介研究Ethercat协议,必须知道数据包格式,以及其真实含义。以一个真实的数据包来学习是最有效的。Twcat3下用wireshark抓包,需要设置一下混杂模式,否则不能直接抓到Ethercat数据包。Twcat抓包设置在正确加载驱动器配置文件后&…

可深度二次开发的智能插座 工业化物联网多场景的高定系统服务商

物联网时代,各类物联网需求越来越迫切。物联网设备呈现出爆发式增长。同时近年来国家不断出台相关的法规政策,为物联网行业发展创造机遇,三大运营商积极部署NB-IOT网络建设,建成90万NB-IoT基站。据统计2012-2022年期间&#xff0c…

缺省参数+函数重载+构造函数

目录 一、缺省参数 (一)缺省参数概念 (二)缺省参数分类 1. 全缺省参数 2. 半缺省参数(缺省部分参数) 3. 注意 二、函数重载 (一)基本概念 (二)举例 …

“算丰AI视界”人工智能技术内容征集活动正式开启!

2023年2月8日,首届“算丰AI视界”人工智能技术内容征集活动正式拉开帷幕!本次活动主要征集AI、CV、TPU-MLIR、RISC-V等方向的代表性视频和文章,面向国内外的企业、高校和科研院所的优秀开发者。 活动紧扣人工智能行业相关AI视觉技术&#xff…