← Back to list
HSTU

Actions Speak Louder than Words

生成式推荐 判别式推荐 Meta
Abstract 10 Reading 10 Rating —
2024-02-27
Jiaqi Zhai, Lucy Liao, Xing Liu, Yueming Wang, Rui Li, Xuan Cao, Leon Gao, Zhaojie Gong, Fangda Gu, Michael He, Yinghai Lu, Yu Shi
Meta
提出 Generative Recommenders (GRs) 范式和 HSTU 架构,将推荐系统重新建模为序列转换任务,在工业规模下显著超越传统 DLRM,并展示推荐系统中的 scaling law
transformer industrial ad-rec parameter-scaling

1. 论文概述

本文由 Meta 团队提出 Generative Recommenders (GRs),一种全新的推荐系统范式。核心思想是将推荐问题重新建模为序列转换 (sequential transduction) 任务,用用户的行为动作(actions)作为一种新的"模态"进行生成式建模。为支撑这一范式,作者设计了 HSTU (Hierarchical Sequential Transduction Units) 架构,专为高基数 (high cardinality)、非平稳 (non-stationary) 的流式推荐数据优化。

关键贡献:

  • GR 范式:统一异构特征空间为序列化表示,将排序和检索重新建模为序列转换任务
  • HSTU 架构:比 FlashAttention2-based Transformers 快 5.3x-15.2x(序列长度 8192)
  • M-FALCON 算法:推理时通过微批处理完全分摊计算成本,实现 285x 更复杂模型在同等推理预算下部署
  • Scaling Law:首次展示推荐系统中类似语言模型的幂律缩放规律,训练计算量跨越三个数量级,达到 GPT-3/LLaMa-2 规模
  • 工业部署:1.5 万亿参数模型已在 Meta 多个表面上线,线上 A/B 测试提升 12.4%

2. 从 DLRM 到 Generative Recommenders

2.1 统一异构特征空间

传统 DLRM 使用大量异构特征(类别型 + 数值型)。GR 将这些特征统一为单一时间序列:

类别型(稀疏)特征:包括用户喜欢的物品、关注的创作者、用户语言、人口统计等。处理方式: 1. 选择最长的时间序列(通常是用户互动物品序列)作为主时间序列 2. 缓慢变化的辅助时间序列(如人口统计、关注创作者)通过压缩——保留每段连续相同值的最早条目,然后合并到主时间序列

数值型(稠密)特征:如 CTR 计数器、比率等。这些特征变化频繁,完全序列化不现实。但关键观察是:这些数值特征的聚合操作基于的类别特征(如物品主题、位置)已在 GR 中被序列化编码。因此,给定足够表达力的序列转换架构 + target-aware 公式,可以移除数值特征

2.2 将排序和检索重新建模为序列转换任务

给定 $n$ 个 token $x_0, x_1, \ldots, x_{n-1}$($x_i \in \mathbb{X}$),对应时间戳 $t_0, t_1, \ldots, t_{n-1}$,序列转换任务将输入映射到输出 $y_0, y_1, \ldots, y_{n-1}$($y_i \in \mathbb{X} \cup \{\varnothing\}$)。

用 $\Phi_i \in \mathbb{X}_c$($\mathbb{X}_c \subseteq \mathbb{X}$)表示系统推荐给用户的内容(如图片、视频),用户对 $\Phi_i$ 的回应动作为 $a_i$(如点赞、跳过、分享等)。

排序任务:通过交错 (interleaving) 物品和动作,公式化为:

$$p(a_{i+1}|\Phi_0, a_0, \Phi_1, a_1, \ldots, \Phi_{i+1})$$

(在类别特征之前),使用小型神经网络将 $\Phi_{i+1}$ 的输出转换为多任务预测。关键:这使得 target-aware 交叉注意力可以在一次 pass 中应用到所有 $n_c$ 个互动。

检索任务:学习分布 $p(\Phi_{i+1}|u_i)$,其中 $u_i$ 是用户在 token $i$ 处的表示,目标是选择 $\arg\max_{\Phi \in \mathbb{X}_c} p(\Phi|u_i)$。

任务 输入 $x_i$s 输出 $y_i$s
排序 $\Phi_0, a_0, \Phi_1, a_1, \ldots, \Phi_{n_c-1}, a_{n_c-1}$ $a_0, \varnothing, a_1, \varnothing, \ldots, a_{n_c-1}, \varnothing$
检索 $(\Phi_0, a_0), (\Phi_1, a_1), \ldots, (\Phi_{n_c-1}, a_{n_c-1})$ $\Phi'_1, \Phi'_2, \ldots, \Phi'_{n_c-1}, \varnothing$

2.3 生成式训练

工业推荐系统通常采用流式训练(每个样本按到达顺序处理一次)。传统印象级 (impression-level) 训练的计算复杂度为 $\sum_i n_i(n_i^2 d + n_i d_{ff} d)$。GR 通过以采样率 $s_u(n_i)$ 采样第 $i$ 个用户(设 $s_u(n_i) = 1/n_i$),将训练成本降至 $O(N^2 d + N d^2)$,减少 $O(N)$ 倍。实现方式是在用户请求/会话末尾发射训练样本,概率正比于 $1/n_i$。

3. HSTU 架构

3.1 整体结构

HSTU 是由残差连接的相同层堆叠而成,每层包含三个子层:

Pointwise Projection(逐点投影,公式1)

$$U(X), V(X), Q(X), K(X) = \text{Split}(\phi_1(f_1(X)))$$

Spatial Aggregation(空间聚合,公式2)

$$A(X)V(X) = \phi_2\left(Q(X)K(X)^T + \text{rab}^{p,t}\right) V(X)$$

Pointwise Transformation(逐点变换,公式3)

$$Y(X) = f_2(\text{Norm}(A(X)V(X)) \odot U(X))$$

其中:

  • $f_i(X)$ 为 MLP,使用单个线性层 $W_i X + b_i$($f_1$ 和 $f_2$ 各用一层以降低计算量)
  • $\phi_1$ 和 $\phi_2$ 为非线性激活,均使用 SiLU
  • Norm 为层归一化
  • $\text{rab}^{p,t}$ 为融合位置 $(p)$ 和时间 $(t)$ 信息的相对注意力偏置
  • $U(X)$ 用于"门控"注意力池化的值 $V(X)$,$\text{Norm}(A(X)V(X)) \odot U(X)$ 也可视为 SwiGLU 的变体

HSTU 的设计允许用单一模块替换 DLRM 中的多个异构模块:

  • Feature Extraction(特征提取):通过嵌入层检索类别特征的池化表示
  • Feature Interaction(特征交互):HSTU 通过 $\text{Norm}(A(X)V(X)) \odot U(X)$ 实现特征"交互",替代 FM、DCN 等
  • Representation Transformation(表示变换):元素级点积可虚拟实现 MoE 的门控操作

3.2 Pointwise Aggregated Attention

HSTU 采用逐点聚合(非归一化)注意力,而非 softmax 归一化注意力。动机: 1. target 相关的先前数据点数量是用户偏好强度的强信号,softmax 归一化后难以捕获 2. Softmax 对噪声鲁棒但不适合非平稳词表的流式场景

在合成数据(Dirichlet Process 生成非平稳词表的流式数据)上验证:

架构 HR@10 HR@50
Transformers .0442 .2025
HSTU (-rab^{p,t}, Softmax) .0617 .2496
HSTU (-rab^{p,t}) .0893 .3170

HSTU 的 pointwise attention 比 softmax 版本 HR@10 提升 44.7%。

3.3 Stochastic Length(随机长度)

用户历史序列长度呈偏态分布,利用这种稀疏性可显著提升效率。Stochastic Length (SL) 通过以下策略选择子序列:

给定用户 $j$ 的序列 $(x_i)_{i=0}^{n_{c,j}}$,令 $N_c = \max_j n_{c,j}$,选择长度 $L$ 的子序列 $(x_{i_k})_{k=0}^L$:

$$ (x_i)_{i=0}^{n_{c,j}} \text{ if } n_{c,j} \leq N_c^{\alpha/2} $$ $$ (x_{i_k})_{k=0}^{N_c^{\alpha/2}} \text{ if } n_{c,j} \gt N_c^{\alpha/2}, \text{ w/ probability } 1 - N_c^\alpha / n_{c,j}^2 $$ $$ (x_i)_{i=0}^{n_{c,j}} \text{ if } n_{c,j} \gt N_c^{\alpha/2}, \text{ w/ probability } N_c^\alpha / n_{c,j}^2 $$

这将注意力相关复杂度降至 $O(N_c^\alpha d) = O(N^\alpha d)$,$\alpha \in (1,2]$。

SL 对模型质量的影响(30天用户历史,工业规模配置):

Alpha ($\alpha$) Max Sequence Lengths 1,024 2,048 4,096 8,192
1.6 71.5% 76.1% 80.5% 84.4%
1.7 56.1% 63.6% 69.8% 75.6%
1.8 40.2% 45.3% 54.1% 66.4%
1.9 17.2% 21.0% 36.3% 64.1%
2.0 3.1% 6.6% 29.1% 64.1%

表中数值为序列稀疏度。$\alpha=2.0$ 表示不使用 SL 的基线。蓝色下划线标记为模型质量无明显退化的设置。在 $\alpha=1.6$ 时,长度 4096 的序列被压缩到 776,去除超过 80% 的 token,且主要指标 NE 退化不超过 0.002 (0.2%)。

3.4 高效 GPU 内核

作者开发了高效的注意力内核,将稀疏的 ragged attention 计算转换为分组 GEMM,实现全 ragged 注意力计算。这使得 HSTU 的自注意力变为内存受限,缩放为 $\Theta(\sum_i n_i^2 d_{qk} R^{-1})$($R$ 为寄存器大小),带来 2-5x 吞吐提升。

3.5 激活内存优化

HSTU 显著减少激活内存:

  • 注意力外部的线性层从 6 个减少到 2 个(与 SwiGLU 等方法对齐)
  • 将 $\phi_1(f_1(\cdot))$、层归一化、可选 dropout 和输出 MLP 融合为单一算子
  • 每层激活内存:$2d + 2d + 4hd_{qk} + 4hd_v + 2hd_v = 14d$(bfloat16)

对比 Transformer 每层需要 $33d$ 的总激活状态,HSTU 的设计使得可以构建超过 2 倍深度的网络。

3.6 M-FALCON 推理算法

M-FALCON (Microbatched-Fast Attention Leveraging Cacheable OperatioNs) 解决排序阶段需要对数千候选打分的挑战。

核心思想:通过修改注意力掩码和 $\text{rab}^{p,t}$ 偏置,在一个前向传播中并行处理 $b_m$ 个候选,使交叉注意力成本从 $O(b_m n^2 d)$ 降至 $O((n+b_m)^2 d) = O(n^2 d)$(当 $b_m = O(n)$ 时)。

将 $m$ 个候选分为 $\lceil m/b_m \rceil$ 个微批次,可选择跨前向传播或跨请求利用编码器级 KV 缓存。总体实现 285x 更复杂模型以线性扩展,在同等推理预算下实现 1.5x-3x 吞吐提升。

4. 实验

4.1 传统序列推荐设置(公开数据集)

在 MovieLens 和 Amazon Reviews 上与 SASRec 比较,使用 full-shuffle 和 multi-epoch 训练。

数据集 方法 HR@10 HR@50 HR@200 NDCG@10 NDCG@200
ML-1M SASRec (2023) .2853 .5474 .7528 .1603 .2498
ML-1M HSTU .3097 (+8.6%) .5754 (+5.1%) .7716 (+2.5%) .1720 (+7.3%) .2606 (+4.3%)
ML-1M HSTU-large .3294 (+15.5%) .5935 (+8.4%) .7839 (+4.1%) .1893 (+18.1%) .2771 (+10.9%)
ML-20M SASRec (2023) .2906 .5499 .7655 .1621 .2521
ML-20M HSTU .3252 (+11.9%) .5885 (+7.0%) .7943 (+3.8%) .1878 (+15.9%) .2774 (+10.0%)
ML-20M HSTU-large .3567 (+22.8%) .6149 (+11.8%) .8076 (+5.5%) .2106 (+30.0%) .2971 (+17.9%)
Books SASRec (2023) .0292 .0729 .1400 .0156 .0350
Books HSTU .0404 (+38.4%) .0943 (+29.5%) .1710 (+22.1%) .0219 (+40.6%) .0450 (+28.6%)
Books HSTU-large .0469 (+60.6%) .1066 (+46.2%) .1876 (+33.9%) .0257 (+65.8%) .0508 (+45.1%)

HSTU 标记的行使用与 SASRec 相同配置(相同层数、头数等)。HSTU-large 使用 4 倍层数和 2 倍头数。

扩展实验(Appendix D, Table 12)还包含 GRU4Rec 和 BERT4Rec 的比较,HSTU 显著优于所有方法。

4.2 工业规模流式设置

在工业规模数据集上训练超过 100B 样本(DLRM 等效量),64-256 张 H100 GPU。排序用 NE (Normalized Entropy) 评估,检索用 log perplexity 评估。

架构 检索 log pplx 排序 NE E-Task 排序 NE C-Task
Transformers 4.069 NaN NaN
HSTU (-rab^{p,t}, Softmax) 4.024 .5067 .7931
HSTU (-rab^{p,t}) 4.021 .4980 .7860
Transformer++ 4.015 .4945 .7822
HSTU (original rab) 4.029 .4941 .7817
HSTU 3.978 .4937 .7805

关键发现:

  • HSTU 显著优于 Transformers,主要归因于 pointwise attention 和改进的相对注意力偏置
  • 标准 Transformer 在排序中频繁出现 loss 爆炸(结果为 NaN),即使使用较低学习率和 pre-norm 残差连接
  • HSTU 在此小规模设置下比 Transformer++ (RoPE + SwiGLU) 快 1.5x-2x,HBM 使用少 50%

4.3 编码器效率

HSTU vs FlashAttention2-based Transformers($d=512, h=8, d_{qk}=64$,bfloat16,NVIDIA H100 GPU):

  • 训练:HSTU 最高达 15.2x 加速(序列长度 8192,$\alpha=1.6$)
  • 推理:HSTU 最高达 5.6x 加速

4.4 GR vs DLRM 的端到端对比

检索模型离线/在线对比

方法 离线 HR@K K=100 K=500 在线 E-Task C-Task
DLRM 29.0% 55.5% +0% +0%
DLRM (abl. features) 28.3% 54.3% - -
GR (content-based) 11.6% 18.8% - -
GR (interactions only) 35.6% 61.7% - -
GR (new source) 36.9% 62.4% +6.2% +5.0%
GR (replace source) - - +5.1% +1.9%

排序模型离线/在线对比

方法 离线 NE E-Task C-Task 在线 E-Task C-Task
DLRM .4982 .7842 +0% +0%
DLRM (DIN+DCN) .5053 .7899 - -
DLRM (abl. features) .5053 .7925 - -
GR (interactions only) .4851 .7903 - -
GR .4845 .7645 +12.4% +4.4%

GR 不仅在离线显著超越 DLRM,线上 A/B 测试也带来 12.4% 的指标提升。

关键发现:

  • GR 使用原始类别互动特征,DLRM 使用大量手工特征;当给 DLRM 同样的 ablated features 时性能显著下降,说明 GR 能通过统一特征空间有意义地捕获这些特征
  • 仅使用内容特征的 GR baseline 效果很差,凸显高基数用户动作的重要性
  • 仅使用互动的 GR 比完整 GR 在主消费任务排序 NE 上差 2.6%,验证了辅助特征的价值

4.5 推理效率对比

使用 M-FALCON 的 GR 模型(285x FLOPs)vs DLRM(1x FLOPs):

  • 当 scoring 1024/16384 个候选时,GR 实现 1.50x/2.99x 更高 QPS
  • 这意味着 285x 更复杂的模型在相同推理预算下吞吐量更高

4.6 Scaling Law

首次展示推荐系统中的 scaling law:

  • 在低计算量区间,DLRM 可能因手工特征优于 GR
  • 但 GR 展示出显著更好的 FLOPs 缩放性,DLRM 性能在约 200B 参数时饱和,而 GR 可扩展到 1.5 万亿参数
  • 所有主要指标(HR@100、HR@500、NE)均随训练计算量呈幂律缩放
  • 跨越三个数量级的计算量,最大测试模型(8192 序列长度、1024 嵌入维度、24 层 HSTU)的总训练计算量(标准化为 365 天)接近 GPT-3 和 LLaMa-2
  • 与语言模型不同,序列长度在 GR 中扮演显著更重要的角色

5. 相关工作对比

论文详细对比了 GR 与已有方法的关键差异:

模型 输入 期望输出 架构 训练方式
GRs $\Phi_0, a_0, \Phi_1, a_1, \ldots, \Phi_i$ $a_i$ (target-aware) Self-attention (HSTU) Causal autoregressive (streaming/single-pass)
GRU4Rec, SASRec $\Phi_0, \Phi_1, \ldots, \Phi_{i-1}$ $\Phi_i$ RNNs/Self-attention Causal autoregressive (multi-pass)
BERT4Rec, S3Rec $\Phi_0, \Phi_1, \ldots, \Phi_i$ (推理时) $\Phi_i$ Self-attention Sequential multi-pass
DIN, BST, TWIN, TransAct $(\Phi_0, a_0), \ldots, (\Phi_{i-1}, a_{i-1}), \Phi_i$ $a_i$ (target-aware) Pairwise/Self-attention Pointwise (streaming/single-pass)

GR 的核心优势: 1. 通过交错内容和动作序列,在因果自回归设置下实现 target-aware 注意力 2. 联合建模内容推荐过程和用户反应过程的联合分布 3. 全序列化设置使推荐可以端到端生成式建模

6. 结论

GR + HSTU 代表了推荐系统从特征工程驱动的 DLRM 向生成式序列建模的范式转变。特征的大幅简化为推荐、搜索和广告的基础模型 (foundation model) 铺平了道路,通过统一特征空间实现跨领域应用。全序列化设置也使推荐可以端到端的生成式方式建模。