OneTrans: Unified Feature Interaction and Sequence Modeling with One Transformer in Industrial Recommender
Zhaoqi Zhang, Haolei Pei, Jun Guo, Tianyu Wang, Yufei Feng, Hui Sun, Shaowei Liu, Aixin Sun
WWW 2026)
cs.IR
2025-10-30
字节跳动提出OneTrans,用一条混合参数Transformer同时做用户行为序列和特征交叉;相对RankMixer+Transformer基线,Feeds人均GMV涨5.68%,端到端p99延迟还降3.91%。
工业排序长期拆成两条独立产线。一条扩特征交叉:Wukong、RankMixer 把静态画像、上下文、候选属性做成高阶交叉。另一条扩行为序列:DIN、Transformer、LONGER 把点击、加购、购买压成一条用户表示。标准做法是 encode-then-interaction:先把序列收成一个向量,再和静态特征拼起来做交叉。
两边各自能 scale,但信息是单向的。静态特征没法在编码阶段改写序列表示,两套模块也无法共用 KV cache、FlashAttention 这些 LLM 基建。ByteDance 电商排序的生产路径已经从 DCNv2+DIN 走到 RankMixer+Transformer,下一步卡在「还是两段式」。
OneTrans 把序列和交叉塞进同一条因果 Transformer。
统一 tokenizer 把多行为序列打成 S-token,把用户/物品/上下文等非序列特征打成 NS-token,中间插可学习的 [SEP]。序列按时间戳交织效果最好;没有时间戳时按意图强弱拼接。非序列侧 Auto-Split(一次投影再切开)优于按人工语义分组。
每个 OneTrans 块是 pre-norm 因果 Transformer,但参数是混合的:所有 S-token 共享一套 QKV 和 FFN,每个 NS-token 单独一套。异构统计的静态特征如果硬共享投影,容易把注意力打崩,所以用 RMSNorm 做 pre-norm,并给 NS-token 独立参数。因果掩码让每个 S-token 只看更早的行为,每个 NS-token 能看完整历史和它前面的 NS-token。
金字塔调度逐层减少发出 query 的 S-token,KV 仍按全长算,信息往尾巴和 NS-token 上收。同一请求里候选共享用户序列,S 侧算一次、NS 侧按候选算,序列 KV 还可以跨请求增量追加。再叠 FlashAttention-2、混合精度和激活重计算。
OneTransS 约 100M:6 层、宽 256、4 头,序列 query 从 1190 收到 12。OneTransL:8 层、宽 384,query 从 1500 收到 16。
离线日志约 291 亿次曝光、2790 万用户、1020 万物品。相对 DCNv2+DIN:
| 模型 | CTR AUC / UAUC | CVR AUC / UAUC | 参数 | TFLOPs |
| RankMixer+DIN | +0.27% / +0.36% | +0.43% / +0.19% | 107M | 1.31 |
| RankMixer+Transformer | +0.57% / +0.90% | +0.52% / +0.75% | 109M | 2.51 |
| OneTransS | +1.13% / +1.77% | +0.90% / +1.66% | 91M | 2.64 |
| OneTransL | +1.53% / +2.79% | +1.14% / +3.23% | 330M | 8.62 |
系统侧,未优化的 OneTransS 训练 407ms、推理 p99 54ms;金字塔、跨请求 KV cache、FlashAttention、混合精度逐步叠上去,推理 p99 最多降 69.1%。OneTransL 相对 DCNv2+DIN:TFLOPs 8.62 对 0.06,参数 330M 对 10M,p99 13.2ms 对 13.6ms,MFU 30.8% 对 13.4%。
线上对照是未开序列 KV cache 的 RankMixer+Transformer(约 100M)。Feeds:点击/人 +7.74%、订单/人 +4.35%、GMV/人 +5.68%,p99 延迟 -3.91%。Mall:GMV/人 +3.67%。活跃天数 +0.75%,冷启商品订单/人 +13.59%。
推荐 scaling 不必永远拆成「交叉模块 × 序列模块」。一条因果 Transformer 才能直接继承 KV cache 和 FlashAttention,也才能让静态特征从第一层就改写行为表示。对已经上了 RankMixer 的团队,这篇给的是下一跳,不是把交叉模块再加宽一档。离线 CTR AUC +0.3% 在他们的体系里通常能打出显著线上差异,OneTransL 的 +1.53% 已经不小。
作者承认,再往 OneTransL 之上扩,会被在线效率卡住。候选相关序列(如 SIM)仍要先池化进 NS-token,没法走共享的 S 侧缓存。全注意力和因果注意力离线几乎打平,选因果主要是为了 KV cache,不是效果碾压。数据是字节电商生产日志,没有公开表。金字塔的 token 数是启发式按 32 对齐收下去的,论文没有系统搜这条日程。训练用了过去一年半数据,对照和实验组都是,迁移到更短窗口的产品上数字会缩。