MPFormer: Adaptive Framework for Industrial Multi-Task Personalized Sequential Retriever

基本信息

字段 内容
标题 MPFormer: Adaptive Framework for Industrial Multi-Task Personalized Sequential Retriever
作者 Yijia Sun, Shanshan Huang, Linxiao Che, Haitao Lu, Qiang Luo, Kun Gai, Guorui Zhou
机构 Kuaishou
年份 2025 (CIKM’25)
方向 Multi-Task Retrieval, Unified Causal Attention, Sparse MoE, Sequential Modeling
场景 工业级推荐系统多任务个性化序列召回
arXiv https://arxiv.org/abs/2508.20400

Unified Casual Attention + SparseMoE + DynamicQuota

放在召回环节做 Scaling 可能计算量扛不住。

一开始做 per-task 的 MLP 得到 OkO_k 的有效性存疑,不排除关键设计没公开。

实验证明 UID 存在过度主导的现象,去掉 UID 有实验效果的提升。

https://arxiv.org/abs/2508.20400

一、论文简介

MPFormer 是快手 2025 年提出的工业级多任务个性化序列检索框架。核心贡献是用一个统一的 Transformer 模型替代传统的多模型并行检索方案,同时解决三个关键问题:(1) 序列建模与多任务优化的架构不兼容,(2) 各目标召回配额无法动态调整,(3) 用户个性化信息未充分融入模型。该框架已部署在快手短视频推荐系统,服务超过 4 亿日活用户。

二、背景与问题

背景:检索与精排的语义鸿沟

现代推荐系统采用两阶段架构:(1) 检索阶段从十亿级物品池中筛选出数千候选,(2) 精排阶段对候选做细粒度的多目标排序(CTR、观看时长、转化率等)。基于 Embedding 的检索(EBR)系统通过双塔模型生成 user-item embedding,配合 ANN 实现亚线性检索。

问题:单目标检索无法满足多目标精排

精排阶段已经普遍采用多目标联合优化,但检索阶段仍然是单目标建模。这导致候选集无法充分覆盖下游多个目标的需求,从根本上限制了精排的性能上限。

现有方案的局限

  1. 多模型方案:为每个目标(CTR/观看时长/转化率)独立训练和部署检索模型,训练和服务资源随目标数线性增长,且目标之间无法共享信息
  2. 单模型方案:通过参数共享在一个模型内优化多个目标,但缺乏系统性的目标冲突处理机制。如 MVKE 依赖预定义的标签层级结构,不适用于短视频平台松耦合的交互信号

MPFormer 的解决思路

  1. 设计 Objective-Conditioned Transformer,将目标语义作为条件注入序列建模
  2. 提出 Dynamic Quota Allocation,根据用户实时行为动态分配各目标的召回配额
  3. 将用户个性化信息融入 Transformer 结构(PFormer),增强表示能力

个人理解感觉有很多夸大成分

  1. Objective-Conditioned Transformer: 底部引入 per-task token,但是没有做特殊使用;中部一层引入SparseMoE;顶部做多目标拆塔。
  2. Dynamic Quota Allocation:召回时多目标分别召回,召回数量动态生成,感觉迁移难度大,短期不尝试。
  3. 用户个性化信息融入 Transformer 结构:序列统一建模,计算量爆炸,召回撑不起来复杂化。

三、问题形式化

符号定义

  • 用户集 U\mathcal{U},物品集 I\mathcal{I}I106|\mathcal{I}| \geq 10^6
  • 用户 uu 在时间窗口 [t0Δt,t0][t_0 - \Delta t, t_0] 内的行为序列:Bu={(x1(t),f1(t)),,(xn(t),fn(t))}\mathcal{B}_u = \{(x_1^{(t)}, f_1^{(t)}), \dots, (x_n^{(t)}, f_n^{(t)})\}

其中 xk(t)Ix_k^{(t)} \in \mathcal{I} 是交互物品 ID,fk(t)Rdf_k^{(t)} \in \mathbb{R}^d 包含手工特征:

  • 观看时长比例 [0,1]\in [0, 1]
  • 交互类型 {0,1}3\in \{0, 1\}^3(点赞/评论/分享)
  • 作者 ID embedding
  • 标签 ID embedding

检索目标

给定用户 uu 和候选池 I\mathcal{I},检索目标是找到最优候选集 Tu\mathcal{T}_u

Tu=argmaxSIiSE[yiu,Bu]s.t.S=m\mathcal{T}_u = \arg\max_{\mathcal{S} \subseteq \mathcal{I}} \sum_{i \in \mathcal{S}} \mathbb{E}[y_i | u, \mathcal{B}_u] \quad \text{s.t.} \quad |\mathcal{S}| = m

转化为学习打分函数:sθ(u,i)=ϕθ(u,Bu),φθ(i)s_\theta(u, i) = \langle \phi_\theta(u, \mathcal{B}_u), \varphi_\theta(i) \rangle

其中 ϕθ:U×BRd\phi_\theta: \mathcal{U} \times \mathcal{B} \to \mathbb{R}^d 是用户编码器,φθ:IRd\varphi_\theta: \mathcal{I} \to \mathbb{R}^d 是物品编码器。关键约束:打分函数必须隐式编码 K3K \geq 3 个业务目标(CTR/观看时长/转化率)。

四、模型架构

MPFormer 包含四个核心组件:(1) User Tower,(2) Item Tower,(3) 多目标损失函数,(4) 在线服务架构。

4.1 User Tower

User Tower 包含三个子模块:个性化查询表示、行为感知注意力机制、多目标表示学习。

4.1.1 Personalized Query Representation

对每个目标 k{1,,K}k \in \{1, \dots, K\},构造个性化查询向量:

U=[u;sum_pooling(Lrs);sum_pooling(Lclick);sum_pooling(Llong_view)]U = [u; \text{sum\_pooling}(L_{rs}); \text{sum\_pooling}(L_{\text{click}}); \text{sum\_pooling}(L_{\text{long\_view}})]

其中 uRdu \in \mathbb{R}^d 是用户画像的稀疏 embedding(年龄、性别、地域等),LL 是用户历史交互序列(包括曝光、点击、长观看)。sum_pooling 跨时间维度聚合序列 embedding,uu 通过稀疏属性捕捉用户特征,不依赖用户 ID。

每个目标独立通过一个两层 MLP 变换:

Ok=MLP([U])RdO_k = \text{MLP}([U]) \in \mathbb{R}^d

确保不同目标的 embedding 在各自的语义空间中保持区分度。

4.1.2 Behavior-Aware Attention Mechanism

与传统 target-aware attention 不同,MPFormer 适配双塔检索的约束——物品特征不能直接与用户行为交互。

(1) Sequence Encoding:每个历史交互 (xi,fi)(x_i, f_i) 通过 2 层 MLP 编码:

ti=MLP([Eitem(xi);fi])Rdt_i = \text{MLP}([E_{\text{item}}(x_i); f_i]) \in \mathbb{R}^d

(2) Context Augmentation:将 KK 个目标 embedding OkO_k 追加到行为序列末尾,作为 Causal Self-Attention 的输入:

H(0)={t1,,tn,O1,,OK}Rd×(n+K)H^{(0)} = \{t_1, \dots, t_n, O_1, \dots, O_K\} \in \mathbb{R}^{d \times (n+K)}

这是一个关键设计:目标 token 通过因果注意力与行为序列交互,使得每个目标能从用户行为中提取与自身相关的信息。

(3) Decoder Unit with Parameter-sharing design:采用 4 层 Transformer decoder,使用 RMS normalization 和因果掩码自注意力。关键设计是 QKV 参数在所有 KK 个目标之间共享:

Q()=RMSNorm(H(1))WQ()Q^{(\ell)} = \text{RMSNorm}(H^{(\ell-1)}) W_Q^{(\ell)}

K()=RMSNorm(H(1))WK()K^{(\ell)} = \text{RMSNorm}(H^{(\ell-1)}) W_K^{(\ell)}

V()=RMSNorm(H(1))WV()V^{(\ell)} = \text{RMSNorm}(H^{(\ell-1)}) W_V^{(\ell)}

A()=Softmax(Q()(K())dk)A^{(\ell)} = \text{Softmax}\left(\frac{Q^{(\ell)} (K^{(\ell)})^\top}{\sqrt{d_k}}\right)

H()=FFN(A()V())+H(1)H^{(\ell)} = \text{FFN}(A^{(\ell)} V^{(\ell)}) + H^{(\ell-1)}

参数共享将复杂度从 O(K(n2d+nd2))O(K \cdot (n^2 d + n d^2)) 降至 O(n2d+nd2)O(n^2 d + n d^2),实验表明独立 QKV 仅带来约 2% 的 Recall@100 提升,但模型大小增加 1.4 倍、训练资源增加 80%。

最终,第 kk 个目标的用户表示从最后一层输出中对应 OkO_k 位置提取:

Embuk=MLPk(H(L)[:,n+k])\text{Emb}_u^k = \text{MLP}_k(H^{(L)}[:, n+k])

4.1.3 Task-specific Personalized Decoder Unit(PFormer)

在第三层 decoder unit 中注入门控 expert 模块,替换标准 FFN,实现用户级别的个性化。仅在单层注入,避免堆叠 expert 带来的二次开销。

FFNg(x)=GeLU(xWg1+bg1)Wg2+bg2\text{FFN}_g(x) = \text{GeLU}(x W_{g1} + b_{g1}) W_{g2} + b_{g2}

FFNi(x)=GeLU(xWi1+bi1)Wi2+bi2\text{FFN}_i(x) = \text{GeLU}(x W_{i1} + b_{i1}) W_{i2} + b_{i2}

gate_scorei=softmax(Wg[Eu;FFNg(x)]+bg)\text{gate\_score}_i = \text{softmax}(W_g [E_u; \text{FFN}_g(x)] + b_g)

P-FFN(x)=iexpertCutgate_scoreiFFNi(x)\text{P-FFN}(x) = \sum_{i}^{\text{expertCut}} \text{gate\_score}_i \odot \text{FFN}_i(x)

其中:

  • EuRdE_u \in \mathbb{R}^d:用户 embedding(拼接 user ID 和 device ID)
  • FFNg\text{FFN}_g:处理固定位置特征 xx,生成门控输入
  • expertCut()\text{expertCut}(\cdot):top-k expert 选择,提升计算效率

4.2 Item Tower

Item Tower 使用 target-decoupled MLP ensemble,为每个目标独立生成物品表示:

EmbI(k)=MLPk([eid,fside])kK\text{Emb}_I^{(k)} = \text{MLP}_k([e_{id}, f_{\text{side}}]) \quad \forall k \in K

其中 eide_{id} 是物品 learnable embedding,fsidef_{\text{side}} 包含类目标签、热度指标、内容 embedding 等辅助特征。每个 MLPk\text{MLP}_k 独立参数化,防止梯度干扰。

为什么 Item 侧不共享 MLP? 实验表明(Table 2),共享 MLP 导致 Recall@100 下降 5%、NDCG@100 下降 6%。物品侧的单一映射函数无法同时满足多个目标的语义和关系学习需求。

4.3 Multi-Objective Optimization

4.3.1 Sampling Strategy

对每个正样本 (u,i)(u, i),保留三个标签(pro_lvr, max_time, vtr),抽取 N1N-1 个共享负样本。每个目标聚焦自身的正样本,同时共享整个 batch 的负样本,将内存占用从 O(N2)O(N^2) 降至 O(N)O(N)

4.3.2 Loss Formulation

总损失为各目标损失的加权和:

L=kKαkLk\mathcal{L} = \sum_{k \in K} \alpha_k \mathcal{L}_k

每个目标使用带温度的 InfoNCE loss:

Lk=1Nki=1Nlog(exp(Embuk,Embik/τ)j=1Nexp(Embuk,Embjk/τ))li,k\mathcal{L}_k = -\frac{1}{N_k} \sum_{i=1}^{N} \log \left( \frac{\exp(\langle \text{Emb}_u^k, \text{Emb}_i^k \rangle / \tau)}{\sum_{j=1}^{N} \exp(\langle \text{Emb}_u^k, \text{Emb}_j^k \rangle / \tau)} \right) \cdot l_{i,k}

权重 αk\alpha_k 根据标签分布偏度动态调整:

αk=log(1+γ/Ik+)klog(1+γ/Ik+)\alpha_k = \frac{\log(1 + \gamma / |I_k^+|)}{\sum_{k'} \log(1 + \gamma / |I_{k'}^+|)}

γ\gamma 控制再平衡强度,缓解高频目标(如点击)对低频目标(如转化)的主导。

4.4 Online Serving Architecture

4.4.1 Multi-Objective Index Construction

维护 KK 个独立 ANN 索引 {I1,,IK}\{\mathcal{I}_1, \dots, \mathcal{I}_K\},每个索引包含对应目标正样本的物品 embedding:

Ik={φk(i)iDpos(k)}Rd\mathcal{I}_k = \{\varphi_k(i) | i \in \mathcal{D}_{\text{pos}}^{(k)}\} \subset \mathbb{R}^d

4.4.2 Dynamic Quota Allocation

通过三阶段优化实现个性化的候选分配:

(1) Task-Specific Weight Learning(训练阶段)

对每个正样本 user-item pair (u,i)(u, i),学习各目标的自适应权重:

Lquota=1N(u,i)N(pscoreik=1Kwiksk(u,i))2\mathcal{L}_{\text{quota}} = \frac{1}{|N|} \sum_{(u,i) \in N} \left( \text{pscore}_i - \sum_{k=1}^{K} w_{ik} s_k(u, i) \right)^2

其中:

  • wik[0,1]w_{ik} \in [0, 1]:目标 kk 的自适应权重,初始化为 1/K1/K
  • pscorei\text{pscore}_i:下游精排的融合分数,作为监督信号
  • sk(u,i)s_k(u, i):目标 kk 的检索分数,stop gradient
  • 只在正样本上学习(负样本无 pscore),避免分布偏移

(2) User Preference Aggregation(serving 阶段)

聚合用户最近 nn 次交互的权重:

w~u=softmax(iHuwi)RK\tilde{w}_u = \text{softmax}\left(\sum_{i \in \mathcal{H}_u} w_i\right) \in \mathbb{R}^K

(3) Adaptive Candidate Retrieval(配额分配)

按权重比例分配各目标的召回量:

Qk(u)=w~ukQtotalQ_k(u) = \lfloor \tilde{w}_{uk} \cdot Q_{\text{total}} \rfloor

QtotalQ_{\text{total}} 是总候选预算,各目标配额因人而异。

4.4.3 Serving Pipeline

实时服务流程三阶段:

  1. Weight Calculation:计算用户权重 w~u\tilde{w}_u
  2. Parallel Retrieval:并发 ANN 搜索 {I1,,IK}\{\mathcal{I}_1, \dots, \mathcal{I}_K\},各目标使用 Qk(u)Q_k(u) 配额
  3. Result Fusion:合并去重候选

五、实验结果

5.1 实验设置

  • 数据集:快手短视频推荐平台,4 亿+ DAU,500 亿日交互
  • 训练数据:5 天 50 亿交互,测试数据:第 6 天 10 亿交互
  • 数据 Schema:user id, item id, watch duration, click flag, timestamp, 15+ side features
  • 评估指标:Recall@K, NDCG@K

5.2 三个目标定义

  • pro_lvr(个性化长观看):观看时长超过用户最近 100 次曝光的第 75 分位数,自适应阈值捕捉个体观看习惯(约 83% 样本占比)
  • max_time(惊喜时刻):观看时长显著超过用户最近 kk 个物品的平均时长(约 15% 样本占比)
  • vtr(观看时长比例):用户观看时长的归一化目标(约 77% 样本占比)

三个目标之间没有严格的包含关系,样本量呈层次分布。

5.3 离线实验结果(Table 1)

Category Metrics MVKE ComiRec KuaiFormer MPFormer
pro_lvr recall@50 15.44% 40.46% 45.84% 56.55%
pro_lvr recall@100 27.57% 52.99% 57.27% 66.15%
pro_lvr ndcg@100 6.24% 17.26% 19.96% 26.98%
max_time recall@50 11.79% 50.12% 36.99% 63.91%
max_time recall@100 19.92% 61.34% 48.87% 71.89%
max_time ndcg@100 4.63% 22.80% 15.63% 32.38%
vtr recall@50 13.88% 44.09% 35.80% 53.99%
vtr recall@100 25.86% 55.23% 48.07% 64.50%
vtr ndcg@100 5.58% 19.08% 14.58% 25.27%

MPFormer 在所有目标和指标上全面超越 baseline。

从结果还能读出两个实验发现:

  • 稀疏目标受益更明显max_time 是三个目标里最稀疏的(约 15% 样本占比),但 MPFormer 在这个目标上的领先幅度反而最大,例如 Recall@100 从次优的 61.34% 提升到 71.89%,NDCG@100 从 22.80% 提升到 32.38%。这说明 Objective-Conditioned 表示学习对松耦合、稀疏目标尤其有效。
  • “多兴趣”不等于“多目标对齐”:ComiRec 在 max_timevtr 上强于 KuaiFormer,但在 pro_lvr 上又弱于 KuaiFormer,说明仅靠无监督多兴趣头并不能稳定解决多目标检索问题;MPFormer 的优势更多来自显式目标 token 和目标监督,而不是简单增加多个兴趣向量。

5.4 关键设计分析

用户表示分析(去除 ID 特征)

  • 包含 user/device ID 会导致不同目标的用户表示余弦相似度过高(表示坍缩)
  • 去除 ID 特征后,embedding 相似度呈正态分布(均值接近 0),各目标能学到更有区分度的表示
  • 原因:ID 信号主导学习,模型退化为 user-item 共现映射,而非语义特征交互

参数共享分析(Table 2)

配置 pro_lvr R@100 max_time R@100 vtr R@100
MPFormer(共享 QKV) 0.662 0.719 0.645
+ Item 侧共享 MLP 0.633 0.691 0.626
+ 独立 QKV 0.683 0.735 0.662
  • 共享 QKV:有效序列长度变为 (n+K)(n+K),复杂度 O((n+K)d2+(n+K)2d)O((n+K)d^2 + (n+K)^2 d),不随 KK 线性增长
  • 独立 QKV:Recall@100 仅提升约 2%,但模型增大 1.4 倍、训练资源增加 80%
  • Item 侧共享 MLP:Recall@100 下降 3%-6%,NDCG@100 下降 6%-8%,说明物品侧必须独立参数化

5.5 在线 A/B 测试(Table 3)

在快手短视频平台进行 7 天大规模 A/B 测试(10% 流量),对比三种配置:

指标 _wo_dq(无动态配额) _w_eq(固定均分配额) MPFormer
Total Watch Time +0.402% +0.420% +0.426%
Total App Usage Time +0.165% +0.143% +0.195%
Average View Duration +0.866% +0.613% +0.455%
Real Show -0.840% -0.618% -0.411%

MPFormer 在总观看时长和 App 使用时长上取得最优提升,同时 Real Show 下降最少(-0.411% vs -0.840%),说明动态配额有效缓解了曝光量损失。

从这组线上对比还能看到:

  • 统一多目标模型本身就是主要收益来源:即使去掉 Dynamic Quota,MPFormer_wo_dq 相比 baseline 也已经带来 +0.402% Total Watch Time 和 +0.165% Total App Usage Time,说明 Objective-Conditioned User Tower 本身就能稳定改善候选质量。
  • Dynamic Quota 是“增量优化 + 指标重分配”:相较 _wo_dq,完整 MPFormer 进一步把 Total Watch Time 从 +0.402% 提升到 +0.426%,Total App Usage Time 从 +0.165% 提升到 +0.195%,并把 Real Show 损失从 -0.840% 收窄到 -0.411%;但 Average View Duration 并不是最高(_wo_dq+0.866%),说明动态配额更偏向优化整体消费与曝光效率,而不是让所有局部指标同时单调提升。

5.6 Dynamic Quota 分析

  • Photo-side 权重分布(Figure 4):

    • max_time 权重高度分散(mean < 0.33, SD=0.21),反映目标稀疏性
    • pro_lvr 近似正态分布,峰值在 1/K1/K 附近(mean=0.33, σ\sigma=0.09)
    • vtr 正偏态(median=0.41),与观看时长核心优化指标对齐
  • User-side 配额分配:平均配额为 pro_lvr 35%、max_time 18%、vtr 47%,与固定均分(各 33%)差异显著

  • User-level adaptation 确实必要:item/photo-side 权重分布和最终 user-side 平均配额并不一致。尤其是 max_time 在 item-side 只是“高方差分散”,到 user-side 后平均配额被压到 18%;而 vtr 在 user-side 被抬高到 47%。这说明仅靠 item 侧静态权重不足以做在线配额分配,必须再结合用户最近行为做聚合。

  • 系统效果:多目标曝光率提升 12.7%(6.76% → 7.62%),有效率提升 1.3%

  • 动态配额的增量主要体现在曝光效率:论文明确给出,Dynamic Quota 相比无动态配额版本额外贡献约 0.03% 的总时长增益,并缓解约 0.43% 的 Real Show 下滑;相较固定均分版本,也进一步把 Real Show 从 -0.618% 改善到 -0.411%

5.7 系统效率

维度 效果
训练成本 单模型比单目标训练多 13% 资源,但比 KK 个独立模型节省 60%
推理成本 单次前向生成所有目标 embedding,等效 QPS 下资源减少 66.7%
延迟 P99 稳定在 80ms,与单目标模型无显著差异

六、讨论

6.2 Dynamic Quota Allocation 的本质

传统方案给每个目标固定召回量(如各 1000 个),Dynamic Quota 的核心洞察是:不同用户对不同目标的敏感度差异很大。一个重度消费用户可能需要更多 vtr 目标的候选,而一个探索型用户可能需要更多 max_time 目标的候选。

用精排分数作为监督信号来学习权重是一个巧妙的设计——它让检索阶段的配额分配与精排阶段的目标偏好对齐,缩小了两个阶段之间的语义鸿沟。

6.3 与多兴趣建模的关系

MPFormer 的多目标 token 设计与 MIND、ComiRec 等多兴趣模型有形式上的相似性——都是生成多个用户表示向量。但本质区别在于:

  • 多兴趣模型:通过无监督聚类(胶囊路由、注意力权重)隐式发现兴趣,兴趣与下游目标之间存在语义错位
  • MPFormer:每个向量显式对应一个业务目标,用对应目标的标签直接监督,确保表示与目标语义对齐

七、总结

MPFormer 的核心贡献不是提出全新的模型结构,而是系统性地解决了工业推荐系统中检索阶段多目标优化的三个关键问题:用 Objective-Conditioned Transformer 统一多任务序列建模、用 Dynamic Quota Allocation 实现用户级别的个性化召回配额、用 PFormer 将用户个性化融入模型结构。在快手 4 亿 DAU 的系统上验证了方案的有效性和可扩展性。