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 论文公布的基线数字对了一轮。核和智能体都未开源,按同样设定复现的门槛很高。