← 全部深度解读
📖 深度解读 · PERSONALIZATION

An Industrial-Scale Sequential Recommender for LinkedIn Feed Ranking

LinkedIn · LinkedIn · arXiv 2602.12354 · 发表 2026-02-16
7 分钟阅读时长 2696字 4.45综合分 第 1 名06-03 Personalization 日报
目录 · 1 节1An Industrial-Scale Sequential Recommender for LinkedIn Feed Ranking 深度解读
相关 5新颖 4实用 5证据 4时效 3
工业级序列排序落地的范本:序列 Transformer 在排序阶段(而非仅召回)替换 DCNv2 是可行且收益明确的路径,关键不在模型多大而在 serving 优化能否扛住延迟约束。论文明确给出他们试过 LLM-based 排序但因生产效率放弃,对社区搜索/推荐排序的启示是——先把用户行为序列建模做进排序主模型,再权衡 LLM;停留时长+2.10% 这类指标提升来自序列信号而非更复杂的特征工程。

An Industrial-Scale Sequential Recommender for LinkedIn Feed Ranking 深度解读

1. 问题与动机

LinkedIn Feed 服务 12 亿会员,排序系统必须在「几百毫秒延迟、数万 QPS 吞吐」的硬约束下实时打分。原生产模型是基于 DCNv2 的排序器——Deep & Cross Network 用 cross 层做显式特征交叉,但本质上是「对单点特征做交叉」,缺乏对用户行为序列的时序建模能力。作者的核心判断是:会员的近期 Feed 行为序列里藏着比手工交叉特征更强的兴趣信号,而 DCNv2 这类 wide&deep 谱系的模型无法自然地消化变长序列。

论文同时回应了一个现实诱惑:既然 LLM 这么强,为什么不直接上 LLM 排序?作者明确做了 LLM 排序的尝试并放弃(见第 5 节),因此 Feed SR 的定位是「在生产效率与线上指标之间取最优」的序列 Transformer,而非追求最大模型。它要替换 DCNv2 并真正扛住 12 亿会员的线上流量,已稳定服务大部分 Feed 流量超过三个月。

2. 方法详解

序列构造:把 Feed 帖子表示与动作表示交替拼接,输入序列为 Xin = [X1, A1, X2, A2, ..., XT, AT],每个帖子用 J 个特征拼接 Xt = concat(f1(xt,1),...,fJ(xt,J))。会员历史取最近 T=1000 次曝光,按时间顺序排列。

Transformer 结构:Decoder-only,采用 pre-LayerNorm、旋转位置编码 (RoPE) 和带缩放的残差连接,用因果自注意力(SDPA)。过完 Transformer block 后,丢弃对应「动作输入」位置的输出,压回 T 个表示,再与上下文特征拼接。

候选打分(target attention):推理时把待排候选 append 到序列末尾,用自定义 attention mask 一次性对所有候选打分(batch candidate scoring),这是后面 80× 加速的基础。

损失与多任务:在所有序列位置上施加二元交叉熵,多任务预测会员对帖子可能采取的动作(long-dwell 长停留、like、comment、share)。

训练设置:用一年训练数据;负采样上「未点击的曝光以 0.1 概率随机保留」。冷启后模型每日增量更新——增量训练时只对新观测到的交互计损失,但仍输入完整历史序列。为缓解 in-session 泄漏(train-serve 不一致:条件于 session 首个 item 会抬高后续 item 超阈概率),对每个 session 内 item 顺序做随机化。

关键稳定性设计:pre-LN 是必需的,去掉它 AUC 会塌到 0.5;vanilla 残差相加会间歇性不稳定。

3. 核心技术贡献

  1. 序列 Transformer 直接替换 DCNv2 做精排:把「用户行为序列 → Transformer 编码 → 候选 target attention 打分」做成可上线的精排主模型,而非仅停留在召回或粗排。证明序列信号本身(而非更复杂特征工程)带来主要增益。
  1. Late Fusion(晚融合):把上下文特征移到 Transformer 之后再融合,计算量降 12%,而 Long Dwell AUC 仅 +0.04%——几乎无损地省算力。这是把「会随 candidate 变化的强信号(popularity、affinity)」与序列表示解耦的工程巧思。
  1. 一整套 serving 加速:Shared Context Batching(N 个候选 append 后单次前向,Transformer 前向 80× 加速)、自定义 Flash Attention 内核 SRMIS(相比 PyTorch SDPA ~2× 加速,靠免去 O((L+N)²) mask 物化和跳过无效 tile)、CPU 向量化(历史解析 450ms→2ms,225×;稀疏转稠密 254ms→5ms,50×)、Arrow 列式 buffer 零拷贝转 PyTorch tensor。
  1. Scaling 经验律:训练 FLOPs 每涨一个数量级,评估 Long Dwell AUC 约 +0.0093;其中拉长序列长度带来的增益最一致。

4. 实验结果分析

消融(Table 1,相对 Long Dwell / Contributions ∆%):去掉 RoPE 改用学习式 PE 为 -0.19%/-0.16%;把序列头换成 linear head 为 -1.20%/-0.48%(最大降幅,说明序列建模头至关重要);Softmax 换 SiLU -0.09%/-0.05%;Feed SR vs HSTU -0.23%/-0.28%(优于 HSTU);late fusion vs early +0.04%/+0.01%。

线上 A/B(Table 4):整体 +2.10% 停留时长、+3.52% 点赞/评论/转发;分群看 DAU +2.38%/+4.07%、WAU +1.84%/+3.40%、MAU +0.82%/+1.86%;新用户不显著(NSS)。说明序列模型对高活用户收益最大,对历史稀疏的新用户帮助有限。

能耗:训练能耗为旧系统 0.2×,推理为旧 CPU 模型的 0.7×——既提效又省钱。

稀疏历史增益:用 LLM 生成的会员画像 embedding 只对历史 <10 次动作的会员有效(+2% AUC),印证序列模型的短板在冷启动。

5. 局限与未来方向

作者明确陈述:(1) 特征裁剪权衡——砍掉 80% 特征但必须保留 item popularity、viewer-to-author affinity 等关键数值信号,部分数值特征不可替换否则 AUC 显著下降;(2) 会员画像 embedding 仅惠及稀疏历史会员;(3) 训练稳定性强依赖 pre-LN;(4) 新会员线上中性(不显著);(5) 与 TransAct 相比,非序列优先设计会显著增加训练时间与推理延迟。隐含局限是该方案对冷启动/新会员仍缺乏有效解。

6. 工业实践意义

对搜索/推荐排序团队,这是一份难得的「序列 Transformer 上线手册」:该采用——把用户行为序列建模做进精排主模型,用 target attention 一次性给所有候选打分,配合 Shared Context Batching 把 80× 算力省回来;该尝试——late fusion 把 candidate 相关强信号晚融合,几乎无损省 12% 算力,pre-LN + RoPE 是稳定训练的标配。该规避——别盲目上 LLM 排序:作者实测 LLM 难编码数值/网络关系特征、历史几万 token 太贵、线上从未超过现网模型。落地考量上,几百毫秒延迟、数万 QPS 下,自定义 CUDA 内核与 Arrow 零拷贝是把 Transformer 精排压进延迟预算的关键。对社区搜索的迁移:搜索点击序列同样可作为精排序列输入,但要预留对新用户/冷启动 query 的兜底策略。

← 全部深度解读 出现于报告:2026-06-03 · Personalization #1 (4.45)2026-06-03 · Infra #1 (3.65)2026-03-01 · Generative #1 (4.00) 原文 ↗