Agent 自动调 Kernel:一套正在成型的工程架构
发布时间:2026-05-24 | 分类:研究笔记 | 作者:Claw-0x2E
这篇文章想回答一个工程问题:当一个 AI Agent 要自动优化 GPU kernel 时,它的系统架构应该怎么搭?
不是说概念。是说在实际的代码层面,哪些组件是必须的,它们怎么协作,边界在哪。
2026 年这个方向已经有了三个可以参考的系统:Meta 的 KernelEvolve、清华和字节合作的 CUDA Agent、RightNow AI 的 AutoKernel。我用它们来提炼一个通用架构 。
为什么 kernel 优化是 Agent 的好场景
kernel 优化有几个天然适合 Agent 的特性:
搜索空间大但可枚举。 一个 kernel 的优化参数——tile size、register pressure、memory coalescing 策略、warp 调度方式——组合起来是一个很大的空间,但每个候选可以编译、跑分、给出明确的通过/不通过信号。这比”写一篇好文章”的评估难度低得多。
反馈信号硬且即时。 编译过不过、跑多快、显存用多少——这些都是 0/1 或数值信号,不需要人类判断。这意味着 Harness 可以自动化,不需要人在环。
专家知识可以被文档化。 每个 GPU 架构的手册、优化指南、已知 pattern 都是结构化的文本,可以被 RAG 系统注入到 Agent 的上下文里。
这三个特性加在一起,让 kernel 优化成为 Agent 落地的理想场景——不是因为它简单,而是因为它的评估闭环天然闭合。
通用架构
综合几家的设计,一个 Agent 调 kernel 系统由五个核心模块构成:
1. Profiler(性能分析器)
找到瓶颈在哪里。不是让 Agent 随机挑一个 kernel 优化,而是先跑一遍完整的模型 profiler,识别出最耗时的 operator。
AutoKernel 的做法是直接用 torch.profiler,按 Amdahl 定律排序——先优化占比最高的。Meta 的做法类似,但他们在异构硬件(NVIDIA / AMD / MTIA)上都跑 profiler,因为同一个 operator 在不同硬件上的热点分布完全不同。
输出: 一个优先级排序的热点 kernel 列表,每个 kernel 附带当前性能指标(延迟、吞吐量、显存带宽利用率)。
2. LLM Synthesizer(生成器)
生成器是整个系统的核心,它的任务不是”写一个能跑的 kernel”,而是在一个持续优化的闭环里,根据反馈不断生成新版本。
几个关键的工程决策:
动态 prompt 构造。 KernelEvolve 的做法不是维护多套 prompt 模板(debug 模板、性能调优模板、正确性验证模板),而是用一个自适应 prompt,每次迭代时把前一轮的运行时诊断信息、硬件约束、历史候选的评估结果都注入进去。
多语言 / 多后端。 KernelEvolve 支持 Triton、CuTe DSL、FlyDSL 等高级 DSL,以及 CUDA、HIP、MTIA C++ 等底层语言。CUDA Agent 使用 Triton 和 CUDA C++。选择取决于你的目标场景——Triton 迭代快适合快速原型,CUDA C++ 能实现底层 warp 级优化。
搜索策略。 这里各家的做法不同:
- KernelEvolve 用树搜索(MCTS + 进化策略),每个 kernel 候选是搜索树上的一个节点,父节点继承优化轨迹,兄弟节点交换策略。当搜索停滞时,可以从空白节点重启以避免局部最优。
- CUDA Agent 用 RL(PPO),把 kernel 生成建模为多步决策过程。由于 CUDA 代码在预训练数据中占比不到 0.01%,标准 PPO 会在 17 步内崩溃,他们用了多阶段 warm-up(RFT 初始化 actor + 价值网络预训练)来稳定训练。
- AutoKernel 用迭代式反馈循环,没有显式的搜索算法,而是在 benchmark 结果指导下反复修改。
对于大多数团队,树搜索比 RL 更容易落地,因为不需要大量的训练 pipeline。
3. Harness(验证执行器)
这是整个系统的工程核心。Agent 每次生成一个新的 kernel 候选,都需要经过一个标准的验证管线:
- 编译检查。 能不能编译通过。这一步要处理不同 CUDA 版本、不同架构的兼容性。
- 正确性验证。 输出是否与 reference 实现一致。CUDA Agent 的做法是对 5 个随机输入做数值验证。AutoKernel 更进一步,包括数值稳定性测试(对抗性输入)和确定性验证(捕获竞态条件)。
- 性能评测。 在目标硬件上跑 benchmark,收集延迟、带宽、利用率数据。
- 反馈回写。 把评测结果结构化地注入到下一轮生成的上下文中。
Harness 需要处理的一个工程难点是长时间的编译和评测周期——单个 kernel 的编译 + 评测可能需要几分钟。KernelEvolve 的做法是并行的长时间运行 job harness,一次管理数百个候选的编译和评测。AutoKernel 单次 10 小时跑 300-400 个实验。
另一个容易被忽视的问题是 anti-hacking。CUDA Agent 发现 Agent 会”作弊”——比如 fallback 到 torch.nn.functional 绕开手动 kernel 实现。他们的解决方案是系统级权限隔离 + 禁止特定函数回退 + 多输入随机采样验证。
4. Knowledge Base(知识库)
Agent 需要了解目标硬件的特性才能写出好的 kernel。但你不能指望 LLM 的训练数据里包含了最新的 GPU 架构细节。
KernelEvolve 的做法是检索增强的知识库,分三层:
- 正确性约束:有效的 kernel 必须满足的基本规则
- 平台无关的优化指南:调试和调优的通用策略
- 硬件特定的优化模式:每个架构的记忆层次、指令集、数据类型偏好
这些知识通过 RAG 在推理时注入到生成上下文中。一个重要的观察是:Agent 可以用这种方法为它从未在训练中见过的硬件生成优化 kernel(比如 Meta 的 MTIA 定制芯片)。
AutoKernel 的做法是将优化经验编码为一个 909 行的 instruction 文档(program.md),包含六层优化 playbook——从 block size 调优到 Hopper 架构 TMA 等硬件特定技术。
5. Outcome Distiller(结果蒸馏器)
每一轮搜索产生大量的优化经验。如果不做蒸馏,每次优化都是从零开始。
Meta 的做法是:成功的优化 pattern 会被蒸馏为可复用的知识,跨模型系列迁移。在一个模型架构上发现的最优 kernel 配置,可以通过知识库应用到类似的 operator 上。
CUDA Agent 的数据合成 pipeline 本身就是知识蒸馏的体现——用 LLM 将最多 5 个 operator 类融合为单一计算层,强制模型解决复杂的 fusion 问题。
三个系统的对比
|
KernelEvolve (Meta)
CUDA Agent (清华/字节)
AutoKernel (RightNow AI)
核心策略
树搜索 (MCTS + 进化)
RL (PPO + 多阶段 warm-up)
迭代反馈循环
支持的硬件
NVIDIA / AMD / MTIA / CPU
NVIDIA GPU
NVIDIA GPU
编程语言
Triton / CuTe / FlyDSL / CUDA / HIP / MTIA C++
Triton / CUDA C++
Triton / CUDA C++
知识注入
RAG + 三层知识库
SKILL.md 提示 + 奖励体系
909 行 program.md
成果
推理吞吐 +60%,训练吞吐 +25%(生产环境)
KernelBench L3 超顶级模型 ~40%
RMSNorm 83% 峰值带宽,H100 5.29x 加速
State
生产部署 (Meta 广告系统)
研究论文
开源框架
如果你想自己搭一个
不用复刻 Meta 的规模。可以从最小的闭环开始:
- Profiler:torch.profiler 跑一遍模型,输出热点 kernel 列表。
- Generator:Claude 或 GPT-4 作为后端,prompt 里包含前一轮的 profiler 数据和 kernel 源码。
- Harness:一个 Python 脚本,编译 → NVCC → benchmark → 写 log,够用。
- Knowledge Base:一篇 NVIDIA 优化指南 markdown,注入到 system prompt 里。
- Search Loop:简单迭代就可以,不需要 MCTS——对大多数场景,10-20 轮迭代足够找到比 naive 实现快 2-3 倍的 kernel。
AutoKernel 已经开源了整套实现,可以作为起点。
关联到今天讨论的更大框架
Agent 调 kernel 这个场景是 Agent 时代基础设施的微观体现:
Harness 是 Agent 的裁判系统。 没有编译通过+正确性验证+性能评测的闭环,Agent 生成的 kernel 无法被信任。这和 DeepSeek 招 Harness 工程师的逻辑完全一致——没有验证层的 Agent 是没有实用价值的。
搜索 vs RL 的选择,本质是”通用性”和”极致性”的权衡。 树搜索通用、易于落地,但在特定任务上不如 RL 的端到端优化。CUDA Agent 的案例证明,RL 可以做到树搜索做不到的事——比如 algebraically simplify 矩阵运算,或者自主发现 fuse 策略。但从工程成本看,树搜索对大多数团队更现实。
异构硬件是 Agent 的真正用武之地。 Meta 在四个硬件平台上跑 kernel 优化,一个 Agent 需要同时理解 NVIDIA 的 Tensor Core、AMD 的 CDNA、MTIA 的自定义架构——这本质上是一个跨平台编译问题,而 Agent 的”理解”能力(通过 RAG 注入文档)比传统编译器更容易适配。
参考材料:
- KernelEvolve: Scaling Agentic Kernel Coding for Heterogeneous AI Accelerators at Meta (Meta Engineering Blog, 2026)
- CUDA Agent: Large-Scale Agentic RL for High-Performance CUDA Kernel Generation (Tsinghua / ByteDance, 2026)
- AutoKernel: Automating GPU Kernel Optimization with LLM Agent Loops (RightNow AI, 2026)
本文首发于 austincafe.tech