Yandex Music A/B测试:单一模型取代推荐流水线
Yandex Music 的工程师发了一篇论文,把生产推荐系统里那套由十几块拼起来的流水线换成一个模型。它叫 Sona。在智能音箱的 A/B 测试里,它取代了所有旧组件,效果还更好。
旧系统有 15 个以上的候选生成器,各自产出候选歌曲,喂给预排序和排序模型,搭配几百个特征,才能决定下一首。Sona 不用这套:它一次读最多 8192 个用户历史事件,直接生成推荐。
读八千条历史最怕慢。Sona 把历史切成两块,较早的 6144 个事件和最近的 2048 个事件。两个块先做一次信息交换,之后 7 层只处理最近的 2048 个,推理成本因此大约减半,同时保留全注意力的大部分质量。较早事件对解码器、排序模块仍然可见。解码器和排序模块读同一个编码器输出,每个请求编码器只需跑一次。候选从束搜索里带着语义 ID 出来,立刻打分,不用再挂独立排序器。
智能音箱上的最终 A/B 测试跑 7 天,每组 15% 用户。Sona 相比生产对照组,活跃用户数提高 4.53%,总收听时长提高 6.30%,两项都显著(p<0.01)。
代价是目录覆盖率。也就是说,它推荐的歌曲范围比旧系统窄,爱在推荐里挖新歌的人可能觉得新面孔变少。团队说要查这个问题的原因。
Sona 还没全量上线,长期测试正在进行。论文没提手机端怎么做,也没说历史超过 8192 个事件后如何取舍。如果长期测试也能保持这个幅度,用单一模型替掉整套推荐流水线这件事,后续影响的可能就不只是 Yandex 一家。