深度解读:MixFormer: Co-Scaling Up Dense and Sequence in Industrial Recommenders
1. 问题与动机
MixFormer 关注工业推荐大模型扩展中的一个很具体但常被忽略的问题:序列建模和稠密特征交互通常是两套模块,参数、计算和优化目标相互独立。当前推荐系统一方面需要更长的用户行为序列来捕捉动态兴趣,另一方面又需要更强的特征交互能力来处理 user profile、item 属性、上下文、交叉特征等高维稀疏信号。传统做法要么先用序列 Transformer 聚合历史,再把结果交给 dense interaction 模块;要么把两个模块并行后拼接。论文认为这种 rigid separation 会造成 co-scaling 失配:序列模块计算随长度快速增长,占据预算后压缩 dense 模块扩容;反过来,如果优先扩 dense 特征交互,又无法利用长序列。随着推荐进入 scaling-driven regime,架构本身决定新增参数和 FLOPs 能否转化成 AUC/UAUC 提升,所以作者提出把 sequence modeling 和 feature interaction 统一到同一 Transformer-style 参数空间里。
2. 方法详解
MixFormer 是面向多任务推荐的 decoder-only Transformer 变体,由 input layer、若干 MixFormer blocks 和 task-specific heads 组成。输入先分成两类:顺序特征是用户历史行为序列,每个 action 包含 item identifier、action type、timestamp 和 side attributes;非顺序特征包括 user features、item features、contextual features。非顺序特征经过 embedding 后被切分成多个固定维度的 feature heads,每个 head 再投影到统一维度。这样做的目的是保留不同字段的语义多样性,不把所有异构特征压成一个全局向量。
每个 MixFormer block 有三部分。第一是 Query Mixer。作者认为推荐里的 user/item/context 字段来自不同稀疏 ID 空间,直接用 self-attention 的内积相似度不可靠,还会引入高开销。因此 Query Mixer 用类似 RankMixer/MLP-Mixer 的 HeadMixing:通过 reshape、transpose、flatten 做跨 head 信息交换,再给每个 head 配独立 FFN。这个模块不依赖 similarity attention,更适合异构特征。
第二是 Cross Attention。Query Mixer 产出的高阶非顺序 head 被当作 query,去 attend 用户行为序列。每个 head 是一个语义子查询,分别聚合与该特征子空间相关的历史行为;行为 action 先通过 per-layer SwiGLU FFN 对齐,再投影为 key/value。这样 dense 特征不是序列模块外面的附加信息,而是直接控制序列聚合。
第三是 Output Fusion。Cross-attention 输出同时包含非顺序信息和对应 head 下的序列信息,作者用 per-head SwiGLU FFN 进一步融合,避免共享 FFN 抹平 head specialization。多层堆叠后,非顺序特征交互和序列建模在同一参数体系中逐层交织。
为了上线,MixFormer 还设计 User-Item Decoupling。普通 HeadMixing 会让 user-side head 混入 item-side 信号,导致同一请求中 user 表征无法复用。作者借鉴 causal mask,构造单向 user-to-item fusion 的 mask,去掉 user-side heads 中的 item-side 信号,让用户侧计算能在请求级 batch 中共享,同时保留 user 信息向 item 侧传播。这一点是工业部署关键,因为推荐服务常对同一用户请求中的大量候选 item 做打分。
3. 核心技术贡献
第一,MixFormer 提出统一参数化的推荐 Transformer,把 long-sequence aggregation 与 dense feature interaction 放到同一 backbone 中,解决传统 stacked/parallel 结构的容量割裂。它的机制不是简单拼接,而是让高阶 dense head 直接成为序列 cross-attention 的 query,使 item/context 语义参与历史聚合。
第二,Query Mixer 替代 self-attention 是面向推荐异构特征的实用设计。论文消融显示,将 HeadMixing 换成更贵的 self-attention 没有观察到收益,说明推荐字段之间并不天然满足语言 token 那样的内积相似度假设;零额外参数的 HeadMixing 加 per-head FFN 更适合大规模稀疏字段。
第三,User-Item Decoupling 把统一模型从“好看但贵”推进到可服务。UI-MixFormer-medium 在保持同等 AUC/UAUC 的情况下,把 FLOPs/Batch 从 3503 降到 2242,约 36% FLOPs reduction。这种请求级复用对候选规模大的推荐/广告排序非常关键。
第四,论文给出了真实工业证据,而不是只在公开小数据集验证。数据来自抖音推荐系统连续两周、万亿级 user-item 交互,每条样本超过 300 个特征,线上 A/B 覆盖 Douyin 和 Douyin Lite。
4. 实验结果分析
| 模型/设置 | Finish AUC | Finish UAUC | Skip AUC | Skip UAUC | Params | GFLOPs/Batch |
|---|---|---|---|---|---|---|
| TADLRM | 0.8554 | 0.8270 | 0.8124 | 0.7294 | 9M | 52 |
| STCARankMixer | +1.12% | +1.40% | +1.43% | +2.14% | 1255M | 6736 |
| OneTrans | +1.05% | +1.31% | +1.30% | +1.95% | 316M | 23371 |
| MixFormer-small | +1.01% | - | +1.18% | - | 282M | 733 |
| MixFormer-medium | +1.28% | +1.60% | +1.60% | +2.46% | 1226M | 3503 |
| UI-MixFormer-medium | +1.28% | +1.60% | +1.60% | +2.46% | 1226M | 2242 |
离线对比显示,简单堆叠或并行连接序列模块和特征交互模块只能带来有限差异;真正的提升来自统一参数化。MixFormer-medium 在 Finish/Skip 两个任务上均超过 STCARankMixer 和 OneTrans,尤其 Skip UAUC 达 +2.46%,说明它不只提升平均点击类指标,也改善用户级排序一致性。UI-MixFormer-medium 与 MixFormer-medium 指标相同,但 FLOPs 从 3503 降到 2242,证明 decoupling 没有牺牲精度。
线上 A/B 更能说明工业价值。相对线上最强 STCARankMixer baseline,Douyin app 整体 Active Day +0.0415%、Duration +0.2799%、Like +0.1766%、Finish +0.3897%、Comment +0.7035%;Douyin Lite 整体 Active Day +0.0252%、Duration +0.4105%、Like +0.2125%、Finish +0.2924%、Comment +1.9097%。低活用户增益更明显:Douyin Lite 低活 Like +3.0565%、Comment +2.6452%,说明统一长序列和 dense 特征对弱行为用户的兴趣理解更有帮助。
消融实验指出三个组件重要:Query Mixer 的 HeadMixing、per-head FFN,以及 Cross Attention 中 per-layer FFN 都有贡献。替换成更贵的 self-attention 没有可见收益,支持“异构推荐字段不适合直接 token self-attention”的假设。Scaling analysis 也关键:固定 sequence length=512 时,单独扩 RankMixer 比单独扩 sequence component 边际收益更大;但 MixFormer 在不同 FLOPs budget 下有更高 intercept 和有竞争力的 scaling slope,说明统一结构让 dense 与 sequence 两侧共同受益。序列长度 scaling 覆盖 512、2048、8192、10000,指向长行为历史下的扩展能力。
5. 局限与未来方向
作者没有把局限章节写得很重,但从正文可以看到几类约束。第一,实验依赖 ByteDance 内部超大规模数据和混合分布式训练框架,公开复现难度高;线上收益虽强,但外部团队只能复现架构思路,无法验证同等规模效果。第二,MixFormer 的收益建立在丰富 sequential + non-sequential 特征共存的场景,如果业务只有短历史或特征工程较弱,统一 backbone 的边际收益可能不如论文。第三,UI decoupling 需要对特征字段和请求打分方式有清晰拆分,候选组织不稳定的系统可能难以直接复用 user-side computation。第四,论文主要报告 AUC/UAUC 和互动指标,没有深入讨论多目标冲突、内容生态、安全性或长期留存的负向影响。未来方向应包括:对多目标排序约束的统一建模、与生成式推荐/语义 ID 的结合、公开 benchmark 复现,以及在更低成本硬件上的推理优化。
6. 工业实践意义
对社区搜索/推荐系统,MixFormer 的启发是架构升级要围绕“长行为序列 + 稠密上下文/内容特征”的共同扩展,而不是把序列模型作为独立插件。UGC 场景里的用户历史包括点击、停留、收藏、评论、关注、跳出等多行为序列;非顺序特征包括 query、帖子文本/图像、作者、话题、地理、时间和安全质量分。若二者分开建模,排序模型很难让“当前候选内容语义”精确控制“应该关注哪段历史”。MixFormer 的 cross-attention 设计正适合这个问题:用候选和上下文产生的 high-order heads 去检索用户历史中的相关行为。
实践落地可分三步。第一,先在现有 ranker 中引入 feature-head split 和轻量 Query Mixer,替换一部分高阶交互模块,验证异构字段下 HeadMixing 是否比 self-attention 更稳。第二,把序列聚合从固定 target attention 升级成 feature-conditioned cross attention,让不同候选用不同子查询读取历史。第三,在候选批打分服务中实现 user-item decoupling 和 request-level batching,确保扩容不会被 latency 吃掉。对低活用户,论文线上结果显示收益更大,这对社区冷启动和低频用户尤其有吸引力。
需要避免的误区是只看“Transformer 推荐大模型”这个标签而忽略成本。MixFormer-medium 仍有 1226M dense params,训练用数百 GPU,直接复制不现实;真正可复用的是统一参数化原则、head-level 异构建模和请求级复用策略。对于中小团队,可以先做小型 MixFormer block 作为重排层或 multi-task tower,在 CTR/完播/互动多目标上观察 AUC、UAUC、延迟和低活用户分层收益,再决定是否扩大到主排序链路。