OneTrans: Unified Feature Interaction and Sequence Modeling with One Transformer in Industrial Recom
工业推荐系统的排序模型,长期以来沿用一种固定的两阶段范式:先用序列建模(Sequence Modeling)模块(例如DIN、LONGER)对用户历史行为序列进行编码,得到压缩的用户兴趣表示;再将其与用户画像、物品特征、上下文这些非序列特征拼接,送入特征交互(Feature Interaction)模块(例如DCNv2、Wukong、RankMixer)完成高阶交叉。这一设计被称为encode-then-interaction pipeline
这种两阶段范式存在两个根本性缺陷:其一是信息流的单向性:行为序列被压缩为固定向量之后,才与物品和上下文特征交互,这意味着物品特征无法在序列编码阶段对用户历史产生影响;其二是执行碎片化:两个模块独立计算,无法共享 KV Cache、FlashAttention 等 LLM 工程优化,导致在线延迟偏高、扩展困难
为了解决这些问题,OneTrans提出了一个根本性的解决思路:直接将序列特征与非序列特征统一表示为 Token 序列,用同一个 Transformer Backbone 完成序列建模与特征交互的全部计算,从而打通双向信息流,并使整个模型能够直接复用 LLM 的训练与推理优化栈
方法
Feature and Tokenization
OneTrans首先通过 Tokenizer 将所有输入特征映射为统一维度的 Token 序列,输入特征被分为两类:来自用户的历史行为序列特征(S-tokens),以及来自用户画像、物品属性、上下文信息的非序列特征(NS-tokens)。最后得到的初始 Token 序列就是把 S-tokens 和 NS-tokens 拼接起来
(1)非序列特征的 Tokenization
由于工业系统通常涉及数百个具有不同重要性的特征,因此有两种选择来控制非顺序令牌的数量:
Group-wise Tokenizer(与RankMixer一致):按不同语义人工预先分组,每组特征在组内拼接后通过各自独立的 MLP 投影为一个 维 Token:
Auto-Split Tokenizer:将所有非序列特征统一拼接为一个向量,通过一次 MLP 投影到 维空间,再按维度切分为 个 Token:
Auto-Split的优势在于只需一次稠密矩阵乘法,减少了 kernel 启动开销;更重要的是 MLP 的权重矩阵是 dense 的,每个输出维度可以感知全部输入特征,因此模型可以自动学习跨语义类别的特征组合,而不受人工分组的约束(消融实验证实,Auto-Split在 CTR 和 CVR 指标上均优于Group-wise方案)。更重要的是,虽然 Auto-Split 中一个特征的信息可能被分散到多个 Token 中,但这种 distributed representation 类似于 NLP 中词向量的工作方式,与后续 Transformer 层中的 token-level attention 能够重新整合这些分布式信息是完美契合的
(2)序列特征的 Tokenization
不同序列的原始特征维度各异,因此OneTrans为每一种行为序列分配一个共享的 MLP 投影层,将该序列内的每一个事件 embedding 统一映射为 d 维向量。完成维度对齐后,所有行为序列需要被合并为一个整体的 S-token 序列送入主干网络,合并策略主要有两种:
时间戳感知融合:严格遵循事件发生时间的先后,将所有行为序列交织在一起。这是最自然、信息最无损的方式,能精确捕捉用户兴趣演化的先后顺序。
时间戳无关融合:当部分序列缺乏精确时间戳时,按用户意图强度(购买 > 加购 > 点击 > 曝光)降序拼接,并在不同行为序列之间插入可学习的 [SEP] token 作为边界标识
最终消融实验发现,时间戳感知融合策略始终是最优选择,说明时间顺序本身蕴含的演化信息比人工定义的事件重要性更为关键
OneTrans Block
完成 Tokenization 后,所有 S-tokens 与 NS-tokens 拼接为统一序列,送入堆叠的 OneTrans Block 进行处理,每个 Block 遵循标准的 Pre-Norm Transformer 结构。这里 OneTrans 的核心改动是混合参数化,使其适应于推荐系统的输入特征的异构性
(1)混合因果注意力:
工业推荐系统的 token 序列与纯文本截然不同:S-tokens 是同质的,都是用户行为的投影;而 NS-tokens 是高度异质的,可能分别代表用户画像、物品属性、统计特征等,其数值分布和语义空间差异巨大。若对所有 token 采用统一的 Q/K/V 投影,会迫使模型在扭曲的语义空间中学习,导致注意力坍缩或训练不稳
OneTrans将所有 S-tokens 共享一套 Q/K/V 权重,而每个 NS-token 拥有独立特有的权重。在这种混合设计中,它催生了几种天然的交互模式:
S-side(序列内交互):每个行为 token 只能看到其历史时刻之前的行为,天然符合用户兴趣演化的因果逻辑
NS-side(特征交互):NS-tokens 可以“看见”它前面的所有 NS-tokens,实现了类似传统特征交叉的高阶交互
Cross-side(序列与特征交互):所有 NS-tokens 被放置在序列末尾,因此可以看见全部的 S-tokens,这意味着物品特征或上下文特征可以直接从完整的用户行为历史中提取相关兴趣信号
(2)混合前馈网络
遵循同样的逻辑,S-tokens 共享一个 FFN,而每个 NS-token 拥有独立的 FFN。最终,OneTrans 在仅仅微调参数分配方案的前提下,就优雅地弥合了文本 Token 和推荐系统特征间的巨大鸿沟
Pyramid Stack & Cross-Request KV Caching
统一架构带来的一个隐患是计算量,用户行为序列可能长达数千,即使使用高效注意力机制,对所有 token 进行全层推理仍然成本高昂。为此,OneTrans设计了两个精巧的工程优化来确保其生产级效率:
金字塔堆叠(Pyramid Stack):考虑到因果掩码会将信息集中在序列尾部,冗长的早期行为可能在经过几层编码后,其关键信息已被尾部 token 所吸收。因此,从底层到顶层,每过一个 Block,模型就剪枝掉一部分最古老的 S-tokens。这形成了一个上窄下宽的金字塔结构。它带来的好处是双重的:既节省了大量计算和显存,又实现了对用户历史信息的渐进式蒸馏,迫使模型将长历史中的有效信息压缩进幸存的最新行为和 NS-tokens 中
跨请求键值缓存(Cross-Request KV Caching):在推理中,同一用户请求可能要对数百个候选物品打分,而这些候选物品共享完全相同的用户历史序列。因此在同一次请求中,OneTrans可以直接将 S-side 的 K/V 在请求级别缓存并复用,每位候选物品只需计算 NS-side 的增量;又由于用户行为是 append-only 的,下一次请求到来时,可以复用上一次的缓存,仅需计算增量行为的新 K/V,从而实现跨请求的键值缓存
