1. 研究背景与动机¶
工业推荐系统正进入 scaling-driven 时代,Transformer 架构因其强大的表达能力和并行性,成为大规模推荐模型的主流选择。现有 Transformer 推荐模型面临一个核心结构性问题:序列建模(sequence modeling)和特征交互(feature interaction)被实现为独立的模块,参数各自独立。
这种分离式设计带来了 co-scaling 困境:
- 序列 Transformer 的计算成本随序列长度快速增长
- 密集特征 Transformer 的计算主要随模型宽度/特征维度增长
- 在固定计算预算下,两个模块争夺资源,导致全局次优
现有的组合方式主要有两种: 1. Stacked(层叠式):序列模块输出作为密集模块输入(如 STCA→RankMixer) 2. Parallel(并行式):两个模块并行运行后拼接(如 RankMixer⊕STCA、OneTrans)
两种方式都保持了序列与非序列参数的严格分离,限制了跨模块交互深度。
MixFormer 的核心论点:有效的 co-scaling 需要将序列建模和特征交互统一到单一参数空间中联合优化。
2. MixFormer 架构¶
2.1 总体结构¶
MixFormer 是一个 decoder-only Transformer 变体,面向多任务推荐系统设计。整体架构由以下部分组成:
- 输入层:负责特征嵌入和分头(Feature Embedding and Splitting)
- L 个 MixFormer Block:核心计算单元
- 多个任务网络(Task Networks):下游任务头
2.2 Feature Embedding and Splitting¶
输入特征分为两类:
Sequential features(序列特征):用户历史交互序列,每个 action 包含 item ID、action type、timestamp 及附属信息。时间步 $t$ 的 action 表示为 $\mathbf{s}_t$,用户行为序列表示为:
$$S = [\mathbf{s}_1, \mathbf{s}_2, \cdots, \mathbf{s}_T]$$
Non-sequential features(非序列特征):包括 user features、item features 和 context features。设非序列特征集合 $\mathcal{F}_{\text{ns}} = \{f_1, f_2, \ldots, f_M\}$,每个特征 $f_i$ 映射为 $\mathbf{e}_i \in \mathbb{R}^{d_i}$,拼接后得到:
$$\mathbf{e}_{\text{ns}} = [\mathbf{e}_1; \mathbf{e}_2; \ldots; \mathbf{e}_M] \in \mathbb{R}^{D_{\text{ns}}} \quad (1)$$
其中 $D_{\text{ns}} = \sum_{i=1}^{M} d_i$。
为适配 Transformer 多头设计,$\mathbf{e}_{\text{ns}}$ 被均匀切分为 $N$ 个子向量(维度 $d = D_{\text{ns}}/N$),每个子向量通过线性投影到 $D$ 维:
$$\mathbf{x}_j = \mathbf{W}_j \cdot \mathbf{e}_{\text{ns}}[d \cdot (j-1) : d \cdot j], \quad j = 1, \ldots, N \quad (2)$$
其中 $\mathbf{W}_j \in \mathbb{R}^{D \times d}$,最终 $X = [\mathbf{x}_1, \ldots, \mathbf{x}_N] \in \mathbb{R}^{ND}$ 作为非序列输入。
2.3 MixFormer Block¶
每个 MixFormer Block 包含三个核心模块,分别对应标准 Transformer decoder 的 Self-Attention、Cross-Attention 和 FFN:
2.3.1 Query Mixer(对应 Self-Attention)¶
在推荐场景中,query 来源于高度异构的特征域(用户属性、物品属性、上下文信号等),不同特征语义空间差异大。传统的基于内积的 self-attention 在这种异构性下不可靠,计算注意力权重效果不佳且计算开销大。
MixFormer 采用轻量级的 Query Mixer 模块替代 self-attention,灵感来自 RankMixer [29]:
$$P = [\mathbf{p}_1, \cdots, \mathbf{p}_N] = \text{HeadMixing}(\text{Norm}(X)) + X \quad (3)$$ $$\mathbf{q}_i = \text{SwiGLUFFN}_i(\text{Norm}(\mathbf{p}_i)) + \mathbf{p}_i \quad (4)$$
HeadMixing 操作:将 $X$ reshape 为 $\mathbb{R}^{N \times N \times \frac{D}{N}}$,转置前两个维度,再 flatten 回 $\mathbb{R}^{N \times D}$。这是一个零参数的跨头信息交换操作。
FFN 为 per-head FFN:每个 head 独立的 SwiGLUFFN,显式处理特征异构性。
2.3.2 Cross Attention(序列聚合)¶
Cross Attention 模块基于 Query Mixer 产生的高阶特征表示,聚合用户行为序列信息。$N$ 个 Query Mixer 的输出 head 直接作为 cross attention 的 $N$ 个 head,每个 head 关注特定子空间的非序列特征,构成语义特化的 sub-query。
序列中每个 action $\mathbf{s}_t$ 先通过 per-layer SwiGLUFFN 变换到与 query 对齐的潜空间:
$$\mathbf{h}_t = \text{SwiGLUFFN}^{(l)}(\text{Norm}(s_t)) + \mathbf{s}_t \in \mathbb{R}^{ND} \quad (5)$$ $$\mathbf{h}_t^i = \mathbf{h}_t[iD : (i+1)D] \in \mathbb{R}^D \quad (6)$$ $$\mathbf{k}_t^i = \mathbf{W}_k^i \mathbf{h}_t^i; \quad \mathbf{v}_t = \mathbf{W}_v^i \mathbf{h}_t^i \quad (7)$$
其中 $\mathbf{W}_k^i, \mathbf{W}_v^i \in \mathbb{R}^{D \times D}$ 是每层独立参数化的投影矩阵。注意与标准 cross-attention 不同,这些 per-layer SwiGLUFFN 是独立参数化的,使模型能随深度逐步细化序列表示。
第 $i$ 个 query head 的输出:
$$z_i = \sum_{t=1}^{T} \text{softmax}\left(\frac{\mathbf{q}_i^T \mathbf{k}_t^i}{\sqrt{D}}\right) \mathbf{v}_t^i + \mathbf{q}_i, \quad i = 1, \ldots, N \quad (8)$$
2.3.3 Output Fusion(对应 FFN)¶
对 Query Mixer 产生的高阶非序列表示和 Cross Attention 产生的序列聚合表示进行深度非线性融合:
$$\mathbf{o}_i = \text{SwiGLUFFN}_i(\text{Norm}(z_i)) + z_i \quad (9)$$
同样采用 per-head SwiGLUFFN,独立处理每个 head 以保持特征子空间的多样性。Output Fusion 的输出作为下一个 MixFormer Block 的输入。
关键设计要点:Query Mixer 和 Output Fusion 中的 per-head FFN 同时服务于序列和非序列特征,形成统一参数化,不再有两个独立模块之间的参数分配问题。
2.4 User-Item Decoupling(UI-MixFormer)¶
为适配工业部署中的 Request Level Batching (RLB) 加速策略,提出 UI-MixFormer 变体。
Feature Decoupling:将非序列特征分为 user-side 和 item-side 子集,分别投影为 $N_U$ 和 $N_G$ 个 head。$N_G = \lfloor \frac{D_{\text{ns}}^G}{D_{\text{ns}}} N \rfloor$,$N_U = N - N_G$,实际中 $N_U : N_G$ 设为 1:1。
Query Mixer with Mask:设计 mask 矩阵 $\mathcal{M} \in \mathbb{R}^{N \times D}$:
$$\mathcal{M}[i, j] = \begin{cases} 0, & i \lt N_U \ \text{and} \ j \geq N_U * \frac{D}{N} \\ 1, & \text{otherwise} \end{cases} \quad (10)$$
$$\text{HeadMixing}_{\text{decouple}}(\cdot) = \mathcal{M} \odot \text{HeadMixing}(\cdot) \quad (11)$$
这确保 user-side head 不包含 item-side 信号,从而可在同一 request 内跨多个候选 item 共享 user-side 计算。序列特征(用户历史行为)也属于 user-side,cross-attention 中 user-side head 与 sequence head 的计算同样可以共享。
UI-MixFormer 实现了约 36% 的 FLOPs 减少,同时保持近乎相同的精度。
3. 实验¶
3.1 实验设置¶
数据集:来自抖音推荐系统的大规模离线数据集,跨两个连续周,包含万亿级用户-物品交互记录。每条样本关联 300+ 特征(非序列特征包括 categorical、numerical、cross features;序列特征为用户历史)。
评估指标:
- 精度:AUC 和 User-level AUC (UAUC)
- 效率:参数量(#Params)和 FLOPs(GFLOPs/Batch)
任务:CTR 预测(二分类)。包含两个场景:Finish(完播)和 Skip(跳过)。
超参数:$N = 16, L = 4$。MixFormer-small: $D = 386$;MixFormer-medium: $D = 768$。
Baselines:
- Stacked 方法:TA→DLRM, TA→DCNv2, TA→DHEN, TA→Wukong, STCA→DCNv2, STCA→RankMixer
- Parallel 方法:OneTrans, STCA⊕RankMixer
3.2 主实验结果(Table 1, L=512)¶
以 TA→DLRM 的绝对值 (Finish AUC=0.8554, UAUC=0.8270, Skip AUC=0.8124, UAUC=0.7294) 为基准,其余模型报告相对提升:
| Type | Model | Finish AUC↑ | Finish UAUC↑ | Skip AUC↑ | Skip UAUC↑ | #Params(M) | GFLOPs/Batch |
|---|---|---|---|---|---|---|---|
| Stacked | TA→DLRM | 0.8554 | 0.8270 | 0.8124 | 0.7294 | 9 | 52 |
| Stacked | TA→DCNv2 | +0.13% | +0.13% | +0.15% | +0.26% | 22 | 170 |
| Stacked | TA→DHEN | +0.18% | +0.26% | +0.36% | +0.52% | 22 | 158 |
| Stacked | TA→Wukong | +0.29% | +0.29% | +0.49% | +0.65% | 122 | 442 |
| Stacked | STCA→DCNv2 | +0.89% | +0.91% | +1.05% | +1.65% | 145 | 4,560 |
| Stacked | STCA→RankMixer | +0.95% | +1.22% | +1.25% | +1.82% | 1,118 | 2,180 |
| Stacked | STCA→RankMixer | +1.12% | +1.40% | +1.43% | +2.14% | 1,255 | 6,736 |
| Parallel | OneTrans | +1.05% | +1.31% | +1.30% | +1.95% | 316 | 23,371 |
| Parallel | STCA⊕RankMixer | +1.11% | +1.38% | +1.42% | +2.11% | 1,255 | 6,736 |
| Unified | MixFormer-small | +1.01% | - | +1.18% | - | 282 | 733 |
| Unified | MixFormer-medium | +1.28% | +1.60% | +1.60% | +2.46% | 1,226 | 3,503 |
| Unified | UI-MixFormer-medium | +1.28% | +1.60% | +1.60% | +2.46% | 1,226 | 2,242 |
核心发现: 1. Stacked 和 Parallel 方式在可比子结构下性能差异不大,说明仅改变组合模式(连接方式)不足以产生质的提升。 2. MixFormer-medium 在所有指标上全面超越最强 baseline STCA→RankMixer,Finish UAUC +0.20%,Skip UAUC +0.32%(相对于最强 baseline),同时 FLOPs 仅为其约一半。 3. UI-MixFormer-medium 在保持精度不变的情况下,FLOPs 从 3,503 降至 2,242(-36%)。 4. MixFormer-small 仅用 282M 参数和 733 GFLOPs 即达到接近最强 baseline 的性能。
3.3 在线 A/B 测试(Table 2)¶
在抖音和抖音极速版两个产品上进行 Feed 推荐场景的在线 A/B 实验,baseline 为线上部署的 STCA→RankMixer(超过 1B 参数)。实验持续两周,改进持续增长尚未收敛。
| 抖音 | 抖音极速版 | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Active Day↑ | Duration↑ | Like↑ | Finish↑ | Comment↑ | Active Day↑ | Duration↑ | Like↑ | Finish↑ | Comment↑ | |
| Overall | +0.0415% | +0.2799% | +0.1766% | +0.3897% | +0.7035% | +0.0252% | +0.4105% | +0.2125% | +0.2924% | +1.9097% |
| Low-active | +0.2263% | +0.2468% | +0.0771% | +0.4123% | +1.2483% | +0.2543% | +0.6044% | +3.0565% | +0.6157% | +2.6452% |
| Middle-active | +0.0998% | +0.2719% | +0.2445% | +0.2796% | +0.6718% | +0.1218% | +0.4184% | +0.2329% | +0.2951% | +1.3286% |
| High-active | +0.0203% | +0.2938% | +0.381% | +0.3335% | +0.8356% | +0.0237% | +0.4042% | +0.4871% | +0.2097% | +2.117% |
所有指标均有统计显著的提升。Low-active 用户群体受益最大(Active Day +0.2263%/+0.2543%),Comment 指标提升最为显著(抖音极速版整体 +1.9097%)。
3.4 Ablation Study¶
基于 MixFormer-small 的消融实验(Figure 3 中 AUC Gain 变化):
| 消融变体 | Finish AUC 变化 | Skip AUC 变化 |
|---|---|---|
| [QM] w/o HM(去掉 HeadMixing) | -0.03 | -0.03 |
| [QM] HM→SA(HeadMixing 替换为 SelfAttention) | ~0.00 | ~0.00 |
| [QM] w/o FFN(去掉 Query Mixer 中 per-head FFN) | -0.04 | -0.03 |
| [CA] PL-FFN→FFN(per-layer FFN 替换为 shared FFN) | -0.03 | - |
| [OF] PFFN→FFN(per-head SwiGLUFFN 替换为 shared) | -0.06 | - |
| Pre-RN→Post-LN | -0.01 | - |
关键结论: 1. HeadMixing 和 per-head FFN 都对性能有显著贡献。 2. 将 HeadMixing 替换为更昂贵的 SelfAttention 不带来性能提升,验证了 HeadMixing 在处理异构 head 时的高效性。 3. Output Fusion 中的 per-head FFN 影响最大(-0.06),说明独立处理异构 head 的融合至关重要。
3.5 Scaling Analysis¶
Dense Scaling(Figure 4,固定序列长度 512):
- 在固定 FLOPs 下,MixFormer 始终优于 STCA+RankMixer 组合、STCA+DCNv2 和 TA+RankMixer。
- MixFormer 具有更高的截距和具有竞争力的 scaling slope,得益于统一参数化带来的序列与非序列的深度交互。
- 组合式 baseline(STCA+RankMixer 1:1 组合)在固定序列长度下表现出 dense 和 sequence 之间的明显 trade-off。
Sequence Scaling(Figure 5,固定 dense 参数预算):
- 序列长度从 512 扩展到 10,000。
- 序列模型(如 STCA)从更长序列中获益更多,但 MixFormer 实现了与 STCA 相当的 scaling slope,受益于其统一参数化。
- 独立参数化模型面临明显的 co-scaling trade-off,而 MixFormer 在 dense 和 sequence 两个维度都表现出 SOTA scaling 行为。
3.6 Serving Latency(Figure 6)¶
结合 Request Level Batching,UI-MixFormer 实现超过 30% 的服务加速。随着候选 item 数量增加,GPU 利用率趋于饱和,UI-MixFormer 的延迟增长远慢于原始 MixFormer,在大候选集下优势更明显。
4. 核心创新总结¶
-
统一参数化:将序列建模和特征交互融入同一组 Transformer 参数,消除传统双模块设计中的参数分配困境。Query Mixer 和 Output Fusion 中的 per-head FFN 同时服务于两类特征。
-
零参数 HeadMixing:用简单的 reshape-transpose-flatten 操作替代 self-attention 做跨头信息交换,在异构特征场景下效果不逊于 self-attention,但计算量为零。
-
Per-head FFN 设计:Query Mixer、Cross Attention(per-layer FFN)和 Output Fusion 均采用独立 FFN 处理每个 head / 每层,保持特征子空间的多样性。
-
User-Item Decoupling:通过 mask 机制实现 user-side 和 item-side 计算的分离,使得 user-side 计算可在同一请求内跨候选共享,FLOPs 降低 36%,延迟降低 30%+。
5. 局限性¶
- 实验仅在抖音工业数据集上进行,缺乏公开学术数据集的验证
- 论文未讨论训练成本和收敛速度
- User-Item Decoupling 的 mask 设计较为 heuristic,$N_U : N_G = 1:1$ 的设定缺乏理论支撑