UniR²: Unifying Generative Recall and Multi-Objective Ranking in a Single Decoder-Only Sequence¶
UniR²(读作 UniR-square,Unified Recall & Ranking)来自快手(Kuaishou Technology)与中科院信工所(Institute of Information Engineering, CAS)的联合团队,作者包括 Ruochen Yang、Shuang Wen、Pengbo Xu、Yusheng Huang、Jiangxia Cao(通讯)、Shuang Yang、Zhaojie Liu、Jiawei Sheng、Tingwen Liu(通讯)。论文于 2026 年 7 月 27 日提交 arXiv(2607.24439)。
这篇论文回答的问题非常具体:能不能把生成式召回(generative recall)和多目标排序(multi-objective ranking)写进同一条 Transformer 序列,而不是两个互相隔离的模型? 现有的"统一"工作大多停留在共享架构、共享输入格式、或在生成之后接一个轻量打分器;UniR² 主张的是序列级 + 层级(layer-wise)双重统一——把用户上下文、SID 生成轨迹、物品排序特征拼成一条异构 token 序列,喂进同一个 decoder-only Transformer,一次前向同时产出候选分布和多目标分数。
研究动机与背景¶
级联架构的三重代价¶
现代工业推荐系统几乎都组织为多阶段级联:给定用户请求,召回阶段先从十亿级语料里检索出数千个候选,之后排序模型在多个业务目标下做细粒度的用户-物品匹配。这种分工之所以长期有效,是因为召回强调高效搜索与覆盖,而排序强调逐候选的精确判别。
但作者指出,这种分离引入了两阶段之间的根本鸿沟:召回与排序通常用不同目标优化、消费不同组织形式的特征、并在独立参数空间里产出表征。由此带来三重代价:
- 目标不一致(objective inconsistency):召回被优化去"生成可信候选",排序被优化去"在被截断的候选集上最大化业务效用",两者目标并不对齐;
- 表征损失(representation loss):候选生成过程中捕获的信息,在阶段边界处被压缩成一个离散的候选列表——生成时的中间语义状态全部丢弃,排序只能拿到一堆 item ID;
- 冗余计算(redundant computation):用户上下文被两个模型重复编码,长行为历史在召回时编一遍、在排序时又编一遍。
架构收敛带来的机会¶
与此同时,两个阶段都在经历相似的 Transformer 化改造。召回侧,生成式推荐把每个物品表示为层次化语义 ID(SID),把大规模检索转化成自回归 next-token 预测(TIGER、OneRec 系列),Transformer 学习在 SID 轨迹上的分布,从而避免逐物品穷举打分。排序侧,近期模型越来越把异构字段、行为序列、上下文特征统一 tokenize,用多层注意力做可扩展的特征交互骨干(OneTrans、TokenFormer 等)。
尽管两个任务输出不同,它们现在共享了若干重要的计算原语:tokenized 输入、用户上下文建模、基于注意力的特征融合、深层 Transformer 栈。这种收敛自然引出论文的核心问题:
Can generative recall and multi-objective ranking be formulated into one Transformer sequence rather than two isolated models?
作者列出统一的三点收益:(a) 共同的序列空间可以保留召回过程中产生的信息并直接把它暴露给排序,弥合阶段边界的语义鸿沟;(b) 两个任务可以共享用户侧上下文计算,复用候选生成与打分之间的中间 KV cache,消除长历史与个性化画像的重复编码;(c) 对单个 Transformer 骨干做 scaling 可以让召回和排序共同受益,而不必独立维护两个越来越大的模型。
为什么直接合并会失败¶
然而直接把两个任务塞进一条序列是非平凡的。作者的分析很关键:
- 生成式召回是一个结构化分布拟合问题:每个 SID token 必须服从自回归因果性,并保留层次语义(先粗后细);
- 多目标排序是一个判别式特征交互问题:所有 item 侧特征同时可得,每个候选要在稠密与稀疏目标(click / long-view / gift)下同时被评估。
因此两个任务需要不同的信息可见性(information visibility)和不同的优化方式(optimization methods)。简单共享所有参数会在"检索质量"与"排序精度"之间引发严重的跷跷板效应(seesaw effect)。
作者进一步总结现有尝试为什么不够:有些方法在生成之后追加一个轻量打分器,或在本质仍分离的模块间传递表征;有些共享 Transformer encoder 或统一输入格式,但保留了任务特定的计算路径。这些改善了跨阶段协作,但生成出的 SID 轨迹和细粒度排序特征仍未被组织进同一条序列做层级交互。结果是排序要么消费一个压缩后的"生成后表征",要么需要额外的特征融合网络,而用户上下文可能仍被冗余处理。
关键挑战因此不是"共享一个 encoder 或一个 loss function",而是构造一条单一序列,在前向传播中提供表征耦合,同时在两个目标之间维持优化隔离(optimization isolation)。
三点核心贡献¶
- 提出单序列统一视角:通过把用户上下文、SID 轨迹、item 特征组织进一条 decoder-only 序列,把召回的决策过程(而不仅是它的离散候选输出)转成一座通往排序的表征桥梁,实现层级(layer-wise)的排序特征交互;
- 设计 UniR²,含 DQ-PCA(Dual-Query Prefix-Causal Attention)与 LoRA-balanced 优化隔离:在前向表征学习中耦合两任务,同时阻止排序梯度污染自回归召回骨干,并通过共享上下文计算支持高效的单服务推理部署;
- 在大规模工业数据上做了充分实验,UniR² 在生成式召回与多目标排序上同时优于已部署 baseline,并在快手真实业务的线上 A/B 中取得显著收益。

(注:论文的 Figure 1 为首页对比示意图,未被图片抽取脚本覆盖;上图为 Figure 2 的整体架构,见下节详述。)
相关工作¶
生成式推荐:把序列推荐重述为"条件于用户历史交互序列的 SID 预测与生成"任务,从用户上下文直接做层次化搜索到海量候选,而不必逐个给全语料打分,天然适配工业级大规模召回。该范式由 TIGER 用 item tokenizer + encoder-decoder 架构确立,后被 OneRec 系列扩展,引入强化学习做个性化偏好对齐。但简单的自回归生成 + beam search 并不能完全覆盖"生成候选的需求"与"探索更高价值候选"两件事。PROMISE 引入 process reward model 对中间生成路径做细粒度评估;RankGR 用轻量打分模型精修候选;V-Star 用结构化采样策略把搜索聚焦在关键 SID 分支。作者的批评是:这些方法本质上仍依赖单一偏好信号,没有显式建模排序阶段所需的候选多目标分数。
Transformer 排序模型:工业排序长期依赖多任务塔架构(MMoE、PLE、HoME),靠人工设计的特征交互机制(DCN、DIN)取得性能。但用独立网络从不同视角建模用户兴趣,常导致异构信息之间只有浅层交互、计算图碎片化、模型容量难以 scaling。近年受 Transformer 启发,工业排序模型开始把离散字段、上下文特征、用户行为序列统一表示为 token,用多层注意力同时完成跨字段特征交互与兴趣建模。OneTrans 用一个 Transformer 骨干联合建模序列特征与非序列特征;MixFormer 在共享参数空间里 co-scale 稠密特征交互与序列建模;SORT 从系统级优化显著提升 Transformer 排序的计算效率;TokenFormer 处理序列表征坍缩问题。但这些方法只在排序阶段运行。
统一召回与排序:这是一条正在成型的工业相关研究方向,从目标对齐逐步演进到模型与计算流水线的参数共享。RankGR 引入候选打分模块联合优化生成式召回与稀疏参数,但两阶段在模型层面仍分离,本质是把两阶段映射到同一表征空间。OnePiece 把统一 tokenized 输入、Transformer 架构、上下文推理同时应用到召回和排序。OneRanker 通过生成与排序之间的 key/value 传递 + 分布一致性约束实现粗到细的协同优化。UniPinRec 通过共享 Transformer 统一输入格式与模型训练。作者的定位是:已有方法典型地依赖"生成后打分"或"跨模块信息传递",尚未把 SID 轨迹与细粒度排序特征组织进同一条序列做层级交互;UniR² 在共享骨干的同时,把用户上下文编码、SID 生成轨迹、特征交互整合进一条 decoder 序列,在 token-序列层面和 层级计算层面同时实现统一。
Preliminary¶
设 $\mathcal{U}$、$\mathcal{V}$ 为用户与物品集合。每个用户 $u \in \mathcal{U}$ 关联个性化画像与多条异构行为历史序列。每个物品 $v \in \mathcal{V}$ 由一组原始特征描述,其中包含语义 ID:
$$s_v = \{q_1, q_2, \ldots, q_L\}$$
$q_l$ 是第 $l$ 层的码字。本文场景采用 Res-Kmeans,$L = 3$ 层,码本大小 8129。对每个观测到的交互对 $(u, v)$,收集多目标标签向量 $\mathbf{y} = (y_1, y_2, \ldots, y_T) \in \{0,1\}^T$(如 click、long-view、gift),表示对应行为是否发生。
生成式召回任务学习一个条件于用户侧上下文的 SID 自回归分布:
$$p_\theta(s_v \mid u) = \prod_{i=1}^{L} p_\theta\big(q_i \mid u, q_{<i}\big) \tag{1}$$
训练用 NTP(next-token prediction)损失,serving 时用 beam search。
多目标排序任务学习给定 $(u,v)$ 的逐目标概率,即打分函数:
$$\hat{y} = f_\phi(u, v) \in [0,1]^T \tag{2}$$
其第 $t$ 个坐标 $\hat{y}_t$ 估计 $P(y_t = 1 \mid u, v)$。ranker 的训练基于多目标 BCE 损失。
传统级联方法用独立参数集 $\theta$ 与 $\phi$ 实例化两个任务,并把生成任务产出的候选列表传给排序任务做多目标估计。本文研究的替代表述是:学习一个由 $\Theta$ 参数化的单模型,在流水线的一个阶段内同时产出生成分布与排序分数——候选与其对应分数在一次服务前向中得到。
核心方法:UniR² 架构¶
UniR² 是一个把生成式召回与多目标排序统一进一条序列的单一 decoder-only Transformer,最大化模型复用、最小化计算冗余。输入是一条精心编排的异构 token 序列,同时涵盖用户侧与物品侧信息;不同 segment 的输出分别服务于生成与排序任务。

4.1 统一序列构成(Unified Sequence Composition)¶
对每个可观测的 $(u,v)$ 交互对,训练期所有相关特征都可得。因此把它们组装成一条统一序列 $\mathcal{S} = [\mathcal{P} \,\|\, \mathcal{T}_{\text{gen}} \,\|\, \mathcal{T}_{\text{rank}}]$,拼接三组 token。
用户段 $\mathcal{P}$。把用户侧信息视作一组异构的行为与画像 block $\{\mathbf{x}_u^{(0)}, \mathbf{x}_u^{(1)}, \ldots, \mathbf{x}_u^{(K-1)}, \mathbf{x}_u^{(K)}\}$,其中 $\mathbf{x}_u^{(K)}$ 编码用户静态画像,$\mathbf{x}_u^{(b)}$($0 \le b \le K-1$)是行为类型 $b \in \{\text{Click}, \text{Long-View}, \text{Gift}, \ldots\}$ 下的变长交互历史序列。每个 block 投影到维度 $d$,并加上从类型嵌入表 $E_{\mathcal{P}} \in \mathbb{R}^{(K+1) \times d}$ 取出的自身类型嵌入:
$$\mathcal{P}_k = \text{Proj}_k\big(\mathbf{x}_u^{(k)}\big) + E_{\mathcal{P}}[k], \qquad \mathcal{P} = [\mathcal{P}_0; \mathcal{P}_1; \ldots; \mathcal{P}_{K-1}; \mathcal{P}_K] \tag{3}$$
由于 $\mathcal{P}$ 表示的是跨物品不变的用户侧稳定信息,它扮演一个共享记忆(shared memory)的角色,被每个下游 target token 读取——即一份共享的 key/value cache。这一点是后面 KV 复用的理论依据。
生成段 $\mathcal{T}_{\text{gen}}$。给定 target item $v$ 及其层次化 SID $s_v = (q_1, q_2, q_3)$,该段是生成式召回任务的 teacher-forced 输入:
$$\mathcal{T}_{\text{gen}} = \big[[\text{BOS}], e(q_1), e(q_2), e(q_3)\big] \tag{4}$$
其中 $e(\cdot)$ 是码本嵌入查表,$[\text{BOS}]$ 是可学习的特殊 token。$\mathcal{T}_{\text{gen}}$ 的第 $i$ 个位置在标准 NTP 模式下被训练去预测下一层码字 $q_i$。
排序段 $\mathcal{T}_{\text{rank}}$。SID 本身不足以充分刻画物品特性。因此在 $v$ 的 SID 之外,追加一组有序的 item 特征 token:
$$\mathcal{T}_{\text{rank}} = \big[e_1(v), e_2(v), \ldots, e_M(v)\big] \tag{5}$$
它从互补视角总结 $v$,如 item profile、内容嵌入、$(u,v)$ 交叉统计、上游先验。每个 $e_m(v)$ 由一个独立的轻量投影从其原始特征 block 产生,并被一个 position-type 嵌入平移。这些 token 充当可学习的 ranking query,其上下文化表征被作为充分的特征融合结果传给多目标排序塔。
因此完整输入单序列为:
$$\mathcal{S} = \Big[\underbrace{\mathcal{P}_0, \ldots, \mathcal{P}_{K-1}, \mathcal{P}_K}_{\text{User segment}} \,\Big\|\, \underbrace{[\text{BOS}], e(q_1), e(q_2), e(q_3)}_{\text{Generative segment}} \,\Big\|\, \underbrace{e_1(v), \ldots, e_M(v)}_{\text{Ranking segment}}\Big] \tag{6}$$
这种统一序列构成使召回与排序的目标被喂进同一个 decoder-only Transformer block,它们坐在同一个栈里,共享模型参数与不变内容的上下文记忆。
4.2 Dual-Query Prefix-Causal Attention(DQ-PCA)¶
Transformer 生成式召回或排序的朴素做法是在整条统一序列上施加因果自注意力。这在概念上直接,但计算浪费:
- 用户段通常远长于两个 target segment,强迫全序列在每一层都做注意力是高度冗余的;
- 两个 target segment 扮演不同角色——$\mathcal{T}_{\text{gen}}$ 遵循自回归任务、不能访问未来位置;$\mathcal{T}_{\text{rank}}$ 由同步添加的物品侧信息组成、可以互相可见。
为此 UniR² 引入 DQ-PCA,沿序列轴把两个目标分开,同时共享所有 base 注意力权重。
双查询与受限可见性。在每一层,block 用两个独立的 query 消费统一序列,二者可见性模式不同:
- 生成 query $Q^{\text{gen}}$ 携带 SID token $\mathcal{T}_{\text{gen}}$。与标准生成式召回一致,预测可能的 SID 只依赖用户侧上下文,因此 $Q^{\text{gen}}$ 注意完整用户段及自身前序位置,实现一个 prefix-causal 模式:
$$Q^{\text{gen}} = [\mathcal{T}_{\text{gen}}], \qquad K^{\text{gen}} = V^{\text{gen}} = [\mathcal{P}, \mathcal{T}_{\text{gen}}] \tag{7}$$
形式化地,以 $i \in [1, L]$ 索引 SID query 位置、$j \in [1, |\mathcal{P}| + L]$ 索引 key 位置,注意力 mask 为:
$$\mathbf{M}^{\text{gen}}_{i,j} = \begin{cases} 0, & j \le |\mathcal{P}| \ \text{ 或 } \ |\mathcal{P}| < j \le |\mathcal{P}| + i, \\ -\infty, & |\mathcal{P}| + i < j \le |\mathcal{P}| + L. \end{cases} \tag{8}$$
- 排序 query $Q^{\text{rank}}$ 携带物品侧特征 token $\mathcal{T}_{\text{rank}}$。由于统一序列的每个元素原则上对打分都有信息量,双向自注意力是特征融合最具表达力的选择。但考虑到长用户历史已经在生成阶段被摊销(amortized),而 GSU 式(SIM)的序列检索信号已经被编码进 $\mathcal{T}_{\text{rank}}$ 内部,因此 $Q^{\text{rank}}$ 丢弃用户段中的历史部分,只保留用户画像 $\mathcal{P}_K$:
$$Q^{\text{rank}} = [\mathcal{T}_{\text{rank}}], \qquad K^{\text{rank}} = V^{\text{rank}} = [\mathcal{P}_K, \mathcal{T}_{\text{gen}}, \mathcal{T}_{\text{rank}}] \tag{9}$$
加性 mask 在受限范围内一律为零(即全可见的双向注意力):
$$\mathbf{M}^{\text{rank}}_{i,j} = 0, \qquad \forall i \in [1, M],\ j \in \big[1, |\mathcal{P}_K| + L + M\big] \tag{10}$$
可以观察到:prefix 用户段中的个性化身份信息被两个 query 共同读取,避免了单次前向内的冗余计算;同时排序段注意到 target item 对应的完整生成轨迹,因此排序输出总是产生自一个"已经把对应 target 的召回决策过程纳入其中"的表征。作者据此宣称 UniR² 是一个真正统一的模型,而不是"两个共用同一 encoder 的共址子模型"——表征耦合是由构造保证的(by construction)。
权重共享。与常规 decoder-only 架构类似,UniR² 的每个 block 由注意力机制与前馈网络组成。前者基于多头注意力,用 DQ-PCA 为不同目标构造输入:
$$O = \text{MultiHead}(W_q Q,\, W_k K,\, W_o V)\, W_o \tag{11}$$
(按原文照录;$W_q, W_k, W_o, W_o \in \mathbb{R}^{d \times d}$,第三个投影按语境应为 value 投影 $W_v$,疑为原文笔误。)这些 base 投影在两个分支之间、以及跨所有 memory partition 共享。
对应不同 query 的输出随后被送进任务特定的前馈块 $\text{FFN}_{\text{gen}}$ 与 $\text{FFN}_{\text{rank}}$,从而在每一层为两个目标建立层级语义屏障。堆叠 $N$ 层这样的 block,得到召回头的 $\mathbf{h}^{\text{gen}} \in \mathbb{R}^{L \times d}$ 与排序头的 $\mathbf{h}^{\text{rank}} \in \mathbb{R}^{M \times d}$。这样,架构完整保留了共享骨干与单次前向的不变性,二者共同构成统一的基础。
4.3 生成式召回分支¶
生成分支把生成隐状态 $\mathbf{h}^{\text{gen}}$ 转成层次 SID 码本上的分布。为让每个 SID 位置专精于自己的码本层级、同时仍共享 Transformer 主干,作者在前序隐状态之上挂 $L$ 个独立输出投影 $W_{\text{gen}}^{(1)}, \ldots, W_{\text{gen}}^{(L)} \in \mathbb{R}^{V \times d}$,预测下一层码字 $q_i$:
$$p_\Theta\big(q_i \mid u, q_{<i}\big) = \text{softmax}\big(W_{\text{gen}}^{(i)} \mathbf{h}_{i-1}^{\text{gen}}\big) \tag{12}$$
生成任务用加权交叉熵优化:
$$\mathcal{L}_{\text{gen}}(\Theta) = \sum_{i=1}^{L} \alpha_i \big[-\log p_\Theta(q_i \mid u, q_{<i})\big] \tag{13}$$
权重满足 $\alpha_1 \ge \alpha_2 \ge \cdots \ge \alpha_L > 0$,因为越靠前的码字越能从更高维度决定生成物品的属性(层次 SID 的粗粒度层决定语义大类)。由于 $\mathcal{L}_{\text{gen}}$ 只用 $\mathbf{h}^{\text{gen}}$,其梯度只沿 $Q^{\text{gen}}$ 的注意力路径流动,永远不会到达物品侧组件。
4.4 多目标排序分支¶
排序分支用上下文化的排序隐状态 $\mathbf{h}^{\text{rank}}$ 估计候选物品的多个业务目标。由于推荐里的 ranking 模型期待多源互补信号作为输入,而 $\mathbf{h}^{\text{rank}}$ 只保留了 target-aware 的深度交互表征,因此作者额外注入原始用户与作者特征,防止浅层信号被平滑掉。此外还拼接最后一个 SID 位置的输出 $\mathbf{h}_L^{\text{gen}}$:尽管在生成任务里该位置的 ground-truth SID 对自回归计算是冗余的,但这个状态观测了完整生成轨迹,因而从一个不同于判别式表征的视角提供了 target 语义。最终喂给 ranker 的输入为:
$$z = \text{Concat}\big(u,\, v,\, \mathbf{h}_L^{\text{gen}},\, \mathbf{h}^{\text{rank}}\big) \tag{14}$$
向量 $z$ 送入 MMoE 模型,每个任务特定塔为目标 $t$ 输出 $\hat{y}_t$。整个 ranker 用 BCE 损失训练:
$$\mathcal{L}_{\text{rank}}(\Theta) = \sum_{t=1}^{T} \omega_t \cdot \text{BCE}(\hat{y}_t, y_t) \tag{15}$$
$\omega_t$ 是目标权重。
梯度纠缠(Gradient entanglement)。这样 UniR² 在一次前向、一条统一序列内完成了生成式召回与排序的双重预测。但若简单地把总训练目标定义为两任务之和:
$$\mathcal{L}(\Theta) = \mathcal{L}_{\text{gen}}(\Theta) + \mathcal{L}_{\text{rank}}(\Theta) \tag{16}$$
来自生成召回与排序的梯度会同时传播进共享参数,引发优化干扰。
一个直接的解法是在 ranking head 之前施加 stop-gradient:$\tilde{z} = \text{sg}(z)$。这阻断了 $\mathcal{L}_{\text{rank}}$ 反传进 Transformer 主干、保护了生成路径。但它也冻结了排序侧的特征融合——head 只能在一个主要为 SID 预测优化的表征之上学习。这往往会放大 seesaw 效应,因为更强的目标会主导 head,而更弱或更稀疏的目标无法自适应注意力层级的交互。
UniR² 因此保留 stop-gradient 以求安全,但额外加入一条只在排序路径上激活的可学习低秩通路。
LoRA-balanced 排序适配。作者把 LoRA 注入排序分支使用的注意力投影。base 投影 $W_q$、$W_k$、$W_o$ 与生成分支共享,但当它们被 ranking query 消费时,输出被解耦。形式化地,排序特定的适配由低秩残差矩阵承载:
$$\Delta W_X^{\text{rank}} = B_X^{\text{rank}} A_X^{\text{rank}}, \qquad X^{\text{rank}} = \text{sg}(WX) + \Delta W_X^{\text{rank}} X \tag{17}$$
其中 $X \in \{Q, K, V\}$ 是排序分支的输入,$B_X^{\text{rank}} \in \mathbb{R}^{d \times r}$、$A_X^{\text{rank}} \in \mathbb{R}^{r \times d}$ 是低秩参数。这些模块只在每一层的 ranking-view 注意力中生效。生成 query 仍使用原始 base 投影,永不激活 ranking LoRA 分支。也就是说,LoRA 被放在决定排序侧特征融合的 Q/K/V 投影上,既给 ranker 足够的自适应容量,又把 base 生成骨干与排序梯度隔离开。
一般地,可训练参数被分为生成、排序、共享稀疏嵌入三部分:
$$\Theta_{\text{gen}} \cap \Theta_{\text{rank}} = \varnothing, \qquad \Theta = \Theta_{\text{gen}} \cup \Theta_{\text{rank}} \cup \Theta_{\text{emb}} \tag{18}$$
$\Theta_{\text{gen}}$ 含 base Transformer 投影、生成 FFN、召回 heads;$\Theta_{\text{rank}}$ 含排序 LoRA 矩阵、排序侧 FFN 参数、多任务塔;$\Theta_{\text{emb}}$ 是被两个分支共享的稀疏嵌入。UniR² 因此在前向中保留表征耦合,在优化与模块上分离任务。
部署(Deployment)¶
5.1 训练策略¶
数据采样(Data sample)。主流生成式召回方法本质上是在线上曝光分布上做最大似然拟合,训练集只含曝光或正反馈样本,没有显式的判别式负样本。但 UniR² 内部的 ranker 与生成分支在同一次前向中联合训练,如果直接继承生成式召回的采样策略,每个 XTR 目标都会缺乏负对比,打分能力退化。
因此作者采用 target-adaptive masks 策略:进入模型的所有 $(u,v)$ 样本对 ranker 可见,但每个判别式目标使用独立的 sample mask,只在与该目标语义相关的子集上贡献 loss。这为同一 batch 内所有目标提供了充分对比。在 ranker 之上的完整样本流中,生成分支进一步做降采样,保留所有点击样本与随机曝光样本作为 GRM loss 的正样本,以保持召回侧对线上曝光分布的拟合语义。这两种采样策略共存于同一次前向,通过各自的 mask 控制参与 loss 的部分,从而平衡"排序所需的判别式对比"与"召回所需的分布拟合目标"。
两阶段训练(Two-Stage Training)。采用两阶段联合训练策略:
- 阶段一:只启用 Eq.(13) 的 GRM loss,得到一个分布拟合稳定的骨干;
- 阶段二:从该 checkpoint warm-start,在同一条序列上追加 ranker loss,按 Eq.(16) 联合训练。
设计动机是:ranker 的判别式输入依赖生成分支产出的 SID 表征。如果在 SID 语义还不稳定、仍在漂移的早期就引入 ranker,它会被大量噪声误导、形成错误的决策边界,造成负迁移。两阶段设计因此在优化空间中解耦了分布拟合与判别式对齐,为多任务学习施加了一种 curriculum prior(课程学习先验)。
5.2 推理流水线¶

在常规工业推荐系统中,用户请求先由召回从全语料检索数百个候选;候选级特征抽取后,一个独立的排序模型评估每个 user-item 对并产出多目标分数。在召回与排序之间,生成的候选还要经过商业策略的复审、去重、内容过滤才能传给下游。这条流水线在 CPU 与 GPU 之间来回切换:特征抽取与服务编排主要在 CPU,召回与排序模型的前向在 GPU。由于召回与排序被部署为独立服务,排序阶段需要重建用户上下文并执行另一次完整的模型前向,引入冗余的用户侧计算、跨服务数据传输、额外的调度开销。
UniR² 用单个 serving 实例替换级联的召回与排序模型。给定用户请求,服务先抽取用户画像与历史行为特征,再执行自回归 SID 生成。召回期间,用户 prefix 的 key/value 表征以及每个候选 $v$ 的 SID 生成轨迹对应的 KV 状态被存进 GPU KV cache:
$$\mathcal{C}_{u,v} = \big\{K_\ell(\mathcal{P}), V_\ell(\mathcal{P})\big\}_{\ell=1}^{N} \cup \big\{K_\ell(\mathcal{T}_{\text{gen}}^v), V_\ell(\mathcal{T}_{\text{gen}}^v)\big\}_{\ell=1}^{N} \tag{19}$$
$N$ 为 Transformer 层数。
召回之后,CPU 抽取被检索候选的 item 侧属性;这些属性被投影成 ranking token 并追加到已缓存的统一序列。因此 ranking query 可以直接注意到缓存的用户上下文与对应 SID 轨迹,而无需重算任一 segment。候选排序阶段只需计算新追加的 item 特征 token 与排序特定的 LoRA 路径。此外,由于排序侧是全视野(full view),不需要自回归,只需一次序列计算。
并行化调度。一个直接实现会顺序执行"召回 → 策略过滤 → 排序"。但在作者的生产场景中,外部策略服务的耗时长于 UniR² 排序前向,顺序执行会抵消模型统一带来的延迟收益。为避免这一冗余,UniR² 把召回候选集复制(duplicate)并分发给两条并行分支:策略分支把候选属性传给过滤服务、产出每个候选的二值 filter flag;排序分支抽取 item 侧特征、在一次 batched GPU 前向中计算所有候选的多目标分数。排序完成后只需等待 filter flag,移除违反策略约束的候选——排序计算被完全隐藏在策略延迟之后。
这种单服务部署同时消除了重复的用户上下文计算、为排序保留了召回轨迹、并把模型推理与外部策略执行重叠起来。
实验设置¶
论文围绕三个研究问题展开:
- RQ1:统一模型相比召回与排序 baseline 表现如何?
- RQ2:所提关键结构组件对整体模型性能的贡献如何?
- RQ3:统一模型在线上服务中的表现如何?
数据集。基于快手 App 直播平台的大规模工业日志评测。数据集含 4 亿用户、300 万作者,以及它们之间的数十亿次多样交互。生成式召回任务主要用曝光(show)与点击(click)记录做测试。多目标排序任务主要报告 click、long-view、gift 三个核心目标,对应通过率记为 CTR / LVTR / GTR。
评估指标。召回侧用 Accuracy(ACC)、Hit Rate(HR)、Mean Reciprocal Rank(MRR);排序侧用 AUC、UAUC(user-grouped AUC)。
Baseline。召回任务对比两组:
- 传统召回:长序列模型 KuaiFormer、图结构模型 GNN(即 LightGCN 系);
- 生成式方法:OneRec、OneLive,以及高效解码框架 NEZHA 和 process reward 模型 PROMISE。
需要注意:后两个 baseline(NEZHA、PROMISE)与 UniR² 都是基于 OneLive 改造的,因此对比是同骨干下的公平比较。
排序任务的 baseline 是一个 MMoE 式多目标排序模型 HoMe,配传统特征融合,已在快手平台线上部署并作为平台基础。作者直接与线上生产模型对比。
主要实验结果¶
6.2.1 召回性能(Table 1)¶
Table 1: 直播离线数据集上不同模型的整体召回性能对比(加粗为最优,下划线为次优,Imprv.↑ 为相对提升)
| Models | Show HR@64 | Show MRR@64 | Show HR@128 | Show MRR@128 | Click HR@64 | Click MRR@64 | Click HR@128 | Click MRR@128 |
|---|---|---|---|---|---|---|---|---|
| KuaiFormer | 0.4176 | 0.1328 | 0.4907 | 0.1337 | 0.4479 | 0.1499 | 0.5164 | 0.1507 |
| GNN | 0.4552 | 0.1532 | 0.5269 | 0.1540 | 0.5463 | 0.1941 | 0.6197 | 0.1949 |
| OneRec | 0.6844 | 0.3224 | 0.7261 | 0.3230 | 0.7494 | 0.3987 | 0.7789 | 0.3992 |
| OneLive | 0.7177 | 0.3254 | 0.7742 | 0.3260 | 0.7799 | 0.4046 | 0.8284 | 0.4051 |
| NEZHA | 0.7244 | 0.3221 | 0.7794 | 0.3228 | 0.7848 | 0.4062 | 0.8312 | 0.4067 |
| PROMISE | 0.7329 | 0.3391 | 0.7874 | 0.3396 | 0.7932 | 0.4286 | 0.8416 | 0.4289 |
| UniR² | 0.7662 | 0.3506 | 0.8114 | 0.3563 | 0.8309 | 0.4441 | 0.8741 | 0.4516 |
| Imprv.↑ | +4.54% | +3.39% | +3.05% | +4.92% | +4.75% | +3.62% | +3.86% | +5.29% |
结论分析。UniR² 一致地超过传统与生成式两类召回 baseline,说明统一序列表述并未牺牲模型的 SID 生成能力。作者把提升归因于两个因素:
- 精心设计的注意力机制让召回分支的 SID 能通过 prefix-cross attention 有效感知历史交互编码的丰富用户兴趣表征;
- 双分支设计解耦了模型参数的梯度,缓解了排序目标对生成能力的冲突性影响。
同时,保留的共享嵌入仍让浅层信号从正-负样本对比中获得细粒度优化,这可能进一步解释了生成式召回性能的大幅提升。
值得注意的是:生成式方法(OneRec 0.6844)相比传统方法(GNN 0.4552)在 Show HR@64 上就有 +50% 的巨大跨越,说明在快手直播场景生成式召回范式本身已经确立优势;UniR² 是在这个高基线上再取得 3-5% 的提升。
6.2.2 排序性能(Table 2)¶
Table 2: UniR² 与线上 baseline 在直播离线数据集上的整体排序性能对比
| Models | CTR AUC | CTR UAUC | LVTR AUC | LVTR UAUC | GTR AUC | GTR UAUC |
|---|---|---|---|---|---|---|
| Base | 0.8450 | 0.6635 | 0.8994 | 0.7591 | 0.9541 | 0.6589 |
| UniR² | 0.8513 | 0.6731 | 0.9096 | 0.7623 | 0.9556 | 0.6601 |
| Imprv.↑ | +0.75% | +1.45% | +1.13% | +0.42% | +0.16% | +0.18% |
结论分析。UniR² 在稀疏目标(gift,GTR)与稠密目标(click/long-view)上都提升了 XTR 预测性能,表明共享的 decoder-only 序列架构可以充当有效的特征融合骨干。作者强调排序模块不是被动地复用生成骨干——它通过 LoRA 适配保留了排序特定的特征交互。此外,统一设计还从生成的 SID 轨迹中获得一个额外的 target-aware 语义视角,补充了原始 ranking 特征,同时保留排序所需的判别式对比。
需要注意排序侧的相对提升幅度(0.16%~1.45%)远小于召回侧。在工业排序中 AUC +0.75% 已属可观(通常 +0.1% AUC 即有线上意义),但 GTR 的 +0.16% / +0.18% 说明稀疏目标上的增益相当有限。
总体上,离线结果验证了 UniR² 在生成式召回与多目标排序上的双向有效性:它取得了更强的候选检索质量,同时改善了 XTR 预测性能。这表明共享的 decoder-only 序列架构可以在单个模型内同时集成"生成的分布拟合"与"排序的对比驱动"。
消融与深入分析(RQ2)¶
6.3.1 组件消融(Table 3)¶
Table 3: 不同组件消融下的整体性能对比
| Branch | Variants | $\mathcal{L}_{gen}$ ↓ | HR@1 ↑ | ACC@all ↑ | $\mathcal{L}_{rank}$ ↓ | AUC@CTR ↑ | AUC@GTR ↑ | Params | FLOPs |
|---|---|---|---|---|---|---|---|---|---|
| — | UniR² | 6.8260 | 0.1826 | 0.6249 | 5.9528 | 0.8450 | 0.9541 | 75M | 9.37G |
| Recall | w. lazy decoder-only | +0.92% | -1.92% | -0.46% | — | — | — | 74M | 7.42G |
| Recall | w. causal self-attention | -0.89% | +2.85% | +0.46% | — | — | — | 75M | 45.09G |
| Ranking | w/o. DQ-PCA & sg | +30.10% | -44.39% | -10.57% | -3.83% | +3.97% | +5.82% | 72M | 7.43G |
| Ranking | w/o. history discard | +0.01% | +0.00% | -0.01% | -0.34% | +2.38% | +2.87% | 75M | 15.39G |
| Ranking | w/o. LoRA | -0.02% | +0.01% | +0.04% | +7.05% | -13.79% | -31.29% | 75M | 9.27G |
(注:UniR² 行的 AUC@CTR 0.8450 / AUC@GTR 0.9541 与 Table 2 的 Base 行数值完全一致,疑为原文排版笔误。)
逐项分析:
-
生成分支:baseline 中的 lazy decoder-only 架构把用户历史编码与 SID 生成解耦,导致计算图碎片化、表征共享缺失(HR@1 -1.92%)。而应用全序列因果自注意力只带来有限提升(HR@1 +2.85%)却引入显著更高的计算成本(FLOPs 从 9.37G 暴涨到 45.09G,约 4.8×)。相比之下 UniR² 通过 prefix-cross attention 取得了更有利的效果-效率权衡:它提供了对历史兴趣的充分访问,而不必在每一层稠密编码整个用户历史序列。
-
排序分支:移除 DQ-PCA 与梯度截断(w/o. DQ-PCA & sg) 会让模型在长时间联合训练后强烈偏向排序——排序指标显著改善(AUC@CTR +3.97%、AUC@GTR +5.82%),但生成性能崩塌(HR@1 -44.39%、$\mathcal{L}_{gen}$ +30.10%)。作者把这归因于两任务之间的优化不对称:排序被多个稠密判别式目标监督、能提供更频繁的梯度,而 SID 生成是一个需要保持 token 级语义一致性的结构化自回归任务。没有 dual-query 可见性控制与 stop-gradient 隔离,排序梯度会直接重塑共享注意力表征,让骨干越来越为判别式打分优化,而不是稳定的 SID 生成。这是全文最重要的一组数据——它定量证明了"简单共享参数会导致严重跷跷板效应"这一动机判断。
-
丢弃长历史序列(w/o. history discard):为 ranking query 保留长历史会大幅增加 FLOPs(9.37G → 15.39G,+64%),但只带来排序性能上的轻微退化补偿(AUC@CTR +2.38%、AUC@GTR +2.87%——注意这里"w/o." 是指不做丢弃,即保留历史,排序指标确实更好,但代价是 64% 的算力)。这说明排序分支不需要反复注意完整用户历史:生成的 SID 轨迹已经把用户-物品匹配过程从召回分支中浓缩出来,而 item 侧序列特征(如 GSU 结果)进一步总结了相似兴趣。因此注意 SID 轨迹 + 紧凑的排序特征就足以完成特征融合。
-
LoRA 的作用(w/o. LoRA):LoRA 被设计为在优化隔离之下提供排序特定的适配容量。梯度截断保护了生成骨干,但也冻结了 ranker 可用的注意力层级特征交互。只在 ranking-view 的注意力投影上加低秩残差路径,UniR² 就让 ranker 学到任务特定的特征融合,而无需修改 base 生成参数,且只引入很小的参数量与计算量(FLOPs 9.27G → 9.37G,仅 +1%)。移除 LoRA 的影响极其剧烈:AUC@CTR -13.79%、AUC@GTR -31.29%、$\mathcal{L}_{rank}$ +7.05%。其对 gift 这类稀疏目标的影响尤为显著(-31.29% 远大于 CTR 的 -13.79%),印证了"弱/稀疏目标最需要自适应特征交互能力"的判断。
6.3.2 注意力分析¶
作者在中间层可视化了统一序列中召回 query 与排序 query 对应的注意力权重(原文 Figure 4,含 (a) Attention Weights of Recall、(b) Attention Weights of Ranking w/o. LoRA、(c) Attention Weights of Ranking w. LoRA 三张热力图;该图未被图片抽取脚本覆盖)。
- 生成式召回:SID query 强烈注意行为 prefix。这与层次化生成过程一致——历史行为总结相似兴趣,画像特征提供稳定的个性化先验,而先前生成的 SID token 约束下一个码字的语义。
- 排序侧对比:没有 LoRA 时,从召回导向的 base 投影继承来的注意力相对弥散,把大量质量放在 author 特征上。启用排序特定 LoRA 后,分布变得明显更尖锐,集中在用户画像与生成轨迹周围。ranker 因此学会强调已被召回过程蒸馏出来的 target-aware 用户-物品匹配信号,而不只是复用一个为 SID 预测学到的通用表征。
这验证了两点:生成轨迹确实充当了有效的表征桥梁;LoRA 在不扰动生成骨干的前提下恢复了排序特定的特征融合。
6.3.3 统一架构的 Scaling¶
统一架构背后的一个关键直觉是:召回与排序目标都能从 scaling 共享骨干中获益。作者做了深度与宽度的 scaling 实验。

- 深度(Num of Layers 2 → 4):HR@1 提升接近 +6%,AUC@GTR 约 +4.4%,AUC@CTR 约 +1.6%,ACC@all 约 +1.6%;
- 宽度(Hidden Dimension 128 → 1024):HR@1 提升约 +11.5%,AUC@GTR 约 +9.4%,ACC@all / AUC@CTR 约 +6%。
深度与宽度的 scaling 都带来生成与排序能力的实质提升,验证了 UniR² 的强可扩展性。值得注意的是:更大的统一骨干同时增强了分布拟合与判别式预测,而没有在二者之间引入不平衡的 trade-off——这说明优化隔离机制可能防止了额外的共享容量被单一任务垄断。
但提升也表现出明显的边际递减。因此线上服务最终选择 layer = 3、hidden dimension = 640,在模型性能与资源消耗之间取平衡。
6.3.4 推理延迟¶
作者对比了线上流水线与 UniR² 的端到端延迟拆解(Figure 6):
| 阶段 | Baseline(级联) | UniR² |
|---|---|---|
| Init | 6.58% | 14.39% |
| GR Recall / Recall | 9.09% | 21.36% |
| Strategy | 20.76% | 45.43% |
| Ranking | 54.97% | 36.03%(与 Strategy 并行) |
| Post | 8.60% | 18.82% |
| 端到端推理时间 | 基准 | -54.29% |
在 baseline 中,召回与排序由两个独立模型执行,排序阶段主导了整体推理时间(54.97%)。配上重复的初始化、特征准备、跨流水线信息传递,造成冗余的时间与资源消耗。UniR² 则为两个任务复用同一份用户上下文与 decoder-only 架构,在生成的 SID 轨迹之后追加排序所需的特征融合。因此,复用缓存表征大幅降低了整体流水线延迟。此外,精心设计的并行化策略与排序调度进一步降低端到端推理时间——注意在 UniR² 的分解里 Ranking(36.03%)是藏在 Strategy(45.43%)之内并行执行的。
这个结果表明:统一不仅带来表征与目标上的一致性,也通过消除冗余计算、在既有流水线调度内隐藏排序延迟,带来具体的 serving 优势。
线上 A/B 实验(RQ3)¶
为评估真实业务影响,UniR² 被部署到快手 App与快手极速版(Kuaishou Lite App)的直播服务。UniR² 同时替换了基于 OneLive 的召回模型与已部署的生产预排序模型——这两者共同构成级联式 baseline。线上 A/B 于 2026 年 6 月启动,持续两周,暴露于 5% 的线上流量。
快手 App:
- 播放量(play volume)+1.177%
- 关注率(follow rate)+0.655%
- 点赞率(like rate)+2.560%
快手极速版:
- 送礼用户数(number of gifting users)+0.717%
- 送礼意愿(gifting intention)+1.567%
- 送礼总金额(total gifting amount)+2.569%
跨多种行为指标的一致正向提升表明 UniR² 能在单个模型内既检索出合适的候选、又产出高质量的 user-item 对分数。这些线上收益进一步验证了在大规模工业推荐系统中统一召回与排序的实用性与有效性。
核心贡献总结¶
- 单序列统一视角:把用户上下文、SID 生成轨迹、item 排序特征组织进一条 decoder-only 异构序列,让召回的决策过程(而非仅其离散输出)成为通往排序的表征桥梁。这是与"共享 encoder / 生成后打分 / 跨模块传递表征"路线的本质区别。
- DQ-PCA:用双 query + 差异化可见性 mask,在同一层内同时满足生成的前缀因果性与排序的全视野双向性,且共享全部 base 注意力权重;排序 query 丢弃长历史只保留用户画像,用 SID 轨迹替代重复的历史编码。
- LoRA-balanced 优化隔离:stop-gradient 保护生成骨干 + ranking-view Q/K/V 上的低秩残差恢复排序适配能力,以 +1% FLOPs 的代价换回 AUC@GTR +31% 的相对收益(相对 w/o. LoRA)。
- 单服务推理:KV cache 复用 + 策略/排序并行调度,端到端推理时间 -54.29%。
- 工业验证:4 亿用户规模离线实验 + 快手双端两周线上 A/B 一致正向。
与已归档相关工作的对比¶
UniSGR UniSGR: Unified Framework for Semantic ID Generation and Ranking (Alibaba AIDC / Lazada, 2026-07-05)¶
关系:独立并发(本文未引用 UniSGR,两者殊途同归,相隔仅 3 周)· 已加载对方精读
- 共同关注的问题:两篇论文的问题陈述几乎逐句同构——生成式检索擅长在海量物品里生成语义相关候选,但天生缺乏工业排序所需的细粒度多目标判别力;在生成器后简单接一个判别式 ranker,会重新引入"生成器优化候选可信度、排序器在被截断的候选集上优化最终收益"的目标错位。两者都把 root cause 指向级联边界处的表征割裂 + 优化目标割裂,而非某个具体任务指标不够好。
- 相近的技术骨架:都主张"把多目标排序模块长在生成骨干之上,共享同一套 SID 表示与 decoder 隐状态,一次前向同时出候选与多目标分";都把 KV cache 复用作为统一带来的推理红利(UniSGR 的 STARK 序列维树注意力 KV-cache 提速 ~200%,UniR² 的用户 prefix + SID 轨迹 KV 缓存让端到端延迟 -54.29%);都在多个业务目标(UniSGR:click/atc/pay;UniR²:click/long-view/gift)上做统一优化。
- 本文的差异与推进:(a) 架构底座不同——UniSGR 是 MoE encoder-decoder,UniR² 是纯 decoder-only 单序列,后者把 user context / SID trajectory / item feature 拼成一条序列,统一发生在 token-序列层面 + 层级计算层面;UniSGR 的排序模块仍是"attach 在 decoder 之上",更接近共享表征而非同序列共存。(b) 对齐手段不同——UniSGR 靠 VA-PMTP(价值感知并行多 token 预测)+ Task-Aware Tokens + Funnel-Aware 对比学习把生成对齐到业务价值,本质是在目标函数上做价值注入;UniR² 则聚焦可见性与梯度的结构性隔离(DQ-PCA + stop-gradient + ranking-only LoRA),本质是在架构上做任务解耦。(c) UniR² 明确量化了"不做隔离会怎样"(w/o. DQ-PCA & sg:HR@1 -44.39%),这是 UniSGR 没有正面回答的问题。
- 可比的方法/实验差异:UniSGR 用两阶段"多场景预训练 + 场景特定对齐",UniR² 也用两阶段(先 GRM-only 稳定 SID 分布,再 warm-start 联合训练),两者对"排序必须等生成表征稳定后再引入"的判断一致,可视为该范式的独立复现证据。业务场景上 UniSGR 是跨境电商(Lazada,+5.68% GMV),UniR² 是直播短视频(快手,play +1.177% / 送礼额 +2.569%),场景互补。
UniPinRec UniPinRec: Unifying Generative Retrieval and Ranking at Pinterest Scale (Pinterest, 2026-05-29)¶
关系:显式引用([12]),但原文仅在 related work 用一句话带过("unifies input formats and model training by sharing a Transformer"),无方法层或指标层对比 · 已加载对方精读
- 共同关注的问题:都把"检索与排序都在从同一份用户行为数据里学表征,却无法共享参数、无法跨阶段迁移信号"当作 root cause,并把用户历史被重复编码列为最直接的低效来源。UniPinRec 把目标称作 full-stack unification(输入格式 / 模型 / 训练 / serving 四维统一),UniR² 的表述是 token-序列 + 层级计算双重统一,两者措辞不同但靶心一致。
- 相近的技术骨架:都用一个因果 decoder-only 骨干 + 定制注意力 mask同时承载检索目标与逐候选判别目标;都用候选之间互不可见的块稀疏 mask 把注意力成本从 $O((n+k)^2)$ 降到 $O(n^2+nk)$;都用跨阶段 KV-cache 共享让排序复用检索算好的用户历史(UniPinRec 的跨 Triton 进程 KV 共享带来 >3× 排序前向加速、e2e -11.1% 延迟 / +63.6% QPS;UniR² 的 GPU KV cache 带来 -54.29% 端到端推理时间)。
- 本文的差异与推进:(a) 候选表征形式不同——UniPinRec 基于 PinRec,item 用预训练稠密嵌入(Omnisage + CLIP),检索靠 ANN 点积,没有 SID 自回归轨迹;UniR² 的核心恰恰是让层次 SID 生成轨迹本身成为排序可读的表征桥梁($\mathbf{h}_L^{\text{gen}}$ 被显式拼进 ranker 输入),这是 UniPinRec 结构上不存在的通路。(b) 排序监督注入方式不同——UniPinRec 用 Masked Action Modeling:动作沿特征维与 item 嵌入拼接并随机 mask,不膨胀序列长度;UniR² 则追加一段独立的 ranking token 序列 $\mathcal{T}_{\text{rank}}$ 作为可学习 ranking query。(c) 优化隔离的力度不同——UniPinRec 直接用 $\mathcal{L}_{item} + \mathcal{L}_{action}$ 联合损失做全参数共享,未做梯度隔离;UniR² 的消融恰恰表明不隔离会让生成侧崩掉 44%。这可能与两者的检索目标不同有关(sampled-softmax 对比 SID 自回归 NTP),但 UniR² 的数据提示:当召回侧是结构化自回归任务时,全参数共享的风险显著更高。
- 可比的方法/实验差异:UniPinRec 强调作为现有生产基础设施的 drop-in 替换、保留与既有候选源的可组合性与分阶段回滚能力;UniR² 直接用单服务实例替换掉"OneLive 召回 + 生产预排序"两个模型,工程上更激进。UniPinRec 线上收益 saves +0.95% / push opens +0.91%,UniR² 为 play +1.177% / like +2.560%,量级相当。两篇均未做互相的实证对比。
OneRanker OneRanker: Unified Generation and Ranking with One Model in Industrial Advertising Recommendation (Tencent, 2026-03-03)¶
关系:显式引用([19]),但原文仅一句话概括其机制("key/value transfer between generation and ranking, together with distribution-consistency constraints"),未做实验对比 · 已加载对方精读
- 共同关注的问题:OneRanker 把 "generate-then-rank" 架构的病灶总结为三重断裂(Triple Disconnection)——表示不一致(异构表示空间)、计算冗余(重复编码用户表示)、误差传播(生成阶段语义偏移无法在排序阶段校正)。这与 UniR² 的"目标不一致 / 表征损失 / 冗余计算"三重代价几乎是同一份清单,可视为对同一 root cause 的独立表述。
- 相近的技术骨架:都把生成阶段的 Key/Value 直接传给排序阶段作为统一的核心通路(OneRanker 的 G-Decoder 输出作为 Cross-Attention 的 K/V;UniR² 的 $\mathcal{C}_{u,v}$ KV cache 被 ranking query 直接注意);都用异构 mask 策略在同一个注意力栈里给不同任务不同的可见性(OneRanker 的 task token 因果掩码 + Heterogeneous Mask,UniR² 的 DQ-PCA);都强调排序应该获得 target-aware 的动态用户表示,而非静态的生成表征。
- 本文的差异与推进:(a) 统一的粒度不同——OneRanker 仍是三阶段串联(Generation → Multi-Task/Target-Aware → Ranking),G-Decoder 与排序 Decoder 是两个 decoder 通过 K/V 传递协作;UniR² 只有一个 decoder 栈,两个任务是同一条序列上的两组 query,统一发生在每一层内部。(b) 目标解耦手段不同——OneRanker 用 task token 序列(interest tasks + value-aware task)+ 独立输出空间做任务解耦,用 fake item token(物品空间 K-means 聚类中心)做粗粒度目标感知;UniR² 不引入额外 token 词表,而是靠 stop-gradient + ranking-only LoRA 在参数层面切分 $\Theta_{\text{gen}} \cap \Theta_{\text{rank}} = \varnothing$。(c) 业务目标不同——OneRanker 面向广告,核心张力是"兴趣覆盖 vs eCPM 商业价值";UniR² 面向直播内容分发,核心张力是"生成分布拟合 vs 多目标判别"。
- 可比的方法/实验差异:OneRanker 在腾讯微信视频号广告全量部署,UniR² 在快手直播 5% 流量两周 A/B。两者都没有公开学术数据集结果,无法直接对齐指标。OneRanker 额外引入了 Distribution Consistency Loss 做输出侧一致性约束,UniR² 没有对应机制——这是 UniR² 可以借鉴的一个缺口(UniR² 的生成与排序输出之间没有显式一致性约束,仅靠共享表征隐式对齐)。
讨论与局限性¶
值得借鉴的设计¶
-
"生成轨迹即表征桥梁"这个 framing 很有价值。级联架构的信息损失通常被理解为"候选被截断了",UniR² 指出更深一层的损失是生成过程中的中间语义状态被完全丢弃。把 $\mathbf{h}_L^{\text{gen}}$ 拼进 ranker 输入,本质是让排序读到"召回为什么选中这个候选",而不只是"召回选中了这个候选"。注意力可视化(LoRA 开启后排序注意力显著集中到画像与生成轨迹)为这一 framing 提供了经验支撑。
-
DQ-PCA 的可见性设计是一个可复用的原语。"同一层内用多个 query 消费同一份 KV,但每个 query 有自己的 mask + 自己的 FFN"是一种很轻的多任务解耦方式:它既避免了 interleaving 导致的序列膨胀,也避免了双塔式的完全隔离。特别是"排序 query 丢弃长历史、只留画像 + SID 轨迹"这一取舍,用 Table 3 的 FLOPs 数据(15.39G → 9.37G,-39%)证明了 SID 轨迹确实摊销掉了长历史编码。
-
stop-gradient + task-only LoRA 的组合是一个比"纯 stop-gradient"或"纯联合训练"都更好的中间点。纯 stop-gradient 会冻结排序侧特征融合,纯联合训练会让强目标吞掉弱目标——LoRA 用 +1% FLOPs 买回了排序适配能力,尤其救回了 gift 这类稀疏目标(w/o. LoRA 时 AUC@GTR -31.29%)。这个 pattern 可以推广到任何"强判别目标 + 弱结构化生成目标"共享骨干的场景。
局限与争议¶
-
完全没有公开数据集实验。所有结果都在快手内部直播数据上,无法被外部复现或横向比较。特别是召回 baseline 中 NEZHA、PROMISE、UniR² 都是在 OneLive 上改造的,这保证了同骨干公平性,但也意味着结论的适用范围被限定在 OneLive 这一具体实现上。
-
没有与并发的统一工作做实证对比。论文在 related work 提到了 OnePiece、OneRanker、UniPinRec、RankGR,但一个都没有进实验表。考虑到这些正是最直接的竞争路线,缺席削弱了"UniR² 的统一方式优于其他统一方式"这一隐含主张——论文实际证明的只是"UniR² 优于级联 baseline"。
-
排序侧增益偏小且不均衡。Table 2 的 GTR AUC 仅 +0.16%、UAUC +0.18%,而 CTR AUC +0.75%。稀疏目标本就最需要统一带来的额外信号,但恰恰在这里增益最小。这与消融中"LoRA 对 GTR 影响最大(-31.29%)"形成一个耐人寻味的张力:LoRA 对稀疏目标是必需品(没它就崩),但有了它也只是追平 + 微超线上 baseline。
-
表格数据存在疑点。Table 3 中 UniR² 的 AUC@CTR (0.8450) 与 AUC@GTR (0.9541) 和 Table 2 的 Base 行数值完全相同,而 Table 2 里 UniR² 的对应值是 0.8513 / 0.9556。这大概率是排版错误,但也让 Table 3 的相对提升百分比基准变得含糊。此外 Eq.(11) 的 $\text{MultiHead}(W_qQ, W_kK, W_oV)W_o$ 明显把 value 投影写成了 $W_o$。
-
线上验证规模有限。5% 流量、两周。对于一个要替换掉召回 + 预排序两个核心模型的架构改动,这个暴露量偏小,长期稳定性、冷启动影响、对下游精排/重排的连锁效应都未被讨论。论文标题中的 "Long-term online A/B tests" 与正文的 "lasted for two weeks" 之间存在表述落差。
-
scaling 结论的适用边界。Figure 5 显示深度只测到 4 层、宽度只测到 1024,且已呈明显边际递减;线上最终选择 3 层 / 640 维。这个规模远小于 OneRec 系列等生成式推荐系统的容量,因此"统一架构能一起 scaling"的结论只在小规模上被验证过。当骨干进一步放大时,DQ-PCA 的 stop-gradient 隔离是否还能防止单一任务垄断容量,仍是开放问题。
-
缺少输出侧一致性约束。与 OneRanker 的 Distribution Consistency Loss 相比,UniR² 的生成与排序之间只有前向表征耦合,没有显式约束"生成分布"与"排序打分"在语义上一致。理论上可能出现生成分支高置信生成的候选被排序分支打低分的情况,论文未讨论这种不一致的频率与影响。
工业落地价值¶
这篇论文的工程细节相当扎实,落地价值明确:
- serving 架构:单实例替换级联的两个服务,端到端推理时间 -54.29%。关键的工程 insight 是"外部策略服务耗时长于排序前向",因此把候选集复制后并行跑策略过滤与排序,把排序计算完全藏在策略延迟之后——这是一个不改模型也能立刻复用的调度技巧。
- KV cache 设计:$\mathcal{C}_{u,v}$ 同时缓存用户 prefix 与每个候选的 SID 生成轨迹,排序只需算新追加的 item token + LoRA 路径,且不需要自回归、只需一次序列计算。
- 训练工程:target-adaptive mask 让所有 $(u,v)$ 对 ranker 可见(保证判别对比),同时生成分支降采样只保留点击 + 随机曝光正样本(保持召回侧对线上曝光分布的拟合语义)——两套采样策略共存于同一次前向、靠 mask 分流,这是把"召回数据集"与"排序数据集"合一的关键做法。
- 业务收益:快手 App play +1.177% / follow +0.655% / like +2.560%;快手极速版送礼用户 +0.717% / 送礼意愿 +1.567% / 送礼金额 +2.569%。