OneRec 是快手于 2025 年发布的工业级端到端生成式推荐系统, 首次在 4 亿 DAU 量级的短视频推荐场景中,以单一生成模型完整替代了传统的 多阶段瀑布流推荐系统(Cascade Pipeline),并在在线 A/B 实验中实现了 显著的业务指标提升,同时将系统 OPEX 压缩到传统架构的 10.6%。
传统多阶段系统的瓶颈
传统推荐管道存在三大核心问题,这些问题在工业实践中普遍存在、难以根治:
OneRec 的解法
OneRec 的核心思路是:将推荐问题重新表述为条件序列生成问题。 给定用户的历史行为上下文 $u$,模型直接自回归地生成一组推荐视频的语义标识符序列, 而无需经过任何预设的候选集过滤流程。
OneRec 范式: $p(v_1, v_2, \ldots, v_K \mid u) = \prod_{t=1}^{K} p(s_t^1, s_t^2, \ldots, s_t^{L_t} \mid u, v_1, \ldots, v_{t-1})$
其中 $(s_t^1, s_t^2, \ldots, s_t^{L_t})$ 是第 $t$ 个推荐视频 $v_t$ 的 语义标识符(Semantic IDs),由 Tokenizer 预先生成,$L_t=3$(三层粗到细分级编码)。
整个模型由三大模块构成:
OneRec 的技术贡献可以从五个维度概括,每个维度都有明确的工程创新和实验验证:
在生成式推荐系统中,模型需要"说出"具体的视频 ID,就像语言模型生成词语一样。 但视频 ID 本身是无意义的数字,无法携带语义信息,也无法在十亿级物品空间中高效生成。 为此,OneRec 设计了一个独立的 Tokenizer 模块,将每个视频映射为 粗到细的语义标识符(Coarse-to-Fine Semantic IDs), 赋予视频可被语言模型理解和生成的"词汇"表示。
为什么不能直接用原始 ID?
- Softmax 层参数量和计算量爆炸
- 新上传视频(冷启动)在训练中从未见过,完全无法生成
- 相似视频之间没有共享知识,泛化能力极差
RQ-Kmeans:残差量化 K-Means
OneRec 的 Tokenizer 使用残差量化 K-Means(RQ-Kmeans), 这是对 RQ-VAE(常见于 TIGER 等方案)的改进,放弃了神经网络解码器, 采用更轻量、更稳定的 K-Means 聚类方案进行多层量化。
整体流程
QFormer 压缩的数学形式
其中 $Q^{(0)}$ 为可学习的查询向量矩阵($\tilde{N}_M \times d_t$), $M \in \mathbb{R}^{N_M \times d_t}$ 为 miniCPM-V-8B 提取的原始多模态 token。 每层 Cross-Attention 将 1280 个 token 的信息聚合到 4 个 Query 中。
残差量化过程
视频 $m$ 的最终 Semantic ID 为三元组 $(s_1^m, s_2^m, s_3^m)$, 其中 $s_l^m \in \{0, 1, \ldots, N_t - 1\}$,$N_t = 8192$。 $\mathbf{c}_k^{(l)}$ 是第 $l$ 层码本(codebook)的第 $k$ 个聚类中心。
多模态特征融合
miniCPM-V-8B 是快手团队选用的多模态基础模型,能够同时理解视频的:
| 模态 | 信息来源 | 作用 |
|---|---|---|
| 视觉帧 | 视频关键帧截图 | 捕捉视频的视觉风格、场景类型、人物形象 |
| 文本描述 | 视频标题、描述、字幕 | 理解视频的主题、语义内容、关键词 |
| 标签信息 | 视频类别标签、话题标签 | 提供高层语义分类信号 |
QFormer 在压缩时使用 Caption 辅助训练: 每个视频配有一段自然语言描述(caption), QFormer 训练目标除了最小化重建误差外,还需要从压缩表示中还原 caption 文本, 这一多任务目标使 QFormer 学会保留对描述视频内容最关键的语义信息。
论文只有两个训练目标,均作用于 QFormer,均可微、可梯度反传:
$\mathcal{L}_{I2I}$:物品对比损失,直接作用在 QFormer 输出 $\tilde{M}$(4 个 token)上,
让行为相似的视频对在 QFormer 输出空间互相靠近;
$\mathcal{L}_{\text{caption\_gen}}$:以 $\tilde{M}$ 为 KV、LLaMA3 为 decoder 的 caption next-token prediction 损失,
防止 QFormer 压缩时丢失内容语义。
RQ-Kmeans 量化是独立的离线 K-Means EM 迭代,不涉及可微 loss,不反传梯度到 QFormer。
QFormer 训练收敛后固定,对全量视频的 $\mathbf{z}_m$(mean-pool $\tilde{M}$ 所得单向量)
做 K-Means 聚类更新码本中心。
协同信号注入
纯内容特征的量化存在一个关键缺陷:两个内容不同但用户行为高度相似的视频, 会被分配到完全不同的 Semantic ID,导致模型无法在训练时共享这部分行为知识。
正样本对数据集 $\mathcal{D}_{\text{pair}}$ 通过两种方式构建:
(1) User-to-Item Retrieval:对每个用户,取一个正向点击目标视频,
与其历史正向点击中协同相似度最高的视频配对;
(2) Item-to-Item Retrieval:通过 Swing 相似度等算法挖掘相似度高的视频对。
损失直接作用在 QFormer 输出 $\tilde{M} \in \mathbb{R}^{4 \times d_t}$ 上, 梯度反传更新 QFormer 参数:
$$\mathcal{L}_{I2I} = -\frac{1}{|B|} \sum_{(i,j) \in B} \log \frac{\exp(\text{sim}(\tilde{M}_i, \tilde{M}_j) / \tau)}{\sum_{(i',j') \in B} \exp(\text{sim}(\tilde{M}_i, \tilde{M}_{j'}) / \tau)}$$$\tau$ 为温度系数,$B$ 为 $\mathcal{D}_{\text{pair}}$ 的一个 mini-batch。 QFormer 被迫学习"将行为相似的视频对压缩到空间相近的 $\tilde{M}$"的压缩策略, 协同信号因此被融入 $\tilde{M}$,最终在 K-Means 量化时使相同行为模式的视频聚入同一码字。
这一设计使得行为相似的视频在量化码书中聚类到更近的码字, 从而使 Decoder 能够学到"推荐这类内容的用户也喜欢那类内容"的迁移知识, 大幅提升对长尾视频和冷启动视频的推荐质量。
Tokenizer 效果评估
论文使用三个互补指标评估 Tokenizer 质量:
| 评估指标 | 含义 | 理想值 |
|---|---|---|
| Reconstruction Loss | $\mathbf{z}_m$(QFormer mean-pool 后的单向量)与三层码本中心之和 $\sum_l \mathbf{c}^{(l)}_{s_l}$ 的 L2 距离,衡量 RQ-Kmeans 量化精度(仅用于评估对比,不反传梯度到 QFormer) | 越小越好 |
| Codebook Utilization | 码本向量被实际分配到视频的比例(死码比例) | 越高越好,避免码本空洞 |
| Token Distribution Entropy | 各码字分配的 Shannon 熵,衡量分布均匀性 | 越高越好,避免少数码字承载所有视频 |
语义 ID 案例分析
论文附录展示了 RQ-Kmeans 生成的 Semantic ID 案例, 以 $L_t = 5$(展示用)为例,相同前缀的视频具有高度语义相关性:
| 语义 ID 前缀 | 视频主题 | 层级含义 |
|---|---|---|
(2150, *, *, *, *) |
体育类内容(Sports) | 第 1 层:大类别 |
(2150, 3444, *, *, *) |
体育 → 篮球 & 足球 | 第 2 层:子类别 |
(2150, 3444, 1522, *, *) |
体育 → 篮球 & 足球 → 篮球 | 第 3 层:细粒度类别 |
前缀共享意味着同层级的视频被分配到同一码字, Decoder 在生成语义 ID 的前几个 token 时,相当于在做"类别路由", 层级越深越精确,与人类的推荐直觉完全吻合。
OneRec 的 Encoder 负责将用户的历史行为序列和静态画像, 转化为 Decoder 可以利用的高质量用户兴趣表示。 设计的核心挑战在于:用户行为序列长度跨越数量级 ——从最近的几次点击(秒级),到一周内的稳定偏好(天级), 再到数年积累的深层兴趣(年级,最长 10 万条记录)。
为此,Encoder 采用四路并行的多尺度特征工程架构, 分别对不同时间尺度的行为建模,最终拼接融合为统一的用户表示。
用户画像特征:年龄、性别、设备、地理位置等
最近 $L_s = 20$ 条行为,捕捉当前会话兴趣
最近 $L_p = 256$ 条点赞/收藏/关注行为,稳定偏好信号
最多 $L_l = 2000$ 条(从 10 万中压缩),深层历史兴趣
路径一:静态用户特征
静态特征包括用户画像信息,如用户 ID($e_{\text{uid}}$)、性别($e_{\text{gender}}$)、 年龄($e_{\text{age}}$)、设备类型等。 各字段经 Embedding 查表后拼接,再经过 Dense 变换得到静态路径表示:
路径二:短期行为序列
短期行为序列 $\{v_1, v_2, \ldots, v_{L_s}\}$($L_s = 20$) 包含用户最近的观看、点击行为。每条记录由多字段特征构成: 视频 ID($e^s_{\text{vid}}$)、作者 ID($e^s_{\text{aid}}$)、标签($e^s_{\text{tag}}$)等, 拼接后送入 Transformer 进行序列建模:
Transformer 使用标准的多头自注意力,并加入相对位置编码以保留行为的时序信息。 输出的 $L_s$ 个位置向量保留用于后续 Decoder 的 Cross-Attention。
路径三:正反馈行为序列
正反馈序列仅包含用户主动表达喜好的行为(点赞、收藏、关注、分享等), 序列长度 $L_p = 256$,远多于短期序列。 这些行为信号噪声更低,能够反映用户稳定的中长期偏好。
路径四:长期兴趣序列(核心创新)
这是 Encoder 中最具创新性的部分。快手用户的历史行为记录最多可达 10 万条, 直接用 Transformer 处理的复杂度为 $O(N^2)$,在 $N=100{,}000$ 时完全不可行。 OneRec 采用两阶段压缩方案,将其压缩到 $N_q = 128$ 个 Query Token。
第一阶段:层级 K-Means 聚类(离线)
在离线阶段,对每个用户的完整历史行为(最多 10 万条)进行层级聚类, 生成代表性的 Centroid 序列($L_l = 2000$ 个中心点)。 具体算法为:
- 对用户的全部历史行为嵌入向量,运行第一层 K-Means,直到每个簇的大小 $\leq M$(终止阈值),保留超出阈值的大簇继续聚类
- 对每个大簇内部递归运行 K-Means,直到所有叶簇大小 $\leq M$
- 收集所有叶簇的中心点,形成 $L_l = 2000$ 个代表性行为中心
这一过程将 10 万条行为的信息损耗式压缩到 2000 个代表性中心, 计算在用户更新画像时完成,不影响在线推理延迟。
第二阶段:QFormer 在线压缩
在线阶段,将 2000 个聚类中心嵌入经过 QFormer 进一步压缩到 $N_q = 128$ 个 Query Token:
$\mathbf{h}_l^{(0)}$ 为 $N_q = 128$ 个可学习 Query 向量, 通过 2 层 Cross-Attention 从 2000 条中心中提取最相关的长期兴趣信号。
完整用户表示拼接
四路拼接后,总 token 数为 $1 + 20 + 256 + 128 = 405$ 个, 作为 Decoder 的 Cross-Attention KV 源,为每个生成步提供完整的用户上下文。
- 即时兴趣(当前会话的最近 20 条行为)
- 稳定偏好(最近 256 条正反馈行为)
- 深层长期兴趣(数年积累的 10 万条行为,经两阶段压缩到 128 token)
OneRec 的 Decoder 是整个系统的核心生成模块。 它接收 Encoder 输出的用户兴趣表示作为条件, 通过自回归解码的方式,逐 token 生成一个完整推荐会话(Session)的语义 ID 序列。 本质上,Decoder 是一个以用户上下文为条件的语言模型, 只不过它"说"的语言是视频语义标识符而非自然语言词汇。
MoE 架构:用稀疏激活撬动大容量
Decoder 采用 Mixture-of-Experts(MoE) 架构, 这是 OneRec 能够在保持推理效率的同时大幅扩展模型容量的核心技术手段。
每个 token 经过所有参数(FFN), 参数量 = 推理 FLOPs 正比增长, 扩展代价高昂。
每个 token 只激活 $K$ 个专家(Expert FFN), 总参数量 $\gg$ 激活参数量, 推理成本远低于全参数计算。
Decoder 层结构
其中 $g_i(\mathbf{x}'')$ 为 Router 分配给第 $i$ 个专家的 softmax 权重, $N_e = 24$(总专家数),每次只激活 $K = 2 \sim 4$ 个专家, 其余专家的 $g_i = 0$,不参与计算。
Router 设计:无损失负载均衡
MoE 的关键工程挑战是专家负载均衡: 若所有 token 都路由到少数几个专家,其余专家空转,模型容量被严重浪费。 传统方案通过辅助损失(Auxiliary Loss)惩罚不均衡, 但这会与主任务损失产生干扰。
- 若专家 $i$ 当前过载(分配 token 多),增大 $b_i$(不等于降低其得分,而是在路由分配时修正)
- 若专家 $i$ 当前闲置,减小 $b_i$
论文中的模型规模配置
| 模型配置 | 激活参数量 | 总参数量(含 MoE) | 备注 |
|---|---|---|---|
| Small | 0.015B | 0.015B | 稠密小模型(对照基线) |
| Medium | 0.121B | 0.121B | 稠密中型模型 |
| Large-MoE | 0.935B | (含稀疏专家) | MoE 大模型 |
| XLarge-MoE | 2.633B | (含稀疏专家) | 线上主力模型 |
Session Generation:一次生成整个推荐列表
OneRec 的另一个核心设计是:Decoder 一次性生成完整的推荐 Session, 即多个视频的语义 ID 序列,而非只生成单个视频。
每个视频的 $L_t = 3$ 个语义 ID token 逐个生成:先生成粗粒度码字 $s_t^1$(大类别), 再依条件生成 $s_t^2$(子类别),最后生成 $s_t^3$(精细码字)。 生成完第 $t$ 个视频后,继续生成第 $t+1$ 个,直到完成整个 Session($K$ 个视频)。
Session 级生成的优势在于:Decoder 可以在生成第 $t+1$ 个视频时, "看到"前 $t$ 个视频的选择,从而实现多样性与相关性的自然权衡 ——不依赖任何后处理去重策略,而是由模型端到端学习。
SFT 预训练目标
$s_t^{l,*}$ 为标注的真实 Session 中第 $t$ 个视频第 $l$ 层语义 ID。 训练数据为用户实际完整观看的视频序列(Watch Session), 以此作为正样本监督 Decoder 学习"生成用户真正会看的视频"。
推理流程
在线推理时,OneRec 的完整执行流程如下:
- 容量足够大: 2.633B 激活参数,但实际只有 MoE 激活比例的参数参与计算, 推理 FLOPs 与 0.935B 稠密模型相当,但模型表达能力远强于后者。
- 生成天然稳定: 在语义 ID 空间内生成,词汇表固定($N_t = 8192$), 不存在 LLM 的 Open-ended 生成不可控问题。
- 可直接优化业务指标: RL 后训练阶段可将 App Stay Time、多样性等指标 直接设计进 Reward,Decoder 端到端优化,无需多阶段协调。
OneRec 在完成 SFT 预训练后,进入强化学习(RL)后训练阶段。 RL 的核心是设计合适的 Reward 函数——它相当于 OneRec 的"总优化目标", 决定了模型最终的推荐行为取向。 OneRec 的 Reward 体系由三类 Reward 组成,分别对应不同的优化目的。
三类 Reward 以加法形式组合(实际工程中可加权), 覆盖用户满意度、生成合法性、业务生态三个维度。
Reward 一:P-Score(用户偏好对齐)
P-Score 是 OneRec RL 训练的主要 Reward 信号,来自独立训练的偏好分数模型, 综合评估用户对某个推荐视频的满意度。 P-Score 是一个综合多个交互信号的加权分数, 考虑了视频观看完成率、点赞、收藏、评论、分享、关注等多种用户行为:
其中 $\text{action}_k$ 表示用户 $u$ 对视频 $v$ 执行的第 $k$ 种互动行为(如观看完整视频), $w_k$ 为对应的业务权重。P-Score 实际上是由独立的 Reward Model(RM)预测, 并非基于实时用户行为,因此可以在生成时离线计算。
Reward 二:Format Reward(生成合法性)
生成式推荐系统面临一个独特挑战:模型可能生成语义 ID 空间中存在但没有对应视频的组合, 即"非法生成(Illegal Generation)"。 这是因为语义 ID 的笛卡尔积空间($N_t^{L_t} = 8192^3$)远大于实际视频数量, 大量 $(s^1, s^2, s^3)$ 三元组并不对应任何真实视频。
论文分析发现,在引入 RL(ECPO)后,非法生成率显著上升。 原因在于负优势样本(Advantage $A < 0$)导致的"挤压效应"(Squeezing Effect)。 Format Reward 通过直接奖励合法生成来对抗这一问题:
$\mathcal{I}_{\text{legal}}$ 为所有合法视频 ID 的集合。 合法样本 Advantage 设为 1(正向奖励),非法样本直接丢弃(不纳入梯度计算), 以避免非法样本的负优势进一步触发 Squeezing Effect。
Reward 三:Industrial Reward(生态与商业化)
工业推荐系统不仅要优化用户体验,还需要兼顾平台生态健康、商业化需求、 以及冷启动/长尾视频的流量分配。 OneRec 通过 Industrial Reward 将这些业务约束直接融入 RL 训练目标。
案例:病毒式内容(Viral Content)控制
快手平台上存在大量"病毒式内容农场"(Viral Content Farms)—— 以搬运、剪辑为主、内容质量参差不齐的账号。 OneRec 上线后,若没有控制策略,此类内容的曝光比例会显著上升, 对平台生态产生负面影响。
$f$ 为允许的病毒式内容比例上限, 当实际比例超过 $f$ 时,对病毒式内容的 P-Score Reward 按比例 $\alpha < 1$ 进行折扣, 使模型主动降低病毒式内容推荐频率。
OneRec 的强化学习后训练采用自研的 ECPO(Early Clipped GRPO) 算法, 这是对 DeepSeek-R1 中使用的 GRPO 算法的针对性改进, 专门解决生成式推荐场景中出现的分布坍塌(Squeezing Effect)问题。
GRPO 基础算法
GRPO 是 PPO 的一个变种,核心思想是: 对同一个输入,采样 $G$ 个输出,用组内相对优势(Relative Advantage)替代绝对价值函数, 消除对 Critic 网络的依赖。
对用户 $u$ 采样 $G$ 个生成 Session, 用组内均值和标准差标准化,得到每个样本的相对优势 $A_i$。 $A_i > 0$ 表示该样本比平均水平好,$A_i < 0$ 表示比平均水平差。
$\rho_{i,t}$ 为当前策略与参考策略在第 $t$ 个 token 上的概率比, $\varepsilon$ 为 PPO clip 参数,$q$ 为用户上下文。
ECPO:早停裁剪机制
关键区别:当负优势样本的概率比 $\rho_{i,t} > 1 + \varepsilon$ 时, 梯度直接置零(Early Stop),不再施加负梯度, 保护合法 token 的概率不被 Squeezing。
Squeezing Effect:分布坍塌机制详解
SFT 损失和 ECPO RL 目标同时优化,前者保持模型稳定(替代 KL 正则), 后者提升推荐质量与业务指标对齐。 一个关键工程决策:移除 KL 散度正则项, 因为 SFT 损失已足够稳定策略更新。
| 算法 | 负优势样本处理 | KL 正则 | 非法生成率 |
|---|---|---|---|
| 标准 GRPO | 继续施加负梯度 | 有 | 显著上升 |
| ECPO(OneRec) | $\rho > 1+\varepsilon$ 时早停,梯度=0 | 无(SFT 代替) | 受控(Format Reward 辅助) |
OneRec 的训练规模和工程复杂度与主流 LLM 预训练相当, 需要在分布式计算、内存优化、数据流水线等多个维度进行深度定制。
硬件规模与计算配置
模型配置与规模梯度
论文设计了四档模型配置,用于 Scaling Law 研究和线上实验:
| 模型 | 激活参数 | 架构类型 | 专家数 $N_e$ | 激活专家数 $K$ | 用途 |
|---|---|---|---|---|---|
| OneRec-S | 0.015B | 稠密 Transformer | — | — | Scaling 对照基线 |
| OneRec-M | 0.121B | 稠密 Transformer | — | — | 中型对照 |
| OneRec-L | 0.935B | MoE Transformer | 24 | 2 | MoE 验证 |
| OneRec-XL | 2.633B | MoE Transformer | 24 | 4 | 线上主力模型 |
训练效率优化
为达到 23.7% 的 MFU(较工程初始状态提升 5.2 倍),OneRec 团队进行了以下优化:
张量并行与流水线并行
- 张量并行(Tensor Parallelism):将 MoE 的专家 FFN 按列/行切分到多 GPU, 减少单卡内存压力,适用于专家参数量大的情况。
- 数据并行(Data Parallelism):多节点同步梯度, 利用 RDMA 高速互联(最大带宽 200Gb)减少 AllReduce 通信瓶颈。
- 序列并行(Sequence Parallelism): 对长序列(用户行为 2000 条 + Decoder 生成序列)进行序列维度切分, 突破单卡的序列长度上限。
混合精度训练
使用 BF16 混合精度训练,主参数使用 FP32 状态, 前向/反向计算使用 BF16,在保持数值稳定的同时将显存占用和计算量减半。 MoE 的专家路由 Router 保持 FP32 精度以避免数值溢出。
Gradient Checkpointing
对 Encoder 的长序列路径(Lifelong QFormer,输入序列长度 2000) 使用 Activation Checkpointing,以计算换内存, 使长序列建模在有限 GPU 内存下可行。
在线数据流水线
- 用户新行为的实时 Tokenization(将新行为的视频 ID 映射到最新 Semantic ID)
- 用户画像的增量更新(Lifelong 聚类中心的在线更新)
- 训练数据与 Reward Label 的对齐(P-Score 来自 RM,需要离线计算后对齐)
将一个 2.633B 参数的 MoE 生成模型部署到每秒百万 QPS 量级的工业推荐系统, 是 OneRec 最具挑战的工程模块之一。
硬件配置
| 组件 | 配置 | 说明 |
|---|---|---|
| 推理 GPU | NVIDIA L20(每台 4 卡) | 推理专用卡,显存/计算比高 |
| CPU | 每台 2 颗 | 负责预处理、用户特征拼接 |
| GPU-CPU 互联 | PCIe | Host-Device 数据传输 |
| 机器间网络 | 200Gb RDMA / RoCE | Embedding 服务与推理服务间高速通信 |
| 最大机间带宽 | 800Gb | AllReduce、KV Cache 同步 |
TensorRT 计算图优化
线上模型使用 TensorRT 编译和优化,主要优化手段包括:
- 算子融合(Operator Fusion): 将 LayerNorm + Linear、Softmax + TopK 等连续算子融合为单个 CUDA Kernel, 减少显存读写次数。
- MoE 专家并行执行: 通过自定义 CUDA Plugin 实现 Expert 的并行分发(Token 按路由结果派发到对应 Expert), 避免了 CPU 端的序列化控制流。
- Cross-Attention 优化: Encoder 的 KV(共 405 个 token)在 Decoder 每步 Cross-Attention 中重复使用, 通过 KV Cache 避免重复计算,并使用 Flash-Attention 降低显存和计算量。
- INT8/FP8 量化(部分层): 对计算密集的 FFN 层应用 INT8 量化,在可接受的精度损失下将吞吐提升约 1.5×。
Batching 与 MPS
- Dynamic Batching: 对推理请求进行动态批处理,将多个用户的请求合并为一个 Batch, 提高 GPU 利用率,降低平均请求延迟。 Batch Size 根据当前请求量自适应调整。
- NVIDIA MPS(Multi-Process Service): 允许多个推理进程共享同一块 GPU 的 CUDA Context, 减少 GPU 上下文切换开销,进一步提升吞吐。 结合 Dynamic Batching,使推理吞吐再提升约 1.3×。
UniPredict 推理平台
OneRec 部署在快手自研的 UniPredict 预测平台上, 该平台统一管理推荐系统中的模型推理服务,支持:
- 模型版本管理与灰度发布(支持 OneRec 与传统系统的流量切分)
- Embedding 服务与生成服务的解耦部署(降低 Encoder 特征更新延迟)
- 推理延迟 SLA 监控与自动扩缩容
- A/B 实验框架集成(论文中的 5% 流量实验组精确控制)
Scaling Law 分析
OneRec 在四档模型规模上进行了系统性的 Scaling Law 研究, 验证了推荐系统中生成模型的参数效率规律。
- 模型规模 vs 推荐质量: 在相同训练计算量下,OneRec 的推荐指标(NDCG、Hit Rate 等) 随激活参数量的增加呈幂律提升,与 LLM 的 Scaling Law 形式类似。
- MoE 的 Scaling 优势: 相同激活参数量下,MoE 架构(OneRec-L/XL)显著优于稠密架构(OneRec-S/M), 说明稀疏专家机制在推荐场景下有效提升了参数利用效率。
- 训练数据量 vs 模型大小的最优配比: 论文发现训练 ~100B 样本后模型趋于收敛, 在此规模下 XLarge-MoE 的性能增益最为显著。
消融实验
| 消融配置 | 相对于完整 OneRec 的变化 | 推荐质量影响 |
|---|---|---|
| 去掉 Lifelong 路径 | 移除长期兴趣序列(2000 token) | 显著下降(-X%),表明长期兴趣建模不可替代 |
| 去掉协同信号($\mathcal{L}_{\text{i2i}}$) | Tokenizer 仅用内容特征 | 下降,尤其对长尾和冷启动视频影响大 |
| GRPO → ECPO | 改用标准 GRPO | 非法生成率上升,最终 Session 质量下降 |
| 去掉 Format Reward | 仅用 P-Score + Industrial Reward | 非法生成率显著上升,影响可用性 |
| 去掉 RM Selection | 纯生成模型,无 Reward 精选 | App Stay Time 下降约 0.5%(仍优于传统系统) |
| 稠密模型(无 MoE) | 相同激活参数量的稠密 Transformer | 推理成本相同但推荐质量下降,参数效率较低 |
在线 A/B 实验(主场景)
在快手主 Feed 和快手极速版两个日活亿级最高流量场景进行了 A/B 实验, 实验组使用 5% 流量,观测周期为一周。 以 App Stay Time(用户在 App 内的总停留时长,反映总体参与度) 和 LT7(7 天 Lifetime,反映用户留存)为主指标。
| 场景 | 在线指标 | OneRec(纯生成) | OneRec + RM Selection |
|---|---|---|---|
| 快手主 App | App Stay Time | +0.01% | +0.54% |
| Watch Time | +0.07% | +1.98% | |
| Video View | +1.98% | +2.52% | |
| Like | -2.00% | +2.43% | |
| Follow | -2.88% | +3.24% | |
| Comment | -1.56% | +5.27% | |
| Collect | -0.61% | +2.93% | |
| Forward | +0.27% | +5.90% | |
| 快手极速版 | App Stay Time | +0.06% | +1.24% |
| Watch Time | +0.05% | +3.28% | |
| Video View | +2.40% | +3.39% | |
| Like | -2.64% | +1.49% | |
| Follow | -2.75% | +2.28% | |
| Comment | -2.23% | +3.20% | |
| Collect | -1.76% | +1.91% | |
| Forward | -1.86% | +3.48% |
传统多任务推荐系统中,提升观看时长往往以牺牲互动指标(点赞、评论、关注)为代价, 这就是著名的 Seesaw Effect。
OneRec + RM Selection 在 所有指标上同时提升, 完全消除了 Seesaw Effect。这是因为 RL 的 P-Score Reward 综合了所有交互行为的加权分, 模型被迫学习一个真正符合用户全面满意度的推荐策略, 而非在各个子目标之间做取舍。
统计显著性说明: 在快手量级下,App Stay Time +0.1%、LT7 +0.01% 即为统计显著。 OneRec + RM Selection 的提升幅度远超这一门槛。
本地生活服务场景
除短视频推荐外,OneRec 还在快手本地生活服务(Local Life Service)场景进行了部署实验, 验证架构的跨场景泛化能力:
核心成就总结
OneRec 是工业推荐系统领域的一个里程碑式工作, 其意义不仅在于技术指标的提升,更在于它证明了一条完全不同的系统设计路径是可行的:
当前局限性
- 冷启动物品覆盖: 虽然 RQ-Kmeans 通过语义聚类具备一定的冷启动泛化能力, 但对于刚上传的全新视频(无任何交互历史), 协同信号部分的 Semantic ID 质量仍有待提升。
- 实时性约束: Encoder 的长期兴趣路径(Lifelong K-Means 聚类)是离线预计算的, 无法实时响应用户兴趣的快速变化(如突发事件引发的兴趣爆发)。
- 生成多样性控制: Session 级自回归生成在保证相关性的同时, 有时会陷入局部最优(连续生成过于相似的视频), 需要额外的 Diversity Reward 或 Temperature 控制策略。
未来方向
——快手 OneRec 团队