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

Make It Long, Keep It Fast: End-to-End 10k-Sequence Modeling at Billion Scale on Douyin Recommendation

Lin Guan, Jia-Qi Yang, Zhishan Zhao, Beichuan Zhang, Bo Sun, Xuanyuan Luo, Jinan Ni, Xiaowen Li, Yuhang Qi, Zhifang Fan,... · ByteDance / Douyin · arXiv 2511.06077 · 发表 2026-05-13
10 分钟阅读时长 3618字 4.55综合分 第 1 名05-14 Personalization 日报
目录 · 6 节1问题与动机2方法详解3核心技术贡献4实验结果分析5局限与未来方向6工业实践意义
相关 5新颖 4实用 5证据 4时效 4
对工业短视频/社区推荐有直接借鉴价值:在保留全量行为长序列的前提下,通过 target-to-history 单向交叉注意力把 attention 复杂度从 O(N²) 摊薄到 O(N),是端到端长序列建模的关键工程突破。RLB 思路也值得借鉴——同一 request 内多目标共享用户编码,可显著降低 user-tower 推理成本,对召回-排序级联的双塔/多塔结构尤其有用。此外短训长推的长度外推训练范式说明序列长度扩展不必同步扩 batch,对算力预算紧张的团队是务实方案。

1. 问题与动机

工业短视频推荐的核心矛盾是:用户行为历史动辄数千条,但主流系统沿用两段式架构 (检索 + 排序) 截断序列、牺牲端到端优化。Douyin 的目标是让模型直接吃 10k 长度的用户历史,同时不打破生产环境的延迟与算力预算。作者强调 standard Transformer self-attention 的 O(L²) 复杂度让 L=10k 几乎不可行:他们测得 self-attention 在 L=10k 需要 236.26 GFLOPs,而本文方法只需 21.06 GFLOPs——大约 11 倍差距。

更本质的洞察是:与 NLP/CV 的 scaling law 不同,推荐系统受 user-generated data 制约,扩 token 数最直接的来源就是用更长的历史。作者通过实验确认了推荐场景下 "性能随序列长度可预测放大" 的 scaling 行为,因此长序列是一条值得投入工程力的扩展轴。这一动机区别于以往工业长序列方案 (SIM/ETA/TWIN) 主要走 "检索精简" 路线——本文要的是 end-to-end 建模整段历史。

2. 方法详解

整套方案由三块组合而成:STCA + RLB + 长度外推训练。

STCA (Stacked Target-to-History Cross Attention)

核心是把 history 内部的 self-attention 替换为 target-only 的 cross-attention:target 作为唯一 query 去 attend 历史序列。复杂度从 O(L²·d_h) 降为 O(L·d_h)。多头公式:

α^(i,j) = softmax((q^(i) W_Q^(i,j) (X̃^(i) W_K^(i,j))^T) / √d_h)
o^(i,j) = α^(i,j) (X̃^(i) W_V^(i,j))

层间通过 target-conditioned fusion 堆叠——每层输出拼上 target embedding 再用一个可学习投影压回固定维度,从而能堆深做多层信息聚合。一个关键工程优化是先算 attention 权重再扩展 value,避免实例化长度 L 的中间 K/V 张量。

RLB (Request Level Batching)

传统训练每个 (user, target, label) 是独立样本;RLB 把同一用户的 m 个目标合成一个 micro-batch,user/history 编码 Φ_user(ℋ) 只算一次被全部目标复用。Loss 写成 ℒ_u = (1/m) Σ_k ℒ_BCE(ŷ(u, t_k), y_k),根据期望线性性它依然是经验风险的无偏估计。系统侧收益:L=512–2k 时序列相关带宽下降 77–84%,端到端训练吞吐提升 2.2×,结合 kernel 优化达到 5.1×;可训练最大序列长度提升约 8×;Parameter Server CPU 与通信带宽各降 50%。

长度外推训练 (Train Sparsely, Infer Densely)

训练平均长度 L_train^avg ≈ 2k、推理 L_infer = 10k,外推比 ρ_extra = 5。引入 Sequence Sparsity 指标 SS = L_train^avg / L_train^max(2k/10k ≈ 20%)。训练时按 U 形 Beta 分布在 [L_min, L_max] 内随机截断序列,构造长短混合 curriculum。截断策略对比表明 "保留最近交互" (temporal suffix) 显著优于随机采样。还实现了 ragged 计算 + index-based target-attention kernel,处理变长序列时不引入 padding 浪费。

训练 curriculum:先在 L=512 预训稳收敛,再切到 L=2048 继续训。模型架构 4 层 STCA、d=256、h=8、FFN expansion ratio r=4、SwiGLU 激活;RLB micro-batch m=8。

3. 核心技术贡献

  1. STCA 把推荐长序列的 attention 从 O(L²) 降到 O(L):通过用 target 替代 history-token 作 query,避免了 history 内部的二次注意力。该取舍背后的假设是——推荐场景下我们只关心 "history 中哪段对预测当前 target 重要",并不需要让 history 自己彼此交叉注意。
  2. RLB 给出了一条 user-tower 摊薄的训练范式:传统训练把 (u, t, y) 当独立样本浪费了大量 user 侧重复计算;RLB 用统计上的无偏聚合解锁了 ~8× 的最大可训长度上限,同时显著减少 PS 通信和 GPU 显存。
  3. U-shaped sparsity + 短训长推:对比 α=10 (skewed)、α=0.5、α=0.02 (U-shaped),U-shaped 在 +0.21% AUC 上最优,说明 curriculum 里要同时保留 "很短" 和 "很长" 两个尾巴。最重要的是 L_train^avg=2k 时已能拿到全量 10k 训练增益的 ~80%。

4. 实验结果分析

离线主实验 (Table 1)

所有 baseline 配 TWIN(10k) 检索后再排序。本文 STCA+RLB+Extrap:

TaskΔAUCΔNLL
Finish (完播)+0.49%−1.16%
Skip (跳过)+0.71%−1.14%
Head (头部点击)+0.39%−1.41%

显著优于 DIN (+0.19/−0.17)、Transformer (+0.25/−0.46)、HSTU (+0.31/−0.86),在等 compute 下。

Compute-Quality Scaling

达到相同 NLL≈0.396:STCA 在 L=10k 只需 21.06 GFLOPs,Transformer 在 L=8k 需要 156.24 GFLOPs(高 7.4 倍)。L=500→10k FLOPs 增长:STCA 19.9×,Transformer 113.6×。

外推消融 (Tables 3–5)

  • L_train^max = 2k / 4k / 10k → AUC 增 +0.03% / +0.09% / +0.21%
  • L_train^avg = 1.0k / 2.0k / 2.5k → +0.09% / +0.21% / +0.22%(边际收益递减)
  • α=10 / 0.5 / 0.02 → +0.08% / +0.11% / +0.21%(U 形最优)

在线 A/B (30 天,Table 6)

指标Douyin (全量)Douyin Lite (全量)
30-day Activeness+0.1161%+0.1281%
Stay Time+0.9266%+0.8467%
Finish+3.3454%+4.2275%
Comment+1.5678%+2.6167%
Like+1.8282%+2.3828%

低中活用户提升最大——证实长序列建模主要在 "近期行为稀疏" 的用户上拿到信息增量。每用户的内容类目簇数也增 +1.6%,意味着内容多样性轻微提升。

架构消融 (Table 2 at L=512)

  • 扩稀疏 ID embedding (128→320):+0.08%
  • Sequence FFN 层深 2→4:+0.18% (单点最大增益)
  • FFN→SwiGLU:+0.11%
  • Heads 8→16:+0.05%
  • Query fusion:+0.06%
  • Time-delta features:+0.08%

5. 局限与未来方向

作者明确提到的约束:

  1. 训练稳定性问题:直接在 L=2048 训练不稳定,必须先 L=512 预训。
  2. 总成本权衡:取消 TWIN(10k) 检索后 GPU +33%、CPU −16%,净成本 +17%——作者称 "在在线增益面前可接受" 但仍是真实开销。
  3. 位置编码细节未充分披露,长序列外推超过 10k 的行为未讨论。
  4. RLB 的同 user 内 target 相关性虽不破坏期望无偏性,但对方差/收敛速度的影响未深入分析。
  5. 实验完全在 Douyin 短视频场景,e-commerce/news 等其它领域适用性未验证。

6. 工业实践意义

对国内做工业搜推的团队,这篇论文有几个高 ROI 借鉴点:

  • STCA 是 SIM/ETA/TWIN 之后值得新尝试的长序列范式:不再做先检索后排序的两段拆分,而是端到端用 target-to-history 的 cross-attention 一把建模全段历史。落地时主要风险点是 RPC/显存——RLB 的 m=8 micro-batch 给出了一条务实工程路径。
  • RLB 的思想可独立复用:即便不上 STCA,把推荐训练样本按 user 聚合、user-tower 计算共享,是低风险的训练吞吐优化。对召回/粗排/精排几乎都通用。
  • 短训长推:建议工业团队不要直接在 L=10k 训练(不稳且慢),先 L=512 预训、再切 2k 继续训、推理时跑 10k 即可拿到 ~80% 全量增益。U 形 sparsity 是关键细节。
  • 部署成本约束很硬:方案虽强但还是要 +17% 总成本买在线 +3.3% Finish。要去说服业务 trade-off 时这是真实数据点。
  • 对社区/UGC 场景:UGC 用户行为同样长尾稀疏、低活占多数,本文 "低中活提升最大" 的结论高度可迁移——长序列建模对低活用户的收益可能是最值得期待的方向。
← 全部深度解读 出现于报告:2026-05-14 · Personalization #1 (4.55) 原文 ↗