摘要:生成式推荐正把用户历史视为序列,把下一物品视为token。本文系统解释HSTU、Semantic ID、DynamicEmb、分层缓存、AOTInductor与短解码大Beam的生产架构和适用边界。
传统推荐系统通常是一条高度分工的流水线:先从用户、物品、上下文和统计特征中构造稠密/稀疏特征,经双塔或多路召回从全量商品库取回数百至数千候选;再用复杂排序模型预测点击、停留、购买等多目标分数;最后经重排加入多样性、业务规则和安全约束。它有效,却也有三个结构性成本:人工特征与多模型链路难以协同扩展;十亿级 ID 对应的嵌入表远超单卡显存;召回的向量相似度目标与排序的行为预测目标并不完全一致。
生成式推荐(Generative Recommender,GR)试图把这条链路“语言模型化”:将用户历史视为序列,把“下一个动作或物品”视为下一个 token,学习
[
P(\text{next item/action}\mid\text{user history})。
]
这里的“语言模型化”并不等于直接拿聊天大模型替换推荐系统,而是引入统一序列建模、注意力、KV Cache、并行训练和自回归解码等方法。当前两条代表性路线是 HSTU 与 Semantic ID(SID)。
传统链路中,离线侧要维护样本拼接、特征统计、嵌入训练和 ANN 索引更新;在线侧则依次经过特征服务、召回、粗排、精排与重排。每一级都在压缩候选集,也可能提前丢掉后级本可识别的优质物品。双塔召回擅长把全库搜索降为向量近邻问题,却受限于点积表达能力;精排能做候选感知的高阶交互,却只能评估已经被召回的物品。多目标模型还常需人工配置损失权重,再由重排层处理新鲜度、去重、探索和商业约束。生成式路线的目标不是让这些约束消失,而是用同一个序列表征减少召回与排序间的目标断层,并把更多监督信号摊到一次历史编码中。
一张图看懂两类架构
1 | 行为日志/物品内容 |
HSTU:让行为序列成为推荐的“主干网络”
Meta 在《Actions Speak Louder than Words》中提出 HSTU(Hierarchical Sequential Transduction Unit)。其核心不是把 item ID 简单当词,而是把“物品—动作—上下文”按时间交错:看见视频、跳过、点击、点赞、购买都成为序列事件。这样,过去由计数器、交叉特征、兴趣池等模块表达的信号,可以更多地由序列模型学习;排名也可表述为给定历史与候选物品,预测下一动作。
HSTU 与标准 Transformer 有关键差异。其注意力不使用跨序列归一化的 softmax,而采用带掩码的 SiLU 权重,加入可学习的相对位置/时间偏置,并在输出投影前做逐元素门控。直观上,softmax 强调“注意力份额之和为 1”,HSTU 则希望保留交互数量与强度:一个主题被用户反复点击,本身就是信号。Q、K、V 与门控分支可以融合计算,也更适合推荐中长度不一的 jagged tensor。
训练瓶颈不仅是算力,还包括长度倾斜和激活内存。NVIDIA 的实现用 TorchRec 管理稀疏表、Megatron-Core 管理稠密主干,可组合数据、张量、流水线、序列/上下文并行;负载均衡 shuffler 按注意力 FLOPs 重排变长样本,避免长序列拖住整个 rank;面向 jagged tensor 的上下文并行用 All-to-All 取代冗余 AllGather,并把因果三角区域重新分块。相关论文报告可支持约 5.3 倍序列长度,但这是特定 H100、模型与实现下的结果,不应外推成所有 HSTU 任务的固定收益。
DynamicEmb与分层缓存:解决“词表比显存大”
推荐的词表持续变化,静态大表要么预留过多空间,要么频繁扩容。DynamicEmb 使用 GPU 优化的带评分哈希表:仅在 ID 实际出现时分配行,通过准入策略过滤极低频或噪声 ID,再按 LRU、LFU、时间或组合分数淘汰。完整参数可放在锁页主存,热点行驻留 HBM;表按行哈希分片到多个 rank,并通过预取把通信与稠密计算重叠。
推理侧的 nv-embedding-cache 进一步形成 HBM 热缓存—CPU DRAM 暖缓存—Redis/RocksDB 远端参数库。这不是普通“加一层缓存”:推荐访问服从明显长尾,命中率、更新一致性、失效协议、跨卡分片都会直接决定尾延迟。HSTU 的 KV Cache 也采用类似层次:GPU 中是分页表,主存或 FlexKV 承担下层,必要时可扩展到 SSD;数据按 user ID 查找,因为不同用户通常没有像文本提示词那样的公共前缀。异步 onload/offload 及逐层搬运用于隐藏 PCIe/主存传输。
需要注意,嵌入缓存与 KV Cache 会争抢同一块 HBM。实际部署不能各自独立“尽量多占”,而应根据热门 ID 命中率、历史长度和请求复访率联合切分容量。
AOTInductor、FlexKV与生成式解码
Python 调度、动态对象和跨语言调用会侵蚀毫秒级 SLA。PyTorch AOTInductor(AOTI)把 torch.export 图提前编译并打包,在 LibTorch/C++ 运行时执行;NVIDIA 还将有状态缓存操作封装为 tensor-only custom ops,使缓存策略留在 C++,模型图仍可导出,并可接入 Triton Inference Server。FlexKV则作为主存/SSD等低层 KV 存储后端,与GPU分页缓存配合,而不是替代注意力计算。
SID 路线的推理形态与聊天模型尤为不同。TIGER先用文本、图像等内容编码器生成物品向量,再用 RQ-VAE 等残差量化方法得到由粗到细的多级语义码;相似物品共享前缀,新物品也可凭内容获得编码。模型不做 ANN,而是自回归生成短 SID,并用目录前缀树、合法 token mask 与 Beam Search保证结果属于真实目录。
典型负载是“数千 token 长上下文 + 仅 2~5 步解码 + 128/256 宽 beam”。若把每条 beam 当作独立长序列,公共历史 KV 会被重复。NVIDIA 的专用路径将其拆为只存一次的 ContextKV、每条 beam 的短 BeamKV,以及记录父子关系的 BeamPath;再用面向该布局的解码注意力、约束 Top-K、连续批处理和 CUDA Graph完成生成。这说明通用 LLM serving 框架并非不能服务 SID,而是其默认优化目标通常是长解码、多轮聊天,并不匹配推荐的短解码大 beam。
基准数字应怎样读
NVIDIA 博客给出的 HSTU 训练 MFU 从 7.65% 提升到 31.40%,来自两台 DGX H100、合成 Zipf 数据、固定模型的逐项叠加实验;其中最大单项收益来自 CUTLASS 注意力,DynamicEmb 缓存在该次实验中甚至略降原始吞吐,其价值主要是容纳超大表。AOTI 与全 GPU KV 命中相对 Python 后端的 1.14~2.38 倍加速,也依赖 KuaiRand-1K、特定层数、批量和“理想命中”。SID-GR 相对一个 SGLang beam-search 分支约 2 倍的结果,则限定于 H100、Qwen3-1.7B、beam=256、输出 3 token。
因此,可普遍接受的结论是:专用算子、缓存复用、减少 Python 开销和匹配负载的 KV 布局通常有益;不能普遍化的是某个固定倍数,更不能据此证明在线业务指标必然提升。
适用边界与落地建议
- 先选问题,不先选模型。 长行为历史、目录巨大且多目标特征工程已趋复杂,适合试 HSTU;内容语义丰富、冷启动重要、召回需要多样性,适合试 SID。短历史、小目录或 CPU 预算有限时,双塔加排序仍可能更划算。
- 从混合架构开始。 保留现有 ANN/规则召回作为兜底,让 HSTU 做重排序,或让 SID 增加一路生成式召回;逐步测量 Recall、NDCG、校准、覆盖率、延迟和成本,而非一次性替换全链路。
- 把码本与缓存当成在线数据系统。 SID 需要处理量化坍塌、编码冲突、目录增量和旧码迁移;DynamicEmb/KV Cache 需要监控分层命中率、淘汰抖动、陈旧度和 P99,而不只是平均 QPS。
- 基准必须复刻真实分布。 用线上历史长度、热门度、回访间隔、beam 宽度和冷启动比例压测,并做 GPU/CPU/SSD 分层失效实验。最终门槛仍是单位业务增益成本,而不是 MFU 或单卡吞吐。
生成式推荐真正的变化,是让推荐系统从“多个特征模型串联”走向“统一序列模型加专用数据平面”。HSTU解决如何高效理解超长行为,Semantic ID解决如何把十亿物品变成可生成的层级词表;DynamicEmb、分层缓存、并行训练和专用解码,则决定这套想法能否跨过生产环境的容量与延迟门槛。
参考资料
- NVIDIA Technical Blog, How Generative Recommenders Are Redefining RecSys at Scale
- Zhai et al., Actions Speak Louder than Words: Trillion-Parameter Sequential Transducers for Generative Recommendations, 2024
- Rajput et al., Recommender Systems with Generative Retrieval (TIGER), 2023
- Li et al., Scaling Generative Recommendations with Context Parallelism on HSTU, RecSys 2025
- NVIDIA, recsys-examples;HSTU训练基准
- NVIDIA, nv-embedding-cache;RecSys KVCache Manager