AVO让编码智能体自己做变异,B200上7天搜出超FA4 10.5%的Attention核

AVO: Agentic Variation Operators for Autonomous Evolutionary Search

Terry Chen, Zhifan Ye, Bing Xu, Zihao Ye, Timmy Liu, Ali Hassani, Tianqi Chen, Andrew Kerr, Haicheng Wu, Yang Xu, Yu-Jung Chen, Hanfeng Chen, Aditya Kane, Ronny Krashinsky, Ming-Yu Liu, Vinod Grover, Luis Ceze, Roger Bringmann, John Tran, Wei Liu, Fung Xie, Michael Lightstone, Humphrey Shi

cs.LG

2026-03-26

NVIDIA提出AVO,用编码智能体替换进化搜索的变异算子。在B200上无人干预连续跑7天、提交40版Attention核,因果MHA最多超cuDNN 3.5%、超FA4 10.5%,峰值1668 TFLOPS。

这篇在解决什么

FunSearch、AlphaEvolve 已经证明,大模型可以当进化搜索里的代码生成器:看几个父代程序,吐一个更好的候选,外层框架负责抽样、评估、管种群。这一套在数学发现和算法搜索上出过成绩。但模型每轮只被允许生成一次,不能自己去翻手册、跑 profiler、解释一次编译失败,再改完才提交。

Attention 核正好卡在这个缺口上。FlashAttention-4 和 cuDNN 在 Blackwell 上已经花了几个月人工优化,剩下的空间在寄存器溢出、屏障开销、流水线气泡这类必须反复试的微架构细节上。单轮生成的进化管线到不了这个粒度。

方法

AVO 把整个变异算子换成一个带规划、工具和持久记忆的编码智能体。谱系里每一版核和分数、一份领域知识库、以及打分函数,全部对它开放。它自己决定看哪些旧实现、查哪份 PTX 文档、什么时候编译和测速。

知识库里有 CUDA 编程指南、PTX ISA、Blackwell 规格,也有 FlashAttention-4 源码。每个候选是带内联 PTX 的 CUDA 核。打分是一组配置上的向量:数值对不上参考实现,该配置记 0 分,速度再快也不算。只有正确且不慢于当前最好的版本才会被 git commit 进谱系;失败尝试留在智能体内部轨迹,不污染已提交记录。

这次实验用单谱系,没有岛屿模型,也没有 MAP-Elites 档案,目的是把算子本身的效果单独量出来。智能体是 NVIDIA 内部通用编码智能体,论文称没有为 kernel 任务改过它的架构。长跑会停滞或空转,所以加了监督:检测到卡住就回看整条轨迹,把搜索拨向新方向。7 天跑出最终 MHA 核,提交了 40 个版本。

结果

评测在 NVIDIA B200 上,CUDA 13.1,PyTorch 2.10.0。基线是 cuDNN 9.19.1 和官方 FA4(commit 71bf77c)。任务是前向 prefilling,head dim 128,BF16,序列长度 4K/8K/16K/32K,总 token 钉在 32768(4K 时 batch 8,32K 时 batch 1)。MHA 用 16 头,因果与非因果都测。计时脚本与 FA4 论文相同,每组跑 10 次取均值和标准差。

7 天无人干预,内部试过 500 多个优化方向,提交 40 版。因果 MHA 的跨配置几何均值到 1520 TFLOPS,对照 cuDNN 1488、FA4 1426。非因果几何均值 1630,对照 cuDNN 1611、FA4 1620。单配置峰值出现在非因果 32K:1668 TFLOPS。

设置相对 cuDNN相对 FA4
因果 MHA+0.4% 到 +3.5%+5.0% 到 +10.5%
非因果 MHA,序列长于 16K+1.8% 到 +2.4%短序列与两条基线落在测量噪声内
因果 GQA最多 +7.0%最多 +9.3%
非因果 GQA最多 +6.0%最多 +4.5%

最大的单配置优势在因果 4K:AVO 1392 TFLOPS,cuDNN 1344(+3.5%),FA4 1259(+10.5%)。GQA 没有重新进化,把已完成的 MHA 核交给同一智能体,约 30 分钟改完,配置取自 Qwen3(32 个 Q 头,KV 头 4 或 8)。

提交记录不是平滑爬升,是几个台阶加一段平台。论文点名的拐点包括 v8 的 QK-PV 交错加 bitmask 因果 mask、v13 的单遍 softmax、v20 的无分支累加器重缩放、v30 的 correction 与 MMA 流水重叠、v33 的 warp 组寄存器重分配。消融(相对上一提交版的几何均值):

优化版本非因果因果
无分支累加器重缩放v19→v20+8.1%+1.6%
correction/MMA 流水重叠v29→v30+1.1%+0.4%
寄存器重分配v32→v33+2.1%约 0%

v20 是整次进化里最大的一跳:以前用分支判断要不要重缩放输出累加器,每轮 K-block 都要做 warp 同步;改成永远算缩放因子,不需要时用谓词选 1.0,顺带把阻塞内存栅栏换成只保证顺序的轻量栅栏。这条路径只作用在完全未 mask 的迭代上,所以非因果吃到 +8.1%,因果大部分时间还走旧的分支逻辑。寄存器方面,Blackwell 每个 SM 共 2048 个 warp 寄存器,FA4 式分配是 softmax/correction/其余 = 192/80/48;智能体看到 correction 在溢到本地内存、softmax 还有余量,改成 184/88/56。

为什么重要

写 GPU kernel 的人可以从中读到一个具体信号:在已经打磨过的 Blackwell Attention 上,把智能体从「一次生成一个候选」换成能自己查文档和跑评测、再改策略的变异算子,还能再抠出几个百分点。对做 LLM 进化搜索的人,这篇更像在改接口。瓶颈不一定是 Generate 模型不够强;模型能不能把 Sample、评测和策略切换也揽过去,可能才是卡点。

相对 cuDNN,这是渐进改进。MHA 因果最大优势 3.5%,非因果短序列甚至分不出输赢。知识库里直接放了 FA4 源码,智能体从第一天就能读专家实现,不是从空白发明了一套 Attention。能带走的是闭环形态(正确性门、只提交不回退、停滞时监督重启),不是这份核本身。

局限与存疑

实验只覆盖单谱系、前向 prefilling、head dim 128、BF16,没有 decode、没有反向、没有其他头维或精度。智能体是内部产品,论文没写用了哪个 frontier 模型,也没报 7 天的 token 消耗和 GPU 小时。种子程序长什么样,只含糊说是 x0,轨迹文字又写 v1 到 v20 是在填平「朴素实现」和基线的差距,两边对不上,外部无法判断起点有多弱。

监督机制几乎没有接口细节,触发条件和干预方式都看不到。GQA 是事后 prompt 适配,不能当成进化过程自己泛化到新注意力形态。v33 在因果上约 0% 收益,说明搜到的优化绑配置。附录自己也说绝对 TFLOPS 会被驱动、温度、频率扰动,所以又拿 FA4 论文公布的基线数字对了一轮。核和智能体都未开源,按同样设定复现的门槛很高。

术语

原文与代码

社区讨论

相关论文

全部论文解读