GRACE: Generative Recommender Acceleration Engine for Real-Time Ads Retrieval
Zhou Fang, Yuhang Huang, Ang Zhang, Yihan He, Ruichao Xiao, Chao Li, Yavuz Yetim, Sibyl Yang, Xiaohan Wei, Fei Tian, Liang Wang, Liyuan Li, Nathan Yan, Gaoxiang Liu
cs.IR
2026-08-02
生成式检索直接吐广告 ID,定向合规没法只在检索前查。GRACE 在解码每步用位图和布隆过滤器卡合格前缀,解码延迟降 11 倍。
传统广告检索是级联式:先用定向规则筛出对当前用户合格的广告,再交给检索和排序。生成式检索把这个流程打乱了:Transformer 解码器直接自回归吐出每个广告的语义 ID(SID,把物品编成一串离散 token),绕过了「先定向再检索」。问题是广告主设了人群定向规则(地域、年龄等),每条请求能投放的广告子集都不同,而生成模型只学了一个固定的 SID 空间。已有的目录约束解码只保证生成的 SID 存在于目录里,是和请求无关的,没法保证它对「这个用户」合格。第二个问题是算力:实时广告检索要在严格延迟(P99 小于 100 毫秒)内每条请求生成上千条广告,宽 beam、短序列的形状又让通用注意力内核严重跑不满。
GRACE 解决合规靠 GTM(Generative Target Matching,生成式定向匹配):在每个解码步,候选下一个 token 必须同时满足两个条件,一是能延伸出合法的 SID 前缀(目录有效性),二是这个前缀下至少有一条广告对当前请求合格。低基数属性(国家、年龄、性别)用位图匹配,高基数属性(细粒度地域)用布隆过滤器匹配。因为存的是前缀下所有广告匹配位的「或」,判断是保守的,可能有假阳性,所以解码后仍要在 CPU 侧做精确的广告级定向复核。
算力靠重写解码器。GRACE 针对的是轻量 encoder-decoder(不是 LLM),宽 beam、短序列是它的特征:cross-attention 里同一请求的所有 beam 共享同一份用户上下文 KV,于是把 beam 当成 query 维度一次性算(比 FlashAttention-2/3 快 68 至 98 倍);self-attention 把多个 beam 行合并成一个大 tile 配块对角掩码;用类 PagedAttention 的块表管理 KV,beam 重排时只搬 block id 不搬历史 KV;beam 大小从固定 1024 改成按步动态(1, 512, 1024, 1024),砍掉 16.2% 的 FLOPs。
在 NVIDIA GH200、3000 万 SID 上评测:
| 指标 | 改进 |
| 广告级定向通过率 | 23.55% → 40.42% |
| cross-attention 延迟 | 快 68 至 98 倍 |
| self-attention 延迟 | 快 23.4 至 25.8 倍 |
| 解码器端到端延迟 | 197.7 毫秒 → 17.8 毫秒(固定 beam),动态 beam 下 15.8 毫秒 |
加上 GTM(位图加布隆)后,全模型 P99 是 53.6 毫秒,仍在 70 毫秒算力窗口内。k-way 分区能降低匹配器饱和度,但实测对最终通过率没有实质提升,所以非分区 CD+GTM 是首选工作点。
这篇把生成式检索推向生产广告场景的两个真实卡点:合规必须在解码循环里做,算力必须卡进严苛延迟。对做生成式推荐工程的人,GTM 是一种把「请求相关的个性化约束」塞进约束解码的具体方法,位图配布隆过滤器的组合可复用;解码器优化则说明,通用 LLM serving 内核在「宽 beam、短序列」这个形状上是严重失配的,专用内核能拿到一两个数量级的收益。
即使有 GTM,最终广告级通过率也只有 40.42%,意味着生成的广告里仍有近六成不合格、要在下游丢弃,浪费还在。地域数据是合成的(每用户 64 个随机位置),和真实定向分布可能有差距。所有评测只在 GH200 一张卡上、一种 encoder-decoder 配置上做,没有跨硬件或跨模型规模的对比。论文没有显式局限章节,合规通过率的绝对水平其实还很低这一点作者没展开。