解锁产品迭代新速度:A/B测试在AI大模型时代的应用

本文作者为火山引擎A/B测试平台DataTester的资深研发工程师刘明瑶。作为火山引擎数智平台VeDI旗下的核心产品,DataTester源于字节跳动长期的技术和业务沉淀,目前已经服务了数百家企业,助力企业在业务增长、用户转化、产品迭代、策略优化以及运营提效等环节科学决策。在大模型时代,当A/B测试应用在AI场景中,“让每一个决策更加正确”的显性效果也会被指数级放大。

大模型时代,效率和质量我都要

从去年的ChatGPT,到今年的Sora,国内对于大模型的讨论居高不下,月之暗面、智谱AI、百川智能等国内AI创业公司也正迅速成长为大模型领域的独角兽。为了在这场竞争中脱颖而出,这些大模型公司必须采取快速迭代的策略,以确保他们的产品和服务能够迅速响应市场变化和用户需求。这意味着从模型设计到部署的每一个环节都需要高效且灵活,以便能够及时捕捉并利用新兴的市场机遇。

而对于大多数企业来说,如果要想在激烈的市场竞争中保持领先地位,就需要迅速适应这一变革,利用AI来赋能产品。在追求敏捷开发的同时,保证产品能力和用户体验提升则是更重要的指标。为了实现快速迭代与优化的有机结合,A/B测试成为了一种不可或缺的工具。通过A/B测试,我们能够在实际用户环境中并行测试多个优化版本,精确衡量每个版本对用户体验和业务指标的影响。

A/B测试: 助力产品上线更快

如果我们想在当前的人工智能浪潮中迅速把握先机并吸引用户,就需要产品经理精心设计功能,以及研发团队高效地开发和上线产品,并通过优化产品开发流程来确保在这场技术变革中保持领先地位。落实到具体的场景,可以通过如下方式来更快地发布产品:

  1. 更快地上线:涉及大模型相关的产品,往往涉及一系列错综复杂的提示和规则判断。在有限的测试环境中,我们很难捕捉到对单个部分进行调整后的具体影响,正因如此,在真实的生产环境中进行测试显得尤为重要。通过灰度发布只对线上部分用户开放,拿到真实的用户使用数据,能帮助我们更全面地理解这些调整如何影响产品的实际操作和用户体验。如果测试结果符合预期,可以进一步扩大测试范围并发布。

  2. 更快地体验:在新功能准备就绪后,我们不会急于全面推出,而是先进行灰度发布。这意味着我们会在一个小范围内,比如内部员工或者经过筛选的内测用户群体中,先行推出新功能。这样,我们能够在不影响大部分用户的情况下,收集到宝贵的第一手使用反馈。这些反馈对于我们识别潜在问题、优化用户体验至关重要。一旦收集到足够的数据并进行了必要的调整,我们就会将功能全面上线,确保所有用户都能享受到最佳的体验。

  3. 更快地回滚:在产品上线的过程中,如果遇到严重的问题,可以迅速回滚到之前的稳定版本。这不仅减少了潜在的风险,还为用户提供了持续的稳定服务。问题修复后,再次快速修复和上线。这种快速响应和闭环迭代的方法,能够持续改进产品,确保我们始终走在市场的前沿。

最新特性快速发布

案例场景:某公司在做一个问答App,为了优化问答效果,下游算法团队准备升级新模型,但是测试环境不太方便验证,想要直接在线上环境验证效果。

对于这个案例场景,火山引擎A/B测试平台就可以支持通过创建一个 Feature 来实现。

  • 设置变体

假设目前线上模型为火山引擎豆包模型 Skylark2-pro-4k ,我们计划将模型升级为 Skylark2-pro-32k 来提升产品效果,为此可在 DataTester Feature 中创建如下两个变体,根据获得的变体内容选择使用相应的模型。

  • 设置发布受众

为了防止影响线上用户,在 Feature 中可以通过添加过滤规则来限制体验 Skylark2-pro-32k 模型的用户,其余用户则继续使用原有模型。

通过上述步骤创建 Feature 并发布,我们能够确保仅针对特定的测试用户ID启用升级后的新版模型,并直接在生产环境中对新模型进行效果测试,而不会对现有用户产生任何负面影响。在测试阶段,如果新版模型的表现达到预期,我们无需进行代码修改或发布新版本,仅需调整 Feature 的的发布受众规则,逐步扩大新模型的覆盖范围,最终实现对所有用户的全面部署。这一策略不仅加速了产品的迭代周期,还确保了产品质量和用户体验的持续优化。

优化效果快速验证

案例场景:某公司发布了一款文生图的App,经过模型的迭代,具有了文生视频的能力,内部测试反馈不错。但是由于测试人员数量有限,以及 case 无法覆盖到更多的场景,考虑通过发送短信或者站内信的方式,将该能力灰度给一部分粘性较高用户,在获得这部分真实用户的一手反馈信息后,再决定优化或者发布给所有用户。

为了实现这个功能,我们在 DataTester 中可以将这部分用户ID筛选出来后创建一个人群包,然后基于人群包创建 Feature 完成灰度发布。

  • 设置变体

在 Feature 中,我们使用布尔值(Boolean)类型的变体来控制是否向用户展示“文生视频”功能。客户端在接收到这一配置的变体结果后,可以根据结果决定是否向用户展示该功能入口。

  • 设置发布受众

对于“体验群体”,我们将功能发布的范围设定为变体一,确保他们能够顺利访问新功能入口。相对地,对于那些未被列入体验群体的用户,新功能页面将不会被展示,从而保证了功能的逐步和有选择性的推出。

  • 更新 Feature

在内测阶段,一旦产品根据用户反馈进行了优化并获得积极评价,我们可以迅速将其推广至所有用户。通过简单地修改Feature 并发布,而非重新编写代码或打包更新,我们可以显著缩短服务升级和部署的时间。这种方法不仅提高了效率,还通过可视化的配置管理降低了操作失误的风险。

A/B测试:助力产品质量更高

如今,大多数互联网产品野蛮生长的时代已经过去,人口红利到顶,产品策略需要从快糙猛的跑马圈地方式转向深耕细作精细化运营方式,要精细化运营,就需要采用数据来驱动,而在大模型时代,数据驱动就显得愈发重要。如下图所示,调用大模型时需要调整很多参数,而如何确定最优值往往是个很困难的事情。

线下调参存在局限

在当前,很多产品在进行大模型接入时仍依赖于传统的线下方法。这一过程通常包括:尝试多种Prompt、Model、Embedding 和输入参数的组合,直至找到符合其应用场景的最优配置。随后,通过一个手动评分流程,选定最终将投入生产的配置。具体步骤如下:

  1. 构造一系列输入样本;

  2. 利用测试脚本,将这些输入发送给大模型,得到相应的输出;

  3. 制定一套评分标准,用以评估输出结果(通常基于人工设定的参考标准);

  4. 根据这些标准对测试结果进行评估;

  5. 引入新的配置,并重复上述步骤以进一步优化

这种方法本身并没有问题,实际上,这是选择向最终用户展示应用程序初始版本的最好方式。然而,这种方法存在巨大的局限性:

  • 测试输入的范围受限于工程师的想象,这与用户实际可能产生的输入存在差距;

  • 所采用的评分标准往往与对产品整体性能的实际影响不成正比;

  • 无法全面覆盖所有可能的变量组合,例如未能测试所有 Prompt、Embedding与 Model 的每一种组合;

  • 无法捕捉到每种配置对与输出质量无关的因素的影响,例如成本、延迟等;

线上调参更显明智

为了打破这一僵局,我们可以通过在线上环境中取一部分流量进行A/B测试,或者针对特定用户群体开展实验,收集真实用户的反馈。这些数据将帮助我们评估不同参数设置对系统性能的具体影响,包括输出质量、系统延迟、运营成本、用户满意度以及用户留存率等多个关键指标。这种方法能够为我们提供更为精确和全面的洞察,从而指导我们做出更加明智的决策。

为了实现上述目标,我们可以在 DataTester 中创建一个30天、10%的线上流量的实验,用于验证 Skylark2-pro-4k 和 Skylark2-pro-32k 模型对系统的影响。为了将影响量化,我们设置了一些评价指标,如点赞数、点踩数、对话轮次、响应时长等。在实验结束后,可以通过查看实验报告,根据对照组或者实验组优胜情况决定使用哪个模型。

如果有多种参数都需要验证,每个参数如果都设置 30%流量,10个就需要 300%的流量,是不是就无法支持了呢?为了解决这个问题,DataTester 研发了流量分层技术——“实验层”。

实验层把总体流量“复制”无数遍,形成无数个流量层,让总体流量可以被无数次复用,从而提高实验效率。各层之间的流量是正交的,你可以简单理解为:在流量层选择正确的前提下,流量经过科学的分配,可以保证各实验的结果不会受到其他层实验的干扰。

通过精心设计的A/B测试,我们得以精确地确定了各项参数的最优设定,确保了效果提升的最大化。这种方法的优势在于其高效的实验流程,它允许我们基于数据科学的对比和评估不同的参数组合,从而快速锁定那些能够显著提升产品表现的关键因素。此外,A/B测试的结果为我们提供了有力的数据支持,使我们能够确信所采取的优化措施对产品有着积极的、显著的正面影响。

A/B测试:助力产品竞争力更强

赋能各类需求场景

A/B实验支持App、小程序、Web页面等多端,可视化实验、广告实验、推送实验等场景也可以满足企业各类需求。 通过A/B实验的实施,我们可以迅速地将先进的大模型技术整合到产品的各类场景中,这一举措极大地提升了产品的智能化水平,同时也显著改善了用户的互动体验,进一步探索出了更多的应用场景,给用户提供了更多的玩法。这种机制使我们能够持续地对产品进行精细化调整,确保每一次迭代都能在业务指标上取得实质性的进步。在这个快速变化的行业中,A/B测试赋予了我们不断前行的勇气和信心。它让我们坚信,只要我们基于数据做出决策,就敢于进行必要的改变和创新。

智能优化实验策略

A/B实验支持智能优化,帮助产品低成本最大化收益,你只需要列出所有的实验策略,A/B 系统会实时帮助你关注不同实验策略的优化目标变化,并根据各策略的实际表现,动态地对流量进行分配,最终帮你在实验场景流量较少的情况下,找到优化目标最优的实验策略,同时获取最最大化的实验收益。这就逐渐形成了一个正向循环,提升产品能力 ->接入大模型 -> 最大化产品收益 -> 提升产品能力。

正如学习过程中不断积累知识一样,产品开发也是一个不断进步的过程。在这个过程中,我们必须不断前进,因为停滞不前就意味着退步。A/B测试为我们提供了一个科学的实验平台,让我们能够在不断尝试中学习和成长,从而在激烈的市场竞争中保持领先地位。它不仅帮助我们从探索者的角色转变为行业的领导者,更让我们在这场技术革命中,从跟随者变成了引领潮流的先锋。这种以数据为核心的测试方法,是我们在产品发展道路上不断突破自我、追求卓越的坚实基石。

总结

A/B实验给了我们“变”的底气,赋予了我们”变“的信心。这种以数据为核心的实验方法,是我们在产品发展道路上不断优化和创新的关键。它基于数据驱动的原则,引导我们进行精细化的运营。在这个过程中,我们持续地突破极限、创新思维、提升品质。正确且有效地运用A/B测试,能够使产品变的 “更快“、”更高、“更强”,在大模型时代助力产品勇立潮头!

点击跳转火山引擎A/B测试了解更多

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习之Tensorflow卷积神经网络手势识别

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 手势识别是计算机视觉和人工智能领域的重要应用之一,具有广泛的应用前景&#xff…

抖音视频怎么去水印保存部分源码|短视频爬虫提取收集下载工具

抖音视频怎么去水印保存部分源码|短视频爬虫提取收集下载工具 抖音视频去水印保存部分源码: 通过使用Python中的requests、re和os等库,可以编写如下代码来实现抖音视频去水印保存的功能。 短视频爬虫提取手机下载工具的使用方法: 该工具主…

【Linux学习】进程地址空间与写时拷贝

文章目录 Linux进程内存布局图&#xff1a;内存布局的验证 进程地址空间写时拷贝 Linux进程内存布局图&#xff1a; 地址空间的范围&#xff0c;在32位机器上是2^32比特位,也就是[0,4G]。 内存布局的验证 代码验证内存布局&#xff1a; 验证代码&#xff1a; #include<s…

基于FPGA的VGA协议实现----条纹-文字-图片

基于FPGA的VGA协议实现----条纹-文字-图片 引言&#xff1a; ​ 随着数字电子技术的飞速发展&#xff0c;现场可编程门阵列&#xff08;FPGA&#xff09;因其高度的灵活性和并行处理能力&#xff0c;在数字系统设计中扮演着越来越重要的角色。FPGA能够实现复杂的数字逻辑&#…

字节面试:百亿级数据存储,怎么设计?只是分库分表吗?

尼恩&#xff1a;百亿级数据存储架构起源 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;经常性的指导小伙伴们改造简历。 经过尼恩的改造之后&#xff0c;很多小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试机会&#xff0c…

基于Tensorflow卷积神经网络垃圾智能分类系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 随着城市化进程的加速&#xff0c;垃圾问题日益严重&#xff0c;垃圾分类成为解决这一问题的关…

(全面)Nginx格式化插件,Nginx生产工具,Nginx常用命令

目录 &#x1f3ab; 前言 &#x1f389; 开篇福利 &#x1f381; 开篇福利 x2 Double happiness # 介绍 # 地址 # 下载 &#x1f4bb; 命令及解析 # 整个文件系统中搜索名为nginx.conf的文件 # 编辑nginx.conf文件 # 重新加载配置文件 # 快速查找nginx.conf文件并使…

Android和flutter交互,maven库的形式导入aar包

记录遇到的问题&#xff0c;在网上找了很多资料&#xff0c;都是太泛泛了&#xff0c;使用后&#xff0c;还不能生效&#xff0c;缺少详细的说明&#xff0c;或者关键代码缺失&#xff0c;我遇到的问题用红色的标注了 导入aar包有两种模式 1.比较繁琐的&#xff0c;手动将aar…

Linux应用入门(二)

1. 输入系统应用编程 1.1 输入系统介绍 常见的输入设备有键盘、鼠标、遥控杆、书写板、触摸屏等。用户经过这些输入设备与Linux系统进行数据交换。这些设备种类繁多&#xff0c;如何去统一它们的接口&#xff0c;Linux为了统一管理这些输入设备实现了一套能兼容所有输入设备的…

【真人Q版手办风】线稿手绘+ AI绘图 Stable Diffusion 完整制作过程分享

大家好&#xff0c;我是设计师阿威。 今天给大家分享一篇【真人Q版卡通手办】风格的制作过程&#xff0c;话不多说&#xff0c;进入正题。 成品预览 手绘线稿 首先&#xff0c;我使用的是老款手绘软件【SAI】&#xff0c;用[钢笔工具]进行了人物的线稿Q版描绘。&#x1f447…

最大负载1kg!高度模块化设计!大象机器人智能遥控操作机械臂组合myArm MC

引入 近年来&#xff0c;市面上涌现了许多类似于斯坦福大学的 Alopha 机器人项目&#xff0c;这些项目主要通过模仿人类的运动轨迹来进行学习&#xff0c;实现了仿人类的人工智能。Alopha 机器人通过先进的算法和传感技术&#xff0c;能够精确复制人类的动作&#xff0c;并从中…

二、使用Django创建一个基础应用

职位管理系统 - 建模 职位名称类别工作地点职位职责职位要求发布人发布日期修改日期 安装django pip install django5.0查看django版本 python -m django --version创建项目 django-admin startproject recruitment启动服务 python manage.py runserver 0.0.0.0:8000创建…

数据库|基于T-SQL创建数据库

哈喽&#xff0c;你好啊&#xff0c;我是雷工&#xff01; SQL Server用于操作数据库的编程语言为Transaction-SQL,简称T-SQL。 本节学习基于T-SQL创建数据库。以下为学习笔记。 01 打开新建查询 首先连接上数据库&#xff0c;点击【新建查询】打开新建查询窗口&#xff0c; …

Vue3:封装Table 表格组件

组件官网 elementPlus : 点击跳转 封装组件 创建新的组件文件: Table.vue <!-- PropTableS &#xff1a; 父组件传递过来的数据 (对象)PropTableS.tables : 父组件传递的对象中 存放表格每行显示的数据PropTableS.keyS &#xff1a; 父组件传递过来的对象&#xff0c;里…

java集合类详解

目录 1、数组导入&#xff1a; 2、单列集合 List接口 1、ArrayList&#xff1a;数组列表 ArrayList类中的方法 2、LinkedList&#xff1a;链表列表 3、Vector&#xff1a;数组列表 4、list集合的遍历 1、for循环遍历 2、增强for循环 3、迭代器遍历 Set接口 1、Has…

React渲染流程

在 React 渲染分为两个阶段&#xff0c;Render 和 Commit&#xff0c;Render 是修改 React 组件的状态&#xff0c;把需要更新的组件标记为待更新&#xff0c;在 Commit 阶段将待更新的组件进行渲染并最终更新到浏览器的 Dom 树中。 Render 阶段是可以并执行操作的&#xff0c…

vue3项目+TypeScript前端项目 ———— elemnet-plus,svg图标配置,sass,mock数据

一.集成element-plus 官网地址 安装 pnpm install element-plus 引入 // main.ts import { createApp } from vue import ElementPlus from element-plus import element-plus/dist/index.css import App from ./App.vueconst app createApp(App)app.use(ElementPlus) app.…

JAVA基础面试题(第十三篇)线程并发死锁等!

线程死锁并发 1. 线程和进程有什么区别&#xff1f; 线程具有许多传统进程所具有的特征&#xff0c;故又称为轻型进程(Light—Weight Process)或进程元&#xff1b;而把传统的进程称为重型进程(Heavy—Weight Process)&#xff0c;它相当于只有一个线程的任务。在引入了线程的…

JetLinks物联网平台初步使用——TCP接入

基于上一篇&#xff0c;完整的搭建了前后端整个系统&#xff0c;可以在windows 7完美的运行使用。 目录 1、创建网络组件 2、创建协议管理 3、创建网关 ​4、创建产品 ​5、创建设备 6、模拟对接 1、创建网络组件 进入平台后&#xff08;用户名密码都是admin&#xff…

GRPC服务使用

目标&#xff1a; 1.什么是GRPC服务&#xff1f; 2.安卓客户端怎么不熟GRPC服务&#xff1f; 3.怎么生成GRPC的java类&#xff1f; 一、什么是GRPC服务&#xff1f; GRPC 一开始由 google 开发&#xff0c;是一款语言中立、平台中立、开源的远程过程调用(RPC)系统。 支持长…