Meta 的 PyTorch 团队发布了 In-Kernel Broadcast Optimization (IKBO) 的架构细节,一种内核融合技术,消除 RecSys 推理中静默昂贵的一个模式:在交互层之前物化 broadcast 张量。在典型推荐请求中,~15 个用户 embedding 被复制 70 倍以匹配 1024 候选 batch,然后在 matmul 后立即丢弃。IKBO 把 broadcast 逻辑编码进 GPU kernel 本身 — 接受 mismatched batch size,在 kernel 内做索引查找,从不物化复制的张量。H100 SXM5 上的关键数字:线性压缩 kernel 累计 4 倍提速 (1.944ms → 0.482ms)、Flash Attention 端到端 6.4 倍 throughput(包括 broadcasting 成本,对比 CuTeDSL FA4-Hopper baseline)、在原本 IO-bound 在 250 TFLOPs 的 workload 上持续 621 BF16 TFLOPs。

技术洞察是:broadcast 是数据布局关注点,不是计算必需,节省通过四个渐进的协同设计阶段层叠。阶段 1 — matmul 分解 — 在自然的 15 行 batch 上跑用户侧 GEMM,在 1024 上跑候选侧 GEMM,然后只 broadcast 小结果,把用户侧 compute 砍掉 70 倍。阶段 2 — 内存对齐 — 把 K 填充到 8 的倍数以在 Hopper 上做 128-bit 对齐 TMA load,把 L1/TEX 流水线从 84% 饱和平衡,把 GEMM 延迟从 0.984ms 降到 0.400ms。阶段 3 — 内核内 broadcast 融合 — 通过索引查找把 broadcast-add 折进候选 GEMM 的尾声,消除 0.87 GB 的中间 DRAM 流量。阶段 4 — 通过 TLX 做 warp-specialized 多阶段融合 — 把 CTA 划分成 producer + 两个 consumer warp group,乒乓 tile 来重叠 WGMMA stall,把用户和候选 GEMM 融合成单个持久 kernel,把 L2 throughput 从 74% 提到峰值的 84%。Flash Attention 的故事更有意思:标准 SDPA 在 ~60 FLOPs/Byte(IO-bound),而 IKBO FA 在 70:1 比例上把算术强度推到 ~833 FLOPs/Byte — 越过 H100 的 495 FLOPs/Byte 平衡点,把它牢牢地放在 compute-bound 上,Hopper 的 warp specialization 和异步 TMA 才真正发挥作用。

生态读法:这是大多数 ML 工程师还没在想的一类优化,但泛化广泛。任何有 mismatched batch 维度的推理 workload — 用户/物品、供应商/产品、多级 broadcast 的层级排名 — 都有同样模式。代码住在 `pytorch/FBGEMM/tree/main/fbgemm_gpu/experimental/ikbo`(尚未合入 PyTorch core),Meta 在生产 RecSys 包括 MTIA 上部署了。两条采用路径:模型作者直接集成 IKBO kernel,或者 ML 编译器 pass 在推理时把标准 op 换成 IKBO 等价物。对在大规模上跑 ranking、retrieval、recommendation 的 builder,workload shape 的匹配决定你拿到 2 倍、4 倍还是 6 倍;候选到用户的比率线性 scale 节省。TLX 层(基于 Triton 的 warp specialization)本身也值得跟踪 — 这是一种没去原生 CUDA 就难拿到的低层 kernel 控制,Meta 在这上面的投资暗示它会合入 upstream。

实际动作:如果你跑生产 RecSys、ranking 或任何一个张量维度比另一个小得多的推理管线(想想个性化、供应商选择、retrieval reranking),检查你的 kernel 热路径是否物化 broadcast 张量。如果是,IKBO 的 experimental 模块值得 benchmark — Meta 报告在协同设计模型上净延迟最多减少 2/3,对 256-4096 的 batch size 和 10:1 到 10000:1 的比率鲁棒。他们默认 benchmark 中的 70:1 比率对广告排名和 feed 个性化是现实的。如果你在 AMD 或非 Hopper 硬件上,架构洞察(把 broadcast 折进 kernel 尾声,消除物化)能 port — 具体数字不能,但模式可以。对 ML 编译器人员,推理时变换路径是要看的;如果 Meta 的编译器 pass 上游了,这对生态系统其余部分变免费。