DIRECTOR: Dynamic Index-based Recommendation with Transport-Optimized Retrieval
Yuanhao Pu, Chenghao Zhang, Chao Feng, Xiang Li, Defu Lian
cs.IR
2026-07-29
快手 DIRECTOR 把推荐重排从自回归改成并行硬匹配,同吞吐同延迟下省 66.7% CPU,离线 NDCG@6 也比最强基线高 2.8%–3.7%。
重排(reranking)是多阶段推荐系统靠后的环节,把上游给的一组候选(规模 M)排成一个有顺序、无重复的 slate(长度 n)。这个排序空间极大,M=50、n=10 就有约 3.7×10¹⁶ 种合法 slate,质量取决于位置效应、竞争和互补,是个组合问题。
主流走「生成器-评估器」(Generator-Evaluator):生成器提 K 个候选 slate,一个 list-wise 评估器给每个完整 slate 打一个标量分,挑最高的输出。评估器常常是个不透明的工业服务,拿不到梯度。
生成器有两条老路,各有硬伤。自回归(AR)逐个位置选,每个选择依赖前面选了什么,本来能建模位置间依赖;可一上贪心或束搜索就两难:每步得等上一步(顺序延迟),而且一个前缀要是没进束就被永久剪掉,哪怕它本可能扩展成全局最优 slate。非自回归(NAR)所有位置并行预测,快,但把位置当成互相独立,概率定义在允许重复的 Cⁿ 上,不同位置会抢同一个高分物品,产出重复或冲突,事后修补又把顺序流程请了回来。
DIRECTOR 想同时拿到三样:NAR 的并行速度、全局的位置协调,以及只靠标量评估器就能训练。
DIRECTOR 的做法分四块。
候选先编码进一个共享检索空间(每个请求算一次,所有位置和提案复用)。上下文编码器汇总请求和候选池。接着不预测每个位置选哪个离散物品,而是生成一个连续的「动态检索索引」矩阵 Q(n×d),每一行是那个位置的检索意图,一个同时看用户上下文和当前候选池的位置感知潜 query。n 个索引一次性联合生成,反复采样 Q 就得到 K 个提案,不需要自回归展开。生成器给了 CVAE 和扩散两种实现。
训练时用熵正则最优传输(OT)做监督。关键在可行集:每个位置必须填满(行等式约束),每个候选最多用一次(列容量不等式约束)。这条共享的容量约束把所有位置耦合起来,几个位置抢同一个候选时,它们的传输质量是联合调整的,而不是各自归一化。作者用定理证明这个最优解唯一且严格为正;逐行独立 softmax 表达不了这种耦合,这正是朴素 NAR 出重复的根。
推理时则绕开 OT 解算器,直接求全局硬匹配(矩形匈牙利、增广路径)。另一条定理保证硬匹配和合法 slate 一一对应、LP 松弛无整数间隙,所以输出天然完整无重复。K 个提案就是 K 个独立分配,并行求解,额外开销比值是 O(n/d),n 远小于 d 所以很便宜。
最后是 prefix-anchored 信用分配。评估器不透明,只对完整 slate 给一个标量,把它平均分给每个位置等于没说哪个选择有用。DIRECTOR 构造一条保有效的路径:从基线 slate 走到生成 slate,第 i 步把 yi 放到位置 i(若它已在后面出现就交换,否则替换),每步都不产生重复。位置 i 的信用就是相邻两个混合 slate 的奖励差 Δi。这些差求和正好等于总奖励提升(望远镜求和),于是只需标量输出,而且 n+1 个中间 slate 能一批打分。
离线(表 3,slate 长度 n=6,5 个随机种子,生成 K=20):
| 数据集 | 最强基线 NDCG@6 | DIRECTOR NDCG@6 | 相对提升 |
| ML-1M | 0.7399(JDRec) | 0.7672(CVAE) | +3.69% |
| Amazon-Books | 0.8255(JDRec) | 0.8486(DIFF) | +2.80% |
| RecFlow | 0.1910(PIER) | 0.1979(CVAE) | +3.61% |
线上 A/B(快手短视频,7 天,对照组是生产 AR 生成器-评估器,实验组只把生成器换成 DIRECTOR):有效播放(VV)+0.519%(95% 置信区间 [0.45%, 0.59%],p<0.05),评论 +0.695%,点赞 +0.330%。
效率压测:在同等峰值吞吐(约 2 万 QPS)、P99 端到端时延 ≤30 毫秒、99% 可用性的约束下,对比带束搜索的 NTP 自回归生成器,CPU 消耗 −66.7%。消融里 OT 贡献最大(去掉它 NDCG@6 从 0.1979 掉到 0.1675,约 15% 相对下降),奖励引导和按位置信用也各有贡献。
重排是个真实且对延迟敏感的环节,AR 生成器在束搜索下就是慢。DIRECTOR 证明一件事:并行性不一定要用重复问题来换,让 OT 在训练时教「冲突感知」,让硬匹配在推理时强制「合法性」,就能两全。那条保有效的信用分配路径(望远镜求和)对任何不透明的 list-wise 评估器都能用,不止推荐。在快手主 App 上同吞吐同延迟省下三分之二的机器,是实打实的运营节省。
66.7% 这个数字必须说清楚。它省的是 CPU 和机器消耗,而且是在吞吐、时延、可用性三项都对齐的前提下:时延和 QPS 是被设计成相等的,不是被降低了,真正的收益是达到同样 SLA 只需约三分之一的机器。运行时的提速来自并行硬匹配,不是社区转述里的「最优传输」,OT 只在训练时用,推理时刻意绕开它。而且基线是快手自己那个不公开的 NTP 加束搜索生成器,不是所有 AR 方法,基线架构和束配置都没披露,这个量级没法独立标定。
另外这篇没有专门的局限或未来工作小节(不太寻常)。线上只在快手一家验证;slate 都很短(n=6),候选池也小(M=50/120),整套复杂度论证依赖 n 远小于 d;业务提升幅度不大(VV +0.519%、离线 +2.8%–3.7%);线上效率是两个 DIRECTOR 变体平均、效果是合计,没法干净归因到某一个;DIRECTOR 只改生成器,要是那个不透明评估器本身弱,输出质量照样有上限。