1. 问题与动机
LinkedIn Homefeed 广告的核心排序信号是 CTR,但原生产模型 LiRank 是 DCNv2 特征交叉网络与 TransAct 序列编码器的混合集成:它依赖 100 多个工程特征、点式样本格式和多组件服务链路。作者希望用一个 decoder-only Transformer 统一替代这套系统,困难不只在模型容量。第一,广告位置、UI 样式等上下文在打分后才由拍卖与页面布局确定,却会显著改变点击概率,形成“先有 CTR 还是先有位置”的循环依赖;第二,埋点与序列更新存在延迟,训练若看到同一会话内尚未在线可见的行为,会制造虚假的离线增益;第三,线上要同时给数百候选打分,并满足 p99 50 ms。CADET 因此把研究重点放在后验上下文建模、训练服务一致性和稀疏注意力工程,而不是简单放大 Transformer。
2. 方法详解
输入序列写成 [M; I1,(C1,A1); ...; IL]:M 是静态用户特征,It 拼接广告、请求和曝光特征,Ct 是位置等打分后上下文,At 是点击等动作。模型以 teacher forcing 一次预测各曝光动作。对每个隐藏状态 ht,解码器并行输出 K 个上下文头 ŷk=MLPk(ht);训练时只让真实位置桶 kt 对交叉熵有贡献,位置只用于 loss routing,不作为当前曝光输入。线上 K 个头一次前向全部算出,拍卖确定位置后直接取相应预测。生产配置 K=2,对应位置 1–4 与 5+。
注意力有两层门控。表示门 sigmoid(WxX) 先逐维抑制噪声激活;交互门分别作用于 Q、K,限制点积幅度,避免少量 token 形成 attention sink。时间编码把普通 RoPE 的序号 p 换成 Unix 时间戳 t,并用最大回看窗 Δtmax、最小旋转 φmin 与 base 控制从秒到月的频率范围;实验设 Δtmax=1 年、φmin=1e-4、base=6e5。因果 mask 保留顺序,时间接近的事件只产生很小旋转。
训练 mask 用一小时可观测延迟 Δdelay,把 tj > ti-Δdelay 的历史位置置为负无穷,避免利用线上尚不可见的同会话行为。推理时把数百候选追加到共享用户上下文后,并行评分且让候选彼此隔离。总损失还加入点击类型、落地页停留时长、曝光时长等辅助头,这些头只做训练正则,服务时移除。训练采用 8 层、4 头、d_model=352、序列长 4096,在 NVIDIA H200 上以 PyTorch HSDP、FlexAttention 和 packed token buffer 训练;论文未披露优化器、学习率、batch size 或训练步数。服务端定制 FlashAttention 直接跳过全遮蔽 tile,注意力规模从 (L+N)^2 变为 L^2/2+LN。
3. 核心技术贡献
- 上下文条件多头把“位置未知但位置影响 CTR”改写为一次前向的多策略预测。真实位置只选择训练头和线上输出头,因此不泄漏当前样本信息,也不需要迭代重排;去掉该模块 AUC 相对下降 0.61%,是最大单项贡献。
- 双层自门控不是普通输出门,而是在表示进入注意力前及 Q/K 交互处分别控流。多次训练中,无门控版本出现早期 AUC 急跌,表示门能缓和波动,表示门加交互门最稳定,解决的是工业训练可复现性。
- 时间戳 RoPE 与延迟感知 mask 分别建模“多久以前”和“当时能否看到”。移除时间 RoPE 下降 0.13% AUC;训练允许读取一小时内行为而验证仍按一小时遮蔽时,AUC 下降 0.31%,说明消除 train-serve skew 本身就带来真实收益。
- 数据与内核协同使统一模型可部署:由 100+ 点式特征压到 12 个高价值序列信号,数据体积减少 98%;packing 将有效 batch 提高约 4 倍;定制内核相对 FMHA 加速 3 倍。
4. 实验结果分析
所有实验使用 LinkedIn Sponsored Updates 广告点击数据,训练一年历史、最后一天验证。主要结果如下:
| 模型/消融 | AUC 或线上结果 |
|---|---|
| HSTU-Base | 0.8497 AUC |
| HSTU-Large | 0.8505 AUC |
| CADET-HSTU(无 session mask) | 0.8535 AUC |
| CADET-Transformer(无 session mask) | 0.8534 AUC |
| Full CADET | 0.8554 AUC |
| 去掉上下文条件头 | -0.61% 相对 AUC |
| 去掉时间 RoPE | -0.13% 相对 AUC |
| 去掉训练 session mask | -0.31% 相对 AUC |
| 对 LiRank 线上 A/B | CTR +11.04%,CPC -10.9% |
HSTU 与普通 Transformer 在保留 CADET 其余设计时仅差 0.0001 AUC,说明收益主要来自上下文、时间与一致性机制,而不是某个注意力骨干。线上收入近似中性并非模型无商业价值:自动出价广告主通常花完预算,CTR 提升转化为 CPC 下降 10.9% 和更强 ROI。工程指标也完整:每 GPU 330 requests/s,p99 小于 50 ms。论文没有报告各门控的独立数值、统计区间和分人群结果,这是证据解读时需要保留的边界。
5. 局限与未来方向
作者没有单列 limitations,但正文暴露了几项明确边界:上下文被离散成仅两个位置桶,是为下游拍卖集成简化,不能表达连续位置效应或复杂 UI 组合;辅助任务权重和门控超参未披露;数据、线上实验和广告目标均来自 LinkedIn 单一场景,外部复现受限。论文也未给出 H200 数量、总训练时长、优化器及显著性区间。作者结论把未来重点放在继续扩展统一生成式骨干。实践上还应补做校准误差、长尾广告、新广告冷启动、不同延迟阈值与流量峰值下的稳定性评估。
6. 工业实践意义
对推荐与广告团队,最先值得复用的不是整体换模,而是三个低耦合模块:用候选上下文多头解决后验特征循环依赖;按真实埋点 SLA 设置 delay mask;将位置编码改为时间差编码。它们都能在现有序列模型中单独消融。上线应同时监控 AUC、校准、CTR、CPC、收入与 p99,避免只用 CTR 判断价值。若计划统一 DCN 与序列模型,CADET 给出了清晰容量基线:8×352 的中型骨干、4096 历史、12 个高价值信号即可替代 100+ 特征,但前提是 packed 数据管线、候选隔离 mask 和定制稀疏 kernel 同步到位。对于 UGC 社区排序,可把“广告位置桶”替换为展示卡型、首屏/非首屏、流量入口等上下文,并以线上可观测延迟构造训练 mask。
补充实施检查:灰度时还应按新老用户、广告库存稀疏度、设备性能和位置桶分别检查校准;若某一头样本过少,应合并桶或做共享参数正则,避免多头结构把整体数据优势切碎。模型回滚也需保留 LiRank 式基线并同步记录特征与序列版本,才能把架构收益和数据变化分开。还应验证 50 ms 预算在峰值候选数和不同 GPU 批处理下是否稳定。