MaxKernel:面向 TPU 的 Agentic Kernel 生成系统
- 关联论文:2609.04523
- 作者:Shengnan Cai ⚠️(原文件误写作 Tom,已更正)
- 更新:2026-09-07
- 审校:Jay
一句话结论
MaxKernel 是一个多 Agent 系统,让 LLM 自己生成和优化 TPU 自定义内核:三种范式(人机协作 / 全自动 / 图搜索)均能在 JaxBench 50 个 TPU 内核任务上匹配专家手调基线,并在真实大模型工作负载上带来显著性能提升。
解决什么真问题
为 TPU 等 AI 加速器写高性能自定义内核(custom kernel)是一个超高门槛的任务:需要深度的硬件专业知识(tensor layout、memory bandwidth、compute unit utilization)以及数月的手工优化。
传统做法: - 专家手工写 → 质量高但人力成本极高,无法规模化 - 编译器自动生成 → 质量稳定但远低于手工优化,上限低
LLM 能否理解硬件约束、自动生成和迭代优化内核?现有研究停留在单轮生成或简单反馈循环,缺乏系统性的多轮优化能力。
核心问题:能否构建一个 LLM-based Agent 系统,自主完成从高层需求到可编译、可验证、硬件性能达标的自定义 TPU 内核的完整流程?
核心方法
系统架构:Multi-Agent 分工
MaxKernel 由一个共享子 Agent 池构成,所有子 Agent 通过中央协调器调用,处理以下专门职责:
| 子 Agent | 职责 |
|---|---|
| Planner | 接收需求,拆解成实现步骤 |
| Implementer | 写具体 JAX kernel 代码 |
| Self-Debugger | 捕获编译错误和运行时异常,生成修复策略 |
| Tester | 验证功能正确性(数值精度、对齐等) |
| Hardware Profiler | 测量实际硬件性能(throughput、memory bandwidth) |
三种开发范式
范式 1:HITL(Human-in-the-Loop)Agent - Agent 每步生成后暂停,等人类确认 - 适合需要专家把关的关键设计决策 - 人类保有否决权和方向调整权
范式 2:Auto Agent(全自动) - Agent 执行全自动 metric/trace 驱动优化循环 - 流程:生成 → 编译 → 测试 → profile → 根据性能反馈修改 → 循环直到收敛 - 无人工干预,适合批量生产
范式 3:Graph-Based Autonomous Search(图搜索) - 在 Auto Agent 基础上,加入设计空间全局探索 - 将内核优化问题建模为图搜索:节点=实现变体,边=优化转换(loop unrolling、memory tiling 等) - 避免陷入局部最优,在更大的设计空间采样
关键支撑:实时编译器反馈
MaxKernel 的核心工程决策:不是让 LLM 记住 TPU 硬件细节,而是让 LLM 在循环中实时接收 JAX/XLA 编译器报错和硬件 profile 数据,把硬件知识转化为可操作的反馈信号。
这相当于把 TPU 专业知识"外化"到工具输出中,LLM 无需背默硬件手册,只需要学会解读反馈并修改代码。
评估:Benchmarks
JaxBench:50 个多样化的 TPU 内核任务,覆盖: - 矩阵乘法变体 - 卷积配置 - 归约操作 - 非规则 tensor 操作 - 混合精度任务
真实工作负载:来自 SOTA 开源模型的复杂内核需求(非公开名字,⚠️ 原文未明确)
关键实验与数据
- 三种范式横向对比:HITL / Auto / Graph-Auto 在 JaxBench 50 任务上的端到端成功率
- 与专家手调基线对比:MaxKernel 生成的内核与专家手调版本的性能差值(原文未给具体数字,⚠️ "matching expert hand-tuned baselines" 为定性描述,建议 fetch PDF 核验)
- 真实工作负载提升:在 SOTA 开源模型上的具体性能提升幅度(⚠️ 原文未在 abstract 给出数字)
- 图搜索 vs Auto:消融图搜索组件对全局最优解覆盖率的影响
- 开源:GitHub
AI-Hypercomputer/accelerator-agents/tree/main/MaxKernel(✅ GitHub 已核实存在,Apache-2.0,~60 stars,创建于 2026-02-04)
亮点与局限
亮点: - 多范式覆盖:HITL / Auto / Graph-Auto 三种范式覆盖了从"人机协作"到"全自动"的需求光谱,设计空间考虑周全 - 分工 Agent 架构:Planner/Implementer/Debugger/Tester/Profiler 的分离让每个子 Agent 职责单一,降低了单 Agent 处理多任务的困惑 - 硬件反馈环工程化:实时编译器反馈是把专家知识外化的正确方向,LLM 作为"代码修改引擎"比作为"硬件知识存储器"更可靠 - 开源可用:提供了 GitHub 链接,工程团队可以直接尝试
局限: - 结果量化不足:abstract 只说"matching expert hand-tuned baselines"和"significant performance",没有具体数字(Speedup ×? FLOPS 提升 %?),难以与其他工作横向比较 - Benchmark 透明度:JaxBench 50 个任务的难度分布、评估标准、基线设置均未在 abstract 说明,⚠️ 建议 fetch PDF §4 核实 - 真实工作负载匿名:来自"SOTA 开源模型"的工作负载未披露名称,无法独立核实结果 - TPU 专属性:方法针对 TPU JAX 生态设计,NVIDIA CUDA / AMD ROCm 生态的适用性未知 - 规模化未验证:50 个任务覆盖了主要类别,但大规模生产部署(上千个不同内核需求)的稳定性和成本效率未测
对工程落地的启发
- AI-Hypercomputer 路线可借鉴:MaxKernel 把内核生成变成一个可配置的多 Agent 循环,这套框架原则上可以迁移到 CUDA kernel 生成(NVIDIA 的 ptxjit、MLIR-Based kernel fusion),只要替换掉 JAX/XLA 反馈层
- Compiler Feedback as First-Class Signal:MaxKernel 最重要的工程洞察是把编译器报错变成 Agent 的输入信号——类似思路可以迁移到任何"LLM 写复杂配置/代码"的场景:数据库 query optimizer、FPGA bitstream generator、SQL query planner
- 三层范式按需选:团队有硬件专家 → 用 HITL;批量生成 → 用 Auto;追求 SOTA 性能 → 用 Graph-Auto;同一套系统覆盖三个场景,工程和维护成本低
- 图搜索扩展设计空间:Graph-Based Autonomous Search 避免局部最优的思想对其他组合优化问题(芯片 placement、内存分配策略)也有借鉴价值
- 落地前提:需要可靠的编译器反馈 + 可量化的性能 profile + 可执行的测试——这三个基础设施缺一不可,单纯 LLM 代码生成能力本身不是瓶颈
与同方向工作的关系
- 与 AlphaCode、Codex 等代码生成系统:AlphaCode/Codex 生成通用 Python/C++ 代码,MaxKernel 生成硬件kernel——后者对硬件正确性(数值精度、对齐)和性能(硬件利用率)有双重约束,难度更高
- 与 TIMELY、Karpathy's microkernel 工作:都是让 LLM 生成高性能数值代码,但 MaxKernel 强调多轮优化循环而非单轮生成,且用真实硬件 profile 驱动
- 与 Jina AI、LongVQUBench 等多模态 RAG 工作:MaxKernel 属于 LLM + 硬件 infra 的垂直整合,RAG 的 chunk/retrieval 方法在此不直接适用
- 与 vLLM / TGI 的 kernel 优化:vLLM 等推理引擎在 kernel 级别做了大量手调优化;MaxKernel 的 vision 是把这些手工优化自动化——两者的最终目标接近,路径不同
适合谁读
- AI Infra 工程师:负责大模型推理优化、硬件加速器软件栈,MaxKernel 直接关乎 TPU 上 kernel 生成的前沿
- Compiler 工程师:关注 MLIR / XLA / JAX 生态,MaxKernel 展示了 LLM 如何与编译器反馈系统集成
- LLM 应用研究者:关注 Agent 系统的 tool-use / self-debugging / multi-agent collaboration 能力,MaxKernel 是目前最复杂的硬件 domain multi-agent 实例之一
- AI 系统架构师:考虑把 LLM 引入芯片设计流程(不只是 kernel 生成,还可能是 RTL synthesis、floorplanning)的技术决策者
⚠️ 说明:abstract 层面结果描述偏定性("matching baselines"、"significant performance"),具体数字建议 fetch PDF §4/§5 实验部分核验。开源链接已给出,建议 web_fetch 核实仓库活跃度和代码质量。TPU JAX 生态专属,NVIDIA 及其他加速器用户需评估方法迁移成本。
工程落地与核查(Jay)
事实核查结论
- ✅ GitHub 核实:AI-Hypercomputer/accelerator-agents 存在,MaxKernel 子目录存在,Apache-2.0 许可证,~60 stars,创建于 2026-02-04,2026-09-02 仍有更新
- ⚠️ 作者纠错:原文元数据写"作者:Tom",arXiv 实际作者为 Shengnan Cai,已更正
- ✅ Abstract 内容一致:原文描述与 arXiv abstract 基本一致("matching expert hand-tuned baselines"、"significant performance")
- ⚠️ 数字缺口:abstract 无具体性能数字,需 fetch PDF §4/§5 核实三种范式的端到端成功率、具体 speedup 倍数
实际系统怎么跑
前置依赖(三件套缺一不可): 1. Google Cloud TPU VM:TPU v4/v5e/v5p/v6e 均可,本地 CPU 仅能做语法验证无法 profile;当前 Auto Agent 支持 local/GCE/GKE(HITL 仅支持 local TPU VM) 2. Gemini API:通过 Vertex AI 或直接 API key 调用;不支持 GPT-4o/Claude 等第三方模型——生态绑定 Google 是最大采购锁定风险 3. Python 3.11+:标准依赖
上手路径:
git clone https://github.com/AI-Hypercomputer/accelerator-agents
cd accelerator-agents
bash MaxKernel/prepare_maxkernel.sh # 自动建 .venv + 装依赖 + 配置 .env
# 配置 .env:填 GOOGLE_CLOUD_PROJECT / GEMINI_API_KEY / TPU_VERSION
# HITL 模式
bash MaxKernel/run_hitl_agent.sh
# Auto 模式
bash MaxKernel/run_auto_agent.sh
真实端到端耗时(按 GitHub README 和 Issue #7973 的 marin 团队评估): - 单个 kernel 生成 + 调优循环:HITL 约 10-30 分钟(视人工确认频率) - Auto 模式批量跑 JAXBench 50 任务:预计数小时(取决于 TPU 资源调度) - ⚠️ 没有免费 tier:TPU VM 按小时计费,Gemini API 按 token 计费,生产使用成本不可忽视
核心坑点(实测风险)
- Gemini 绑定陷阱:系统 hardcode Gemini,迁移到其他模型需重写 agent reasoning 层;当前(2026-09)Gemini 在代码生成,尤其是硬件约束代码上与 GPT-4o/Claude Sonnet 的能力差距未经验证
- TPU 资源门槛:没有 TPU 访问则只能做 HITL 模式的代码生成,无法验证性能——实测价值归零;CPU-only 测试仅验证编译通过,不验证性能
- jaxbench 封闭性:JaxBench 50 任务未见公开 benchmark 排行榜,无法横向比较真实水平;8 个有手调参考实现,剩余 33 个是 KernelBench Level-2 fusion,无法确认基准难度
- autotuning 成本爆炸:Grid search over block sizes / grid layouts 的搜索空间大,Auto 模式可能跑出数百次 JAX 编译——每次编译 TPU 计费,生产账单需提前压测
- 图搜索稳定性:Graph-Based Autonomous Search 在 50 任务上的全局最优覆盖率没有 ablation 具体数字;高维设计空间的图搜索可能遇到状态爆炸
- 真实 workload 匿名导致无法复现:论文自承"state-of-the-art open-source models"未披露名称,外部团队无法验证"真实大模型工作负载上的显著性能提升"是否可信
迁移到 CUDA 的可行性评估
- 可行部分:多 Agent 分工架构、Compiler Feedback Loop 思路、Planner/Implementer/Debugger/Tester/Profiler 角色分离均通用
- 难度大的部分:JAX/Pallas 反馈层 → 需替换为 CUDA PTX/NVRTC 反馈;TPU profiler → 需对接 NVIDIA Nsight;Pallas DSL 语法 → 需重新设计 kernel 描述语言
- 实际成本:参考 marin 团队 Issue #7973 的评估(2026-08-04),他们做了 PyTorch-to-JAX 和 TPU kernel writing 两项评估,结论是"需要给 Google 反馈recommendation",说明当前仍属实验阶段
- 结论:非 Google 团队建议等成熟后再迁移;TPU 用户当前可尝试 HITL 模式小规模验证,Auto 模式生产使用需 TPU 资源充足且接受 Gemini 绑定
工程验收标准
| 验收维度 | 标准 | 优先级 |
|---|---|---|
| 功能正确性 | JAXBench 50 任务编译通过 + pytest 数值精度测试 | P0 |
| 性能达标 | 生成 kernel vs 专家手调 baseline speedup ≥ 0.9×(即不差于 10%) | P0 |
| 成本可控 | 单 kernel 生成调优总费用(Gemini + TPU)≤ 人工报价的 20% | P1 |
| 可复现性 | 同一任务 3 次运行结果一致性 ≥ 95% | P1 |
| 规模化 | 100 个不同 kernel 需求批量跑成功率 ≥ 80% | P2 |