关于算法落地常见流程记录
背景
我做了一个大模型相关的项目,但是很不正规,正常开发完后其实是需要单元测试,测试人员测试。然后测试服上线,最后正式服上线。
但是这个大模型的相关项目,测试流程很不完整,基本是在乱来。
- 没有严格的测试流程,导致有一些bug。(比如代码覆盖率不到100%)
- 没有AB实验,那么改了方案,准确率有没有提升也不知道。方案的好坏也无从得知(我自己是靠case去反复修的)
后端开发的测试上线流程
- 单元测试:测试某个模块功能是否正常
- 集成测试:测试不同模块之间的协调是否正常
- 功能测试:业务是否满足要求
- 性能测试
- 用户验收测试
- 部署(灰度上线)
- 持续监控告警
算法开发上线流程
- 数据手机与处理
- 模型研发
- 离线测试,(测试集验证集)
- 在线A/B测试: 上线前常进行A/B测试,比较新老算法在真实用户数据下的表现差异,确定新算法是否优于旧算法。
- 持续监控告警
AB实验
从问题到解决方案上来认识 ab 实验
1、人群做不到绝对的均匀,只能通过 HASH 算法,结合一定的流量来解决。
2、通过 AA 实验,来提前确定人群素质的不均匀。最终的实验数据结合 AA 实验数据来确定最终效果。
3、设计出正交垂直域,正交阈内多个层,每个层内放可能相互影响的实验,层内互斥,层间正交,保留垂直域,为要求精准的实验留出流量,来解决实验间相互影响的问题。
一个CASE
A/B 实验流程大致如下:
1. 实验环境准备
- Dev 流水线自动测试:每次代码提交(commit)都会自动触发测试,确保基本功能和逻辑的正确性。在代码合并(merge)时,也会触发自动测试,保证代码的整体质量。
2. A/B 实验的平台配置
-
大盘流量分层:ks的 A/B 实验平台会将用户流量进行“世界分层”,确保实验策略在较小的流量范围内先行测试。例如,某个实验策略会在最低层级的分层中生效,流量通常控制在 5%-10% 之间,确保风险可控。
-
实验组与对照组:实验组和对照组的用户分流会在平台建立分层时进行重分配,以保证每个组的用户流量和基础特征(如活跃度、行为特征等)相对一致,从而能够有效地比较实验效果。
3. 实验流程
-
AA 实验:在策略上线前进行 AA 实验。通过对比实验组和对照组的指标,确保在不施加策略的情况下,两个组的表现没有显著差异。这样可以确认分组过程没有偏差。
-
AB 实验:在策略上线后,实验组开始应用新策略,对比实验组和对照组的差异来评估策略的效果。
4. 实验分析
-
双重差分:A/B 实验结果使用双重差分(Difference-in-Differences)方法来评估策略的生效情况。这个方法可以排除实验前后其他变量对结果的干扰,提供更准确的效果评估。
-
置信度和 P 值:实验平台会自动计算置信度()和 P 值,以确定结果是否具有统计学上的显著性。开发人员和实验执行者只需要观察这些指标即可。
- P 值表示实验结果是偶然出现的概率。它衡量了实验组与对照组之间差异的显著性。如果P值很小,说明实验组和对照组之间的差异不太可能是由随机因素引起的。
- 置信度表示我们对实验结果有多大的把握
- P 值 = 1 - 置信度。
5. 指标观测
- 作为开发者或实验执行者,主要的任务是观测实验指标,比如点击率、留存率、转化率等。实验平台会自动计算和展示相关的统计结果。
总结:
- 标准化测试流程:自动化的 dev 流水线测试,确保代码质量。
- 分流机制:平台进行世界分层,控制实验流量比例,并保证实验组与对照组的流量一致性。
- 双重差分与置信度:利用双重差分评估策略效果,平台自动提供统计分析。