← 返回论文列表
🏭 工业系统 · 快手 Kuaishou · 2025.08

OneRec-V2 Technical Report

Lazy Decoder-Only 架构将计算效率提升 94%,首次在生成式推荐验证 Scaling Law(0.1B→8B),并用真实用户反馈驱动 GBPO 强化学习,替代 Reward Model 方案。

机构 Kuaishou · OneRec Team
arXiv 2508.20900
发布时间 2025 年 8 月
在线收益(快手主 Feed) App 停留时长 +0.467%
在线收益(快手极速版) App 停留时长 +0.741%
计算节省 FLOPs 减少 94%,训练资源减少 90%
🎯 1. 背景与动机

OneRec-V1 已经完成从多级漏斗到端到端生成推荐的范式转换,并在快手主 Feed 承接了 25% 的流量。但 V1 存在两个根本性瓶颈,V2 的全部工作都是围绕解决这两个问题展开的。

❌ V1 的瓶颈一:计算严重失衡
Encoder-Decoder 架构:Encoder 处理用户长序列(512 个 token),Decoder 仅预测 3 个语义 token
上下文编码占总 FLOPs 的 97.66%,真正决策的 target decoding 仅占 2.34%
随序列长度增长,比例失衡更严重(3000 tokens 时仅 0.41%),无法有效扩展模型规模
❌ V1 的瓶颈二:Reward Model 依赖
在线 roll-out 仅覆盖 1% 用户(算力限制),采样效率低
Proxy Reward 存在 reward hacking 风险:模型学到 reward model 的偏差而非真实用户偏好
V1 部署规模有限,缺乏足够的自身生成样本做 on-policy 训练
✅ V2 的解法一:Lazy Decoder-Only 架构
彻底去掉 Encoder,用户 Context 仅通过 Cross-Attention 注入,不参与 Loss 计算
Target Decoding 占 ≈100% FLOPs,计算预算全部用于生成决策
同等算力预算下可扩展到 8B 参数,验证 Scaling Law
✅ V2 的解法二:真实用户反馈 RL
用户观看时长作为直接 Reward,规避 reward hacking
Duration-Aware Reward Shaping 校正视频时长偏差
借助 V1 的 25% 流量覆盖,用 OneRec 自身生成样本做 on-policy RL
🏗️ 2. Lazy Decoder-Only 架构

2.1 设计原则:为什么不直接用 Decoder-Only?

推荐系统中一条训练样本由"历史序列(Context)+ 目标 item(Target)"构成,只对 Target 计算 Loss。标准 Naive Decoder-Only 会把 Context 和 Target 拼接成一个序列,整体通过 Self-Attention——这样 Context 的计算量和 Decoder-Only 的 Encoder-Decoder 一样多,效率并无提升(见下表)。

架构 总 FLOPs(GFLOPs) Target 解码 FLOPs Target 占比
Encoder-Decoder 0.5B:0.5B(V1) 346 8.1 2.34%
Naive Decoder-Only 1B 632 18 2.85%
Lazy Decoder-Only 1B(V2) 18 18 ≈ 100%
💡 核心思路
Lazy Decoder-Only 把 Context 视为静态条件信号,仅通过 Cross-Attention 注入,自身不参与 Self-Attention 也不计入 Loss。等价于"只有 3 个 token 在做 Self-Attention",FLOPs 下降 94%。

2.2 Context Processor(异构用户特征统一化)

💡 要解决的核心问题
推荐系统的用户画像来自三路完全不同形状的数据:User Static(几十个标量)、Short-term(最近互动的 item 序列)、Long-term(长期行为摘要)。它们维度不同、长度不同,没法直接塞进 Cross-Attention 的 K/V。Context Processor 的任务就是把三路异构特征拼成一条统一维度的序列,然后预先切成各层用的 KV 对——整个过程只做一次,所有 18 层 Decoder Block 复用同一组 KV。

Step 0:三路特征进来是啥样的

以 1B 模型为例($d_{model}=1792, N_{head}=14, d_{head}=128$):

特征路来源经过输出形状典型长度
User Static年龄 / 性别 / 地域 / 设备Embedding → Linear$N_s$ 个向量,1792 维$N_s=4$
Short-term最近 10 分钟互动视频Embedding → Transformer$T_{short}$ 个向量,1792 维$T_{short}=50$
Long-term过去 6 个月行为摘要Embedding → Pooling$T_{long}$ 个向量,1792 维$T_{long}=458$

三路 concat 成一条序列:

Context = [static_0, static_1, ..., short_0, ..., long_0, ...]
形状:(N_s + T_short + T_long) × d_model
     = (4 + 50 + 458) × 1792
     = 512 × 1792

Step 1:维度设计——为什么要用 $d_{\text{context}}$ 公式

Context 最终要变成 Cross-Attention 可以用的 K/V,而 Cross-Attention 的 K/V 维度必须匹配 Q 的 head 结构。公式:

Context 目标维度
$$d_{\text{context}} = S_{kv} \cdot L_{kv} \cdot G_{kv} \cdot d_{\text{head}}$$

以默认配置 $S_{kv}=1, L_{kv}=1, G_{kv}=14, d_{head}=128$ 为例:$d_{\text{context}} = 1 \times 1 \times 14 \times 128 = 1792 = d_{model}$。

每个 1792 维的 context 向量,沿特征维度被切分成 $S_{kv} \times L_{kv} = 1$ 份(因为所有层共享同一组 KV),每份形状为 $G_{kv} \times d_{head} = 14 \times 128$。

Step 2:RMSNorm 产出最终 K/V

# 默认配置 L_kv=1, S_kv=1 时:
k_0 = RMSNorm(C_0)            # 512 × 14 × 128
v_0 = k_0                     # S_kv=1 → K/V 共享同一表示,不需要额外投影

# 如果 S_kv=2(K/V 独立):
k_0 = RMSNorm_k(C_0 的前半)    # 512 × 14 × 128
v_0 = RMSNorm_v(C_0 的后半)    # 512 × 14 × 128

# 如果 L_kv=3(每 6 层共享一组 KV):
# Context 沿特征维度切成 3 份 → C_0, C_1, C_2
# Layer 0-5 用 k_0/v_0, Layer 6-11 用 k_1/v_1, Layer 12-17 用 k_2/v_2

Step 3:各层如何使用这组 KV

✅ Lazy Cross-Attention 的"懒"体现在哪里
  • K/V 只计算一次:Context Processor 在进入所有 Decoder Block 之前就预计算完毕,18 层全部复用同一组 KV($L_{kv}=1$)
  • 去掉 $W_K$、$W_V$ 投影层:传统 Cross-Attention 每层都有独立的 $W_K$、$W_V$ 矩阵,把 encoder 输出投影成该层的 K/V。Lazy 版本直接用预计算的 KV,完全不做投影,省掉了这部分参数和计算
  • Query 仍然有 Linear:Q 来自 target item tokens(只有 BOS + s1 + s2 = 3 个),经 $W_Q$ 投影,支持 GQA
  • 计算量对比:传统每个 Block 的 Cross-Attention = $W_Q$ + $W_K$ + $W_V$ 三次大矩阵乘;Lazy 版本 = $W_Q$ 一次矩阵乘(K/V 已预计算好)

❌ 传统 Encoder-Decoder(V1)

Context → Encoder(18层 Self-Attention)→ memory
每个 Decoder Block:
  memory × W_K → K      ← 每层独立投影
  memory × W_V → V      ← 每层独立投影
  target × W_Q → Q
  Attention(Q, K, V)

↑ Encoder 消耗 ~97% FLOPs
↑ 每层还有 W_K/W_V 投影,额外参数+计算

✅ Lazy Decoder-Only(V2)

Context → Linear + RMSNorm → KV(一次,极轻量)
每个 Decoder Block:
  直接用预计算的 K/V   ← 无投影,18层共享
  target × W_Q → Q
  Attention(Q, K, V)

↑ Context 完全不做 Self-Attention
↑ K/V 预计算一次,省掉 18× W_K/W_V

$L_{kv}$ 和 $S_{kv}$ 的消融直觉

参数含义实验结论直觉解释
$L_{kv}=1$18 层全共享同一组 KVLoss 3.27,与 L=18 几乎一样用户画像在不同 Decoder 层看起来都差不多——"年龄=25"不会因为层深就变了
$L_{kv}=9$相邻 2 层共享一组 KVLoss 3.27,FLOPs 略增中间值,略增灵活性但收益极小
$L_{kv}=18$每层独立 KVLoss 3.27,显存 +2.3×LLM 每层 KV 差异大(语义逐层抽象),推荐 Context 却很稳定,所以共享完全 OK
$S_{kv}=1$K/V 共享同一表示Loss 3.27,省一半 KV 显存"哪些 item 是我历史互动"和"我对这些 item 的偏好强度"在推荐 Context 中信息重叠度高
$S_{kv}=2$K/V 各有独立 RMSNormLoss 3.27,略增参数独立 K/V 更灵活,但对推荐 Context 无明显收益
📌 为什么推荐 Context 可以共享 KV,而 LLM 不行?
LLM 每层提取不同语义层次——浅层关注语法("这个词是什么词性"),深层关注语义("这句话是什么意思"),所以每层 KV 差异很大。但推荐系统的用户 Context 是静态画像("这个用户是 25 岁男性,最近喜欢美食视频"),不管 Decoder 在第 1 层还是第 18 层,这个画像的内容不会变。所以所有层共享同一组 KV 是合理的。

2.3 Lazy Decoder Block 结构

每个 Lazy Decoder Block 包含三个子模块,按以下顺序执行:

① Lazy Cross-Attention(无 KV Projection)
直接用 Context Processor 输出的预计算 KV,去掉传统 Cross-Attention 的 $W_K$、$W_V$ 投影层。Query 仍有 Linear,支持 GQA(G_kv 组共享 KV)。显存节省显著。
② Causal Self-Attention
仅对 3 个 target token(BOS + s1 + s2)做自回归 Self-Attention。输入序列极短,计算量极小。
③ Feed-Forward Network(深层改为 MoE)
前几层用 Dense FFN,深层替换为 MoE(53 个 Routed Expert + 1 Shared Expert,top-3 routing),总参数 4B、激活参数 0.5B,性能超越 2B Dense 模型。

2.4 Scaling Law 验证

首次在生成式推荐系统验证 Scaling Law,实验覆盖 0.1B 到 8B Dense 模型及 4B MoE 模型。拟合结果:

拟合公式(固定训练数据量 D)
$$\hat{L}(N) = E + \frac{A}{N^{\alpha}}, \quad E=3.13,\ A=3660,\ \alpha=0.489$$
模型规模 d_model 层数 收敛 Loss 备注
0.1B Dense640123.57
0.5B Dense1408143.33
1B Dense1792183.27线上部署规格
2B Dense2304223.23
4B Dense2944263.20
8B Dense3584343.19
4B MoE(0.5B 激活)1408143.22超越 2B Dense,仅需 0.5B 激活算力
✅ 关键结论
  • Lazy Decoder-Only 在相同 FLOPs 下与 Encoder-Decoder 收敛 Loss 持平,却节省 94% 计算量
  • Loss 曲线平滑下降,与 Chinchilla Scaling Law 高度吻合,说明生成式推荐同样遵循 LLM 规律
  • 4B MoE 以 0.5B 激活参数的代价,达到接近 4B Dense 的效果,是工业落地的最优配比
🎓 3. 真实用户反馈强化学习

V2 的后训练分两阶段:① SFT(流式曝光数据,与预训练同 Loss)保持实时兴趣捕捉并防止偏离;② RL 基于真实用户反馈,取代 V1 的 Reward Model 方案。

3.1 Duration-Aware Reward Shaping

视频观看时长(play time)是最密集的反馈信号,但有时长偏差:长视频天然有更高绝对观看时长,简单用 play time 作 Reward 会让模型偏向推长视频。

📐 核心设计:同时长分位数排名
  1. 对历史视频按时长取对数分桶:$b = \lfloor \log_{\beta}(d + \epsilon) \rfloor$($\beta$ 控制粒度,$\epsilon$ 防数值问题)
  2. 对目标视频,找出历史记录中相同时长桶内的所有观看时长,计算其分位数排名 $q_i$: $$q_i = \frac{|\{p_j \in P_{u,b} \mid p_j \le p_i\}|}{|P_{u,b}|}$$
  3. 同批次内按 $q_i$ 排序,前 25%(top quartile)为正样本($A_i=+1$),显式"不喜欢"行为为负样本($A_i=-1$),其余过滤($A_i=0$)

这样同一用户对一个 3 分钟视频完整观看,比对一个 30 秒视频只看 5 秒,reward 更高——体现了真实满意度而非绝对时长。

3.2 GBPO:Gradient-Bounded Policy Optimization

💡 一句话核心
OneRec 的 RL 训练里,大批样本的 importance ratio 恒等于 1,导致 GRPO/PPO 的 ratio-clipping 完全失效;同时 RL 负样本梯度 $\propto 1/\pi_\theta$,越压越爆炸。GBPO 用一个简单的 $\max()$ 修改分母,让 RL 负样本梯度恰好等于 BCE 负样本梯度——既保留所有样本,又天然有界。

3.2.1 两类训练样本

OneRec 在 RL 阶段使用的曝光样本来自两个源:

来源$\pi_{old}$ 是什么ratio $r = \pi_\theta / \pi_{old}$占比
OneRec 自身曝光 真实记录的曝光时刻概率 $\pi_\theta / \pi_{old}$(动态变化) ≤ 25% 流量
传统 pipeline 曝光 不可知 → 简化为 $sg(\pi_\theta)$ $\equiv 1$ 恒定 ≥ 75% 流量
❓ 为什么传统 pipeline 样本要用 $sg(\pi_\theta)$?
因为传统推荐 pipeline 由 召回→粗排→精排→重排 多个阶段组成,最终曝光给用户的 item 是一个复杂决策的产物,不是某个模型的"概率采样"结果。OneRec 在事后只能拿到"曝光了哪些 item",无法回溯"曝光时该 item 在 OneRec 里的概率"。退而求其次,用当前 Actor 的概率作为代理,这就是 $\pi_{old} = sg(\pi_\theta)$。

3.2.2 ratio=1 引发的两个连锁问题

问题 1:clipping 失效。GRPO/PPO 的损失为 $\min(r \cdot A,\ \text{clip}(r, 1-\epsilon, 1+\epsilon) \cdot A)$,当 $r \equiv 1$ 时 clip 永不触发,对这 75% 样本毫无保护。

问题 2:负样本梯度爆炸。把 $\pi_{old} = sg(\pi_\theta)$ 代入并求导:

RL 负样本梯度(ratio=1 时)
$$J_i = -A_i \cdot \frac{\pi_\theta}{sg(\pi_\theta)} \quad \Rightarrow \quad \frac{\partial J_i}{\partial \theta} = -A_i \cdot \frac{1}{\pi_\theta} \cdot \frac{\partial \pi_\theta}{\partial \theta}$$

$sg()$ 阻断对分母的求导,但分母数值 $= \pi_\theta$。所以梯度系数为 $1/\pi_\theta$。负样本时 $A_i < 0$,模型会尝试压低 $\pi_\theta$,但 $\pi_\theta$ 越小梯度系数越大——形成正反馈

❓ $sg(\pi_\theta)$ 是常数,真实 $\pi_{old}$ 也是常数,为什么一个稳一个炸?

关键不在"是不是常数",而在这个常数的数值会不会随 $\pi_\theta$ 同步漂移

  • 真实 $\pi_{old}$(如 0.2)= 历史快照:写死在日志里。$\pi_\theta$ 怎么变它都是 0.2,梯度系数恒为 $1/0.2 = 5$,稳定。
  • $sg(\pi_\theta)$ = 当前镜像:数值始终等于 $\pi_\theta$,$\pi_\theta$ 掉到 0.01 它也变 0.01,梯度系数变 100。"对照组"和"实验组"同步漂移,比较失去意义。

3.2.3 关键观察:BCE 梯度天然有界

对二元分类的 BCE Loss,单个负样本($y=0$)的梯度为:

BCE 负样本梯度
$$L_{BCE} = -\log(1 - p_\theta) \quad \Rightarrow \quad \frac{\partial L_{BCE}}{\partial \theta} = \frac{1}{1 - p_\theta} \cdot \frac{\partial p_\theta}{\partial \theta}$$
$\pi_\theta$(或 $p_\theta$)RL 系数 $\frac{1}{\pi_\theta}$BCE 系数 $\frac{1}{1-p_\theta}$对比
0.522持平
0.1101.11RL 是 BCE 的 9×
0.011001.01RL 是 BCE 的 99×
0.00110001.001RL 已经爆炸

BCE 的"自洽性":模型越确定一个样本是负的,梯度越小(已经学好了不再用力);而 RL 反过来,越确定越用力——这是 RL 不稳定的数学根源

3.2.4 GBPO 的设计:用 max() 把 RL 梯度对齐到 BCE

GBPO 目标函数(保留所有样本)
$$J_{GBPO}(\theta) = -\mathbb{E}\left[\frac{1}{G}\sum_{i=1}^{G}\frac{\pi_\theta}{\pi'_{\theta_{old}}} \cdot A_i\right]$$ $$\pi'_{\theta_{old}} = \begin{cases} \max\!\big(\pi_{old},\; sg(\pi_\theta)\big), & A_i \ge 0 \;\;\text{(正样本)} \\[4px] \max\!\big(\pi_{old},\; 1 - sg(\pi_\theta)\big), & A_i < 0 \;\;\text{(负样本)} \end{cases}$$

不裁剪分子(不丢弃任何样本),只在分母引入动态下界。

为什么这个 max() 恰好等价于 BCE 梯度?对 ratio=1 的传统 pipeline 样本($\pi_{old} = \pi_\theta$),代入并讨论 $\pi_\theta < 0.5$ 时:

GBPO 负样本梯度(ratio=1 时)
$$\pi'_{\theta_{old}} = \max(\pi_\theta,\ 1-\pi_\theta) = 1 - \pi_\theta \quad (\text{当 } \pi_\theta < 0.5)$$ $$\frac{\partial J_i^{GBPO}}{\partial \theta} = -A_i \cdot \frac{1}{1 - \pi_\theta} \cdot \frac{\partial \pi_\theta}{\partial \theta}$$

系数 $\frac{1}{1-\pi_\theta}$ 正好是 BCE 负样本的梯度系数!这就是"以 BCE 梯度为 RL 梯度的上界"的精确含义。$\pi_\theta \to 0$ 时系数 $\to 1$,梯度有界、稳定。

正样本同理:$\max(\pi_{old}, \pi_\theta)$ 在 $\pi_\theta$ 已经很大时取 $\pi_\theta$,对应 BCE 正样本梯度系数 $1/p_\theta$,避免"模型已经很自信"时 ratio 变大引起更新震荡。

3.2.5 GBPO vs GRPO/ECPO 三方对比

方法核心机制对 ratio=1 样本对负样本梯度爆炸是否丢弃样本
GRPO / PPO $\text{clip}(r, 1\!-\!\epsilon, 1\!+\!\epsilon)$ ❌ 永不触发 ❌ 不解决 是(clip 外丢弃)
ECPO(V1) $\text{clip}$ 应用在 $\pi_{old}$ 而非 $r$
负样本仅设上界
⚠️ 部分缓解 ⚠️ 仍可能 是(部分负样本丢弃)
GBPO(V2) 分母引入 $\max()$ bound
对齐 BCE 梯度
✅ 直接处理 ✅ 数学可证 否(全样本利用)

3.2.6 实验验证(论文图 9)

✅ Gradient Norm 实测对比
  • ECPO 负样本 gradient norm:在 0–5 之间剧烈震荡,多次出现脉冲峰值,模型最终 Loss 发散。
  • GBPO 正/负样本 gradient norm:均稳定在 0.04–0.14 区间内平滑波动,训练全程无发散。
  • 线上 A/B(快手主 Feed)相比纯 ECPO 基线:App 停留时长 +0.467%、互动指标全线提升。

3.3 Reward Model vs 真实用户反馈 vs Hybrid

指标(快手主 Feed) Reward Model User Feedback Hybrid
App 停留时长+0.269%+0.299%+0.283%
Watch Time+0.537%+0.610%+0.118%
Video View+0.505%+0.647%+0.647%
Like+6.552%+2.435%+7.010%
Follow+7.265%+2.007%+8.458%
Comment+15.472%+0.944%+8.763%

关键发现:Reward Model 更擅长提升互动指标(Like/Follow/Comment),User Feedback 更擅长提升 App 停留时长(时长类指标)。两者方向互补,Hybrid 版本兼顾了两者,但不能简单叠加(有重叠)。

💡 On-Policy 带来的自我迭代增益
实验组"w/ OneRec Samples"(引入 OneRec 自身生成的曝光样本)对比"w/o OneRec Samples"(仅用传统 pipeline 样本),Video View 从 −0.901% 转正至 +0.716%,Like 从 −0.186% 升至 +2.897%——说明 25% 流量覆盖后,用自身生成样本做 on-policy RL 带来了显著的自我迭代收益。
📊 4. 在线 A/B 测试

最终 V2 上线规格:1B 参数、context length 3000、Beam Size 512,L20 GPU 推理,时延 36ms,MFU 62%。使用 5% 流量实验组,观测一周。

+0.467%
快手 App 停留时长
+0.741%
快手极速版停留时长
+1.367%
快手 Watch Time
+3.924%
快手 Like
+4.730%
快手 Follow
+5.394%
快手 Comment
场景指标OneRec-V2 vs V1
快手主 FeedApp Stay Time+0.467%
LT7(7日留存)+0.069%
Watch Time+1.367%
Video View+0.331%
Like+3.924%
Follow+4.730%
Comment+5.394%
Collect+2.112%
Forward+3.183%
快手极速版App Stay Time+0.741%
LT7(7日留存)+0.034%
Watch Time+0.762%
Video View+0.259%
Like+5.393%
Follow+5.627%
Comment+5.013%
Collect+3.202%
Forward+7.958%

特别说明:论文额外报告了"关闭缓存"(Caching Disabled)的 1% 流量实验,交互指标(Like/Follow/Comment/Forward)在两个平台的涨幅达到 9.6%–29.2%,但同时观察到冷启动视频曝光减少(44.7% / 36.7%)和 cluster density 上升,说明高强度 RL 对生态系统存在影响,这是未来需要关注的方向。

🔄 5. OneRec V1 vs V2 关键对比
维度OneRec-V1OneRec-V2
预训练架构 Encoder-Decoder(0.5B:0.5B,含 MoE Decoder) Lazy Decoder-Only(1B 上线,支持至 8B)
Context 处理方式 Encoder 完整处理 → Cross-Attention 注入 Context Processor 线性变换 → 直接作为 KV,不做 Self-Attention
计算分配 97.66% FLOPs 用于上下文编码 ≈ 100% FLOPs 用于 Target 解码
可扩展规模 ~0.5B(受制于编码计算量) 0.1B → 8B,验证 Scaling Law
RL 奖励来源 Reward Model(proxy reward) Duration-Aware 真实用户反馈 + 可选 Reward Model Hybrid
RL 算法 ECPO(Early Clipped GRPO) GBPO(Gradient-Bounded Policy Optimization)
On-Policy 覆盖 1% 用户 roll-out 25% 流量(OneRec 自身生成样本)
在线时延 / MFU 未明确披露 36ms,MFU 62%(L20 GPU)
App 停留时长增益 快手 A/B +1.68%(总观看时长) 快手 +0.467%,快手极速版 +0.741%(App Stay Time,基于 V1)
💎 6. 核心洞察与局限

核心洞察

  • 计算效率是 Scaling 的前提:V1 的 Encoder-Decoder 架构虽然合理解决了"历史序列 vs 目标 item"异构问题,但 97% FLOPs 浪费在不参与 Loss 的 Context 编码上,根本上限制了模型规模上限。Lazy Decoder 彻底解决了这个矛盾——把 Context 降级为"静态 KV 条件",让 Decoder 专注于生成决策。
  • Scaling Law 在推荐系统成立:这是该领域首次系统验证 Chinchilla 风格的 Scaling Law 曲线,从 0.1B 到 8B 平滑下降,为未来更大规模的生成式推荐提供了理论支撑和工程路线图。
  • On-Policy 数据是 RL 自我进化的关键:V1 因覆盖率有限,无法使用自身生成的样本训练。V2 借助 25% 流量覆盖,用 OneRec 自身曝光样本做 on-policy RL,Video View 等全面指标均转正,体现了自我迭代的复利效应。
  • Reward 偏好决定优化方向:Reward Model 更偏互动指标,真实时长 Reward 更偏停留时长,Hybrid 策略能在两者之间取得平衡而不加剧 seesaw 效应。选择 Reward 定义即选择模型优化的"北极星指标"。
  • GBPO 解决了 ratio=1 时的梯度稳定问题:传统 pipeline 样本因无法获取老策略概率,$\pi_{old}=sg(\pi_\theta)$,ratio 恒为 1,GRPO/ECPO 等 clipping 方法无法截断,负样本梯度爆炸。GBPO 以 BCE 梯度为动态上界,是该问题的优雅解法。

局限与未来方向

1. 长期价值与短期信号的对齐

当前 Duration-Aware Reward 仍是基于规则的短期代理指标(观看时长分位数),并非用户长期满意度的直接信号。论文指出下一步要让模型直接优化长期价值(LT7 等),而非短期观看行为。

2. 冷启动与生态多样性

关闭缓存的实验观察到冷启动视频曝光下降 44.7%(快手)和 36.7%(极速版),cluster density 上升,说明强 RL 可能导致推荐同质化,对内容生态造成影响,需要在 Reward 设计中加入多样性约束。

🔗 OneRec 系列演进脉络
OneRec-V1(2025.02)
Encoder-Decoder + MoE,IPA 偏好对齐,替代三级漏斗。快手 +1.68% 总观看时长。
OneRec Technical Report(2025.06)
补全工程细节:多模态 tokenizer、四路 Encoder、ECPO RL、25% QPS 承接、OPEX 仅 10.6%。
OneRec-Think(2025.10)
引入显式 CoT 推理:Itemic Alignment → Reasoning Activation → GRPO RL。Think-Ahead 解耦推理延迟。
OneRec-V2(2025.08) ← 本文
Lazy Decoder-Only 解决计算失衡,GBPO + 真实用户反馈 RL,Scaling Law 验证 0.1B→8B。