先看证据

A/B中单模型替换15+召回器、预排与排序关键事实
实验持续7天,Sona与control各覆盖15%随机用户关键事实
活跃用户相对control提升4.53%关键事实
总收听时长相对control提升6.30%关键事实
点赞相对control提升11.42%关键事实
Repeat指令相对control提升17.99%关键事实

被合并的不是所有决策,而是用户状态

Yandex 在 Sona 技术报告中提出了一套生成式音乐推荐系统,面向 Yandex Music 智能音箱上的 My Vibe 场景:用户不必先选歌手、流派或心情,系统就可以开始播放。Sona 在一项线上实验中替换了旧链路的 15 个以上候选生成器,以及后续的预排序和排序阶段。它针对的是传统推荐级联中“先找候选、再逐层筛选”的多阶段决策方式。

这项变化值得技术负责人细读,因为它不是把一条流水线简单改名为“一个模型”,而是试图让找歌与决定先播哪首歌使用同一份用户历史表示。级联里,各阶段往往各自优化目标,精排器只能处理上游放进候选集的歌曲,遗漏无法在后续补回。Sona 把生成和排序放进共享上下文,试图减少阶段之间的目标错位,但它仍然生成候选,也仍然对候选打分。

歌曲先要变成可生成的离散表示

Sona 不能直接对庞大的曲库逐首生成自然语言描述,再把描述当作推荐结果。它先把每首歌映射为三个 Semantic ID,构成模型可以自回归生成的离散代码。报告描述的处理路径是:冻结的多模态模型读取歌曲前 90 秒音频,以及标题、艺人和标签信息;一个精炼模型再用协同听歌数据校准表示,最后通过残差 K-means 量化成三个码本,每个码本有 32,000 个代码。

这组代码不是最终的推荐判断,而是把曲库转成可搜索、可生成的候选空间。报告中,Semantic ID 表示的 Recall@1000 为 0.8524,高于音频基线 CLMR 的 0.8111。这个结果支持的是歌曲表示有助于候选召回,并不单独证明线上体验会变好。代码化也带来覆盖边界:如果曲目没有合适的表示或无法被有效召回,后续排序模块就没有机会把它排上去。

共享历史之后,候选生成与排序仍是两步

在线请求首先由编码器读取用户的交互历史,最长可达 8,192 条事件。计算并没有平均分给每条历史:最近的 2,048 条经过较深的自注意力处理,较早记录走较轻的交叉注意力路径,随后还有一层处理全历史的结构。报告称,这种历史压缩以大约一半的推理成本保留了全历史注意力的大部分效果。它体现的是一个明确取舍:更长的历史仍可进入模型,但近期行为获得更多计算预算。

接下来,两层解码器通过 beam search 生成 Semantic ID,搜索宽度为 1,024;目录 Trie 用来阻止无效代码前缀。生成的代码再映射回曲目,由包含四层交叉注意力的 Ranking Module 对歌曲打分。因而,“单一生成式推荐器”并不意味着线上只有一个不分职责的计算块。更准确的说法是,编码器、解码器和排序模块组成同一套服务链路,并共享编码器产生的用户状态。

教师留在训练期,线上仍有更新时延

Sona 的排序能力并不是靠取消教师模型获得的。训练时,一个 0.6B 参数的 Teacher Ranker 为解码器生成的候选和日志中的曝光曲目打分,Sona 的 Ranking Module 学习这些分数;教师本身不进入线上推理。训练目标还包括下一首歌曲预测、生成候选上的 rollout 蒸馏和曝光样本学习,多个目标共同更新共享编码器。消融结果显示,去掉教师预训练后,加权 pair accuracy 从 0.6215 降到 0.6153,说明教师提供的监督在这套训练方案中并非可有可无。

训练期与服务期的分离降低了线上对教师模型的依赖,却没有让系统变成即时适应用户的黑箱。事件先按 15 分钟窗口聚合成会话,再进入 GPU 训练;新权重每 10 分钟送往服务端。报告给出的端到端更新延迟中位数是 45 分钟,p99 是 60 分钟。对于会快速变化的用户意图,这意味着新行为不会马上反映到推荐中;对于运营团队,这也要求把模型刷新节奏和反馈延迟纳入系统设计,而不能只看单次推理耗时。

短期增益成立,覆盖率与外推仍待验证

最终在线实验持续 7 天,测试对象是智能音箱上的 My Vibe,而不是 Yandex Music 的所有推荐入口。论文称,control 和 Sona 两个分组各包含随机抽取用户的 15%。相对同期生产 control,Sona 的活跃用户增加 4.53%,总收听时长增加 6.30%,点赞增加 11.42%,Repeat 指令增加 17.99%,深度参与用户增加 7.37%,这些结果均被报告为具有统计显著性。它们构成了对这套系统组合设计的线上证据,但并没有把各个组件的贡献分别拆开。

应用范围和覆盖率是这组数字必须一起阅读的部分。My Vibe 是用户没有明确指定内容、系统直接开始播放的被动消费场景,播放、跳过、点赞和重复收听在这里有特定含义,不能直接代表搜索或其他推荐入口。Yandex 还披露 Sona 的曲库覆盖率低于旧生产系统,但没有提供差值或原因,也说明系统尚未全量部署,需要继续实验并验证其他场景。对已有级联的团队,可执行的判断不是立刻合并全部阶段,而是在相近的被动消费场景做小流量验证,把曲库覆盖率设为护栏,并同时检查互动提升是否以长尾内容损失为代价。