← Back to list
MTGR

MTGR: Industrial-Scale Generative Recommendation Framework in Meituan

判别式推荐 Meituan
Abstract 8 Reading 8 Rating —
2025-05-24
Ruidong Han, Bin Yin, Shangyu Chen, He Jiang, Fei Jiang, Xiang Li, Chi Ma, Mincong Huang, Xiaoguang Li, Chunzhen Jing, Yueming Han, Menglei Zhou, Lei Yu, Chuan Liu, Wei Lin
Meituan
提出 MTGR 框架,结合 DLRM 的交叉特征与 GRM 的 Transformer 可扩展性,通过用户聚合、GLN 和动态掩码实现工业级排序模型的高效扩展
transformer industrial ad-rec feature-interaction parameter-scaling

MTGR: Industrial-Scale Generative Recommendation Framework in Meituan

1. 研究背景与动机

Scaling law 已在 NLP 和 CV 领域得到广泛验证。在工业推荐系统中,如何有效扩展排序模型(ranking model)是核心问题。当前扩展排序模型的方式分为两大类:

  • DLRM (Deep Learning Recommendation Model):对每个 user-item pair 独立建模,输入包含大量精心构造的交叉特征(cross features),通过特征交互模块(MLP)学习排序概率。DLRM 的问题在于:(1) 无法高效处理完整用户行为序列;(2) 推理成本与候选数量线性相关。
  • GRM (Generative Recommendation Model):将数据组织为 token 序列,使用 Transformer 做 next-token prediction,具备优秀的可扩展性。GRM 的问题在于:必须放弃 DLRM 中精心构造的交叉特征,而实验表明这种退化无法通过模型扩展来弥补。

MTGR 的核心动机:能否构建一个既保留交叉特征又具备 GRM 可扩展性的排序模型?

2. 方法

2.1 数据组织

传统 DLRM 中,第 $i$ 个样本由 user 和第 $i$ 个候选的特征对组成:

$$\mathbb{D}_i = [\mathbf{U}, \overrightarrow{\mathbf{S}}, \overrightarrow{\mathbf{R}}, \mathbf{C}_i, \mathbf{I}_i] \tag{1}$$

其中:

  • $\mathbf{U} = [\mathbf{U}^1, ..., \mathbf{U}^{N_U}]$:用户 profile 特征(年龄、性别等),每个 $\mathbf{U}^j$ 为标量
  • $\overrightarrow{\mathbf{S}} = [\mathbf{S}^1, ..., \mathbf{S}^{N_S}]$:用户历史行为序列,每个 $\mathbf{S}^i = [\mathbf{s}^1, ..., \mathbf{s}^{N_s}]$,每个 item 包含 ID、tag、平均 CTR 等特征
  • $\overrightarrow{\mathbf{R}}$:用户实时行为序列(最近数小时/一天内的交互)
  • $\mathbf{C} = [\mathbf{C}^1, ..., \mathbf{C}^{N_C}]$:交叉特征(用户与候选之间的交叉统计量,如用户对该候选的历史 CTR)
  • $\mathbf{I} = [\mathbf{I}^1, ..., \mathbf{I}^{N_I}]$:候选特征(item ID、tag、brand 等)

2.2 传统 DLRM 排序流程

传统 DLRM 对每个样本独立处理: 1. 将 $\mathbf{U}, \mathbf{C}, \mathbf{I}$ 的特征分别 embedding 并拼接为 $\text{Emb}_\mathbf{U} \in \mathbb{R}^{K \times d_U}$, $\text{Emb}_\mathbf{C} \in \mathbb{R}^{K \times d_C}$, $\text{Emb}_\mathbf{I} \in \mathbb{R}^{K \times d_I}$ 2. 序列特征 $\overrightarrow{\mathbf{S}}$ 中每个 item 特征独立 embedding 后拼接为 $\text{Emb}_{\overrightarrow{S}} \in \mathbb{R}^{N_{\overrightarrow{S}} \times d_s}$ 3. 通过 Target Attention 提取序列兴趣表示:

$$\text{Feat}_{\overrightarrow{S}} = \text{Attention}(\text{Emb}_\mathbf{I}, \text{Emb}_{\overrightarrow{S}}, \text{Emb}_{\overrightarrow{S}}) \in \mathbb{R}^{K \times d_S} \tag{2}$$

  1. 所有特征拼接后送入 MLP 输出 logit:

$$\text{Feat}_\mathbb{D} = [\text{Emb}_\mathbf{U}, \text{Feat}_{\overrightarrow{S}}, \text{Feat}_{\overrightarrow{R}}, \text{Emb}_\mathbf{C}, \text{Emb}_\mathbf{s}] \in \mathbb{R}^{K \times (d_U + d_S + d_C + d_I)} \tag{3}$$

2.3 DLRM 扩展困境

扩展 DLRM 有两条路径,但都有瓶颈:

  • 扩展交叉模块(cross module):即扩展特征交互 MLP。由于 cross module 对每个候选独立推理,推理成本与候选数量线性相关,导致延迟不可接受。
  • 扩展用户模块(user module):只扩展用户侧参数。用户表示只计算一次,推理友好,但用户模块不涉及 user-item 交互,对性能提升有限。

MTGR 通过数据重组织和架构优化,实现了 user-item 交互的高效扩展,同时推理成本随候选数量亚线性增长。

2.4 MTGR 的用户聚合(User Sample Aggregation)

MTGR 将同一用户在特定时间窗口内的所有候选聚合为一个样本。聚合后的数据格式:

$$\mathbb{D} = [\mathbf{U}, \overrightarrow{\mathbf{S}}, \overrightarrow{\mathbf{R}}, [\mathbf{C}, \mathbf{I}]_1, ..., [\mathbf{C}, \mathbf{I}]_K] \tag{4}$$

关键设计:交叉特征 C 被安排在候选 token 中,而非作为共享特征。这使得 MTGR 可以保留交叉特征的同时享受聚合带来的效率提升。

聚合的效果:

  • 训练阶段:大幅减少训练样本数,因为同一用户的所有候选共享用户表示
  • 推理阶段:同一请求中的候选已自然聚合,只需一次前向推理即可对所有候选排序,推理成本随候选数量亚线性增长

2.5 Token 化与特征统一

MTGR 将所有特征转化为统一维度 $d_{\text{model}}$ 的 token:

  • 标量特征($\mathbf{U}$):每个特征直接映射为一个 token,$\text{Feat}_\mathbf{U} \in \mathbb{R}^{N_U \times d_{\text{model}}}$
  • 序列特征($\overrightarrow{\mathbf{S}}, \overrightarrow{\mathbf{R}}$):序列中每个 item 的多个特征先 embedding 拼接,再通过 MLP 统一维度,$\text{Feat}_{\mathbf{S}_i} = \text{MLP}(\text{Concat}(\text{Emb}_\mathbf{s})) \in \mathbb{R}^{d_{\text{model}}}$
  • 候选特征($[\mathbf{C}, \mathbf{I}]$):每个候选的交叉特征和 item 特征一起 embedding 拼接后通过 MLP 统一

最终,所有 token 拼接为一个长序列:

$$\text{Feat}_\mathbb{D} = \text{Concat}([\text{Feat}_\mathbf{U}, \text{Feat}_{\overrightarrow{S}}, \text{Feat}_{\overrightarrow{R}}, \text{Feat}_\mathbf{I}]) \in \mathbb{R}^{(N_U + N_{\overrightarrow{S}} + N_{\overrightarrow{R}} + N_I) \times d_{\text{model}}} \tag{5}$$

2.6 Unified HSTU Encoder

MTGR 采用 HSTU(Hierarchical Sequential Transduction Units)的 encoder-only 架构,由 $L$ 层 self-attention 堆叠而成。每层 self-attention block 的计算流程:

Step 1: Group-Layer Normalization (GLN)

输入 token 序列 $\mathbf{X}$ 先按 domain 分组做 layer norm。不同类型的 token(U、$\overrightarrow{\mathbf{S}}$、$\overrightarrow{\mathbf{R}}$、候选)分别归属不同的 group,每个 group 内独立做 layer normalization:

$$\tilde{X} = \text{GroupLN}(\mathbf{X}) \tag{6}$$

GLN 的设计动机:不同类型的 token 来自不同语义空间,具有不同的分布特征。统一 layer norm 会混淆不同分布,而 GLN 通过分组归一化确保不同语义空间的 token 在进入 self-attention 前对齐到各自合适的分布。

Step 2: 多头注意力

归一化后的输入通过 4 个投影得到 K, Q, V, U:

$$\mathbf{K}, \mathbf{Q}, \mathbf{V}, \mathbf{U} = \text{MLP}_{K/Q/V/U}(\tilde{X}) \tag{7}$$

注意力计算使用 silu 非线性激活,attention score 除以总序列长度做平均归一化,并施加自定义掩码 $\mathbf{M}$:

$$\tilde{\mathbf{V}} = \frac{\text{silu}(\mathbf{K}^T \mathbf{Q})}{(N_U + N_{\overrightarrow{S}} + N_{\overrightarrow{R}} + N_I)} \mathbf{M} \mathbf{V} \tag{8}$$

投影后的 $\mathbf{U}$ 与更新后的 $\tilde{\mathbf{V}}$ 做逐元素乘积(dot-product),再通过 GLN 和残差 MLP:

$$\mathbf{X} = \text{MLP}(\text{GroupLN}(\tilde{\mathbf{V}} \odot \mathbf{U})) + \mathbf{X} \tag{9}$$

2.7 Dynamic Masking 策略

传统 HSTU 使用因果掩码做序列建模,但在 MTGR 中简单的因果掩码不够用。原因在于:$\overrightarrow{\mathbf{R}}$(实时行为序列)记录用户最近的交互,其时间戳可能与样本聚合窗口重叠,直接因果掩码会导致信息泄露。

MTGR 将 token 分为静态序列动态序列两类,设计三条掩码规则:

  1. 静态序列($\mathbf{U}, \overrightarrow{\mathbf{S}}$)对所有 token 可见(full attention)
  2. 动态序列($\overrightarrow{\mathbf{R}}$)遵循因果性,每个 token 只对时间上在其之后的 token 可见(包括候选 token)
  3. 候选 token($[\mathbf{C}, \mathbf{I}]$)只对自身可见(diagonal masking)

具体示例:假设 token 序列为 [age, ctr | seq1, seq2 | rt1, rt2 | target1, target2, target3]:

  • age, ctr(U 类型):full attention,对所有 token 可见
  • seq1, seq2($\overrightarrow{\mathbf{S}}$):full attention
  • rt1:假定在 rt2 之后出现,rt1 能看到 rt2 的信息但 rt2 看不到 rt1
  • target1, target2, target3:每个只能看到自己,且 rt2 看不到任何 target(rt2 时间上在所有 rt 之前)

3. 训练系统

3.1 基于 TorchRec 的训练框架

MTGR 放弃了常用的 TensorFlow 框架,选择基于 TorchRec 构建训练框架,并做了多项优化。相比原版 TorchRec,训练吞吐提升 1.6x - 2.4x,在 100+ GPU 上保持良好可扩展性。

3.2 Dynamic Hash Table

TorchRec 使用固定大小静态 embedding table,在大规模工业流式训练场景中不适用(新用户/新 item 无法分配 embedding,预留空间浪费内存)。MTGR 设计了高性能动态哈希表:

  • 解耦架构:key 存储和 value 存储分离
  • key 存储:轻量级映射系统,将 key 映射为指向 embedding 向量的指针
  • value 存储:包含 embedding 向量及计数器、时间戳等元数据(用于淘汰策略)
  • 扩容时只需复制轻量的 key 存储,避免复制大量 embedding

3.3 Embedding Lookup

采用 All-to-All 通信实现跨设备 embedding 交换。实现了两步去重(通信前后各一次),最小化重复 ID 传输。

3.4 Load Balance(动态 BS)

用户行为序列呈长尾分布,固定 batch size 会导致 GPU 间负载不均。MTGR 引入 dynamic BS:每个 GPU 的 local BS 根据输入实际序列长度动态调整,确保计算负载均衡。梯度聚合时按各 GPU 的 BS 加权。

3.5 其他优化

  • 三流水线并行:copy stream(CPU→GPU 数据搬运)、dispatch stream(embedding lookup)、compute stream(前向/反向计算),三者重叠执行
  • bf16 混合精度训练
  • 基于 cutlass 的定制 attention kernel

4. 实验

4.1 数据集

实验基于美团真实工业数据集,包含丰富的交叉特征和长用户行为序列:

数据集 #Users #Items #Exposure #Click #Purchases
Train 0.21 billion 4,302,391 23.74 billion 1.08 billion 0.18 billion
Test 3,021,198 3,141,997 76,855,608 4,545,386 769,534

离线实验使用 10 天数据,在线实验使用 6 个月以上数据。

4.2 Baseline

DLRM 类

  • SIM:基于序列检索的方法
  • E2E:端到端建模长序列
  • 扩展策略包括:DNN(基础 DNN)、MoE(4 expert,每个 expert 与 DNN 同复杂度)、Wukong(可堆叠的 Wukong layer)、MultiEmbed(多 embedding 策略)、UserTower(可学习 query + 16 expert MoE 用户模块)

MTGR 三种规模

Model Setting Learning rate GFLOPs/example
UserTower-SIM - $8 \times 10^{-4}$ 0.86
MTGR-small $n_{\text{layer}}=3, d_{\text{model}}=512, n_{\text{heads}}=2$ $3 \times 10^{-4}$ 5.47
MTGR-medium $n_{\text{layer}}=5, d_{\text{model}}=768, n_{\text{heads}}=3$ $3 \times 10^{-4}$ 18.59
MTGR-large $n_{\text{layer}}=15, d_{\text{model}}=768, n_{\text{heads}}=3$ $1 \times 10^{-4}$ 55.76

评估指标:CTR 和 CTCVR(Click-Through Conversion Rate)两个任务,使用 AUC 和 GAUC(Group AUC,按用户分组的 AUC 均值)。

4.3 Overall Performance(Table 3)

Model CTR AUC CTR GAUC CTCVR AUC CTCVR GAUC
DNN-SIM 0.7432 0.6679 0.8737 0.6504
MoE-SIM 0.7484 0.6698 0.8750 0.6519
MultiEmbed-SIM 0.7501 0.6715 0.8766 0.6525
Wukong-SIM 0.7568 0.6759 0.8800 0.6530
UserTower-SIM 0.7593 0.6792 0.8815 0.6550
UserTower-E2E 0.7576 0.6787 0.8818 0.6548
MTGR-small 0.7631 0.6826 0.8840 0.6603
MTGR-medium 0.7645 0.6843 0.8849 0.6625
MTGR-large 0.7661 0.6865 0.8862 0.6646
Impr.% 0.8956 1.0748 0.4990 1.4656

结论

  • 在所有 DLRM 变体中,Wukong-SIM 和 MultiEmbed-SIM 优于 MoE-SIM,UserTower-SIM 表现最佳
  • UserTower-E2E 相比 UserTower-SIM 略有下降,推测是 DLRM paradigm 下模型复杂度不足以充分建模全序列信息,导致 underfitting
  • MTGR-small 即超越最强 DLRM baseline(UserTower-SIM),且三个规模的 MTGR 均展现良好的可扩展性,性能随复杂度平滑提升
  • 最佳 MTGR(large)相比最强 DLRM baseline 的提升(Impr.%):CTR GAUC +1.07%,CTCVR GAUC +1.47%(在工业场景中,0.001 的离线指标提升被视为显著)

4.4 Ablation Study(Table 4)

Model CTR AUC CTR GAUC CTCVR AUC CTCVR GAUC
MTGR-small 0.7631 0.6826 0.8840 0.6603
w/o cross features 0.7495 0.6689 0.8736 0.6514
w/o GLN 0.7606 0.6809 0.8826 0.6585
w/o dynamic mask 0.7620 0.6810 0.8828 0.6587

结论

  • 去除交叉特征后性能大幅下降(CTR GAUC: 0.6826→0.6689,下降 0.0137),甚至抹去了 MTGR-large 相比 DLRM 的优势,证明交叉特征在真实推荐系统中至关重要
  • 去除 GLN 导致性能下降(CTR GAUC 下降 0.0017,CTCVR GAUC 下降 0.0018),说明分组归一化对异构 token 建模有效
  • 去除 Dynamic Masking 也导致类似程度下降,说明信息泄露防护的必要性
  • GLN 和 Dynamic Masking 的消融幅度相当,都是 MTGR 的重要组件

4.5 Scalability(Figure 3)

基于 MTGR-small 分别调整三个超参数:

  • HSTU block 数量(2→8):CTCVR GAUC 从 ~0.659 平滑上升到 ~0.662
  • $d_{\text{model}}$(128→1024):CTCVR GAUC 从 ~0.654 平滑上升到 ~0.661
  • 序列长度(100→5000):CTCVR GAUC 从 ~0.655 平滑上升到 ~0.663

Figure 3(d) Scaling Law:以 UserTower-SIM 为基准,横轴为计算复杂度的对数倍数 $\log_2(\text{flops})$,纵轴为 CTCVR GAUC 增益。数据点呈现清晰的幂律关系(power-law),验证了 MTGR 具备 scaling law 特性。

4.6 Online Experiments(Table 5)

在美团外卖平台部署,A/B 测试占 2% 流量,日曝光量达数百万。对比 baseline 为持续训练 2 年以上的最先进 DLRM 模型(UserTower-SIM)。MTGR 使用 6 个月数据训练。

Model Offline CTR GAUC diff Offline CTCVR GAUC diff Online PV_CTR Online UV_CTCVR
MTGR-small +0.0036 +0.0154 +1.04% +0.04%
MTGR-medium +0.0071 +0.0182 +2.29% +0.62%
MTGR-large +0.0153 +0.0288 +1.90% +1.02%

结论

  • 尽管 MTGR 的训练数据量远少于 DLRM baseline,离线和在线指标仍大幅超越
  • MTGR-large:离线 CTCVR GAUC 提升 +0.0288,在线 UV_CTCVR +1.02%(UV_CTCVR 是衡量业务增长最关键的指标)
  • 随训练 token 数增加,MTGR 相比 DLRM 的优势持续放大
  • MTGR-large 已全面部署上线,训练成本与 DLRM 持平,推理成本降低 12%
  • 对比 DLRM:DLRM 推理成本与候选数量线性相关;MTGR 通过用户聚合实现亚线性推理成本

5. 核心贡献总结

  1. MTGR 框架:首次在 GRM 架构中保留 DLRM 的交叉特征,通过将交叉特征嵌入候选 token 实现两者优势的统一
  2. Group-Layer Normalization (GLN):对不同语义空间的 token 分组归一化,提升异构信息的建模能力
  3. Dynamic Masking:基于静态/动态序列分类的灵活掩码策略,防止信息泄露并保持高效注意力
  4. TorchRec 优化:动态哈希表、动态 BS、三流水线并行等系统优化,训练吞吐提升 1.6x-2.4x
  5. 工业验证:在美团外卖主流量上线,转化量提升 1.22%,CTR 提升 1.31%,推理成本降低 12%,是近两年最大的排序模型收益