Agentic CUDA Optimizer 实战:用 7 轮受控实验做 CUDA 性能优化

本文用一个 float32 矩阵乘法内核,拆解 Agentic CUDA Optimizer 的 7 轮受控搜索:从固定 v0.0 commit、准备独立参考实现与输入用例,到审查 history.json、复跑 best.cu,并用完整 GPU、API 和人工成本判断加速是否值得上线。

Friday, September 25, 2026Omid Saffari
Agentic CUDA Optimizer 实战:用 7 轮受控实验做 CUDA 性能优化

把一个小型 float32 矩阵乘法内核放进 7 轮受控搜索:只有所有可信用例都通过,候选方案才有资格保留;只有最终胜出的版本足以抵消模型调用、GPU 时间和人工复核成本,才考虑上线。这是一份面向 Bertaye 的 Agentic CUDA Optimizer 的 CUDA 性能优化指南,与 ByteDance 和 Tsinghua 的 CUDA Agent 研究系统无关。

CUDA 性能优化:先看结论

应该把 Agentic CUDA Optimizer 当作有边界的实验执行器,而不是能自主给出证明的机器。 固定初始 v0.0 commit,在文档指定的 Windows 环境中构建 C++ 测试运行器,自备参考内核和输入用例,用 --max-iterations 7 限制搜索次数,最后审查 history.json、summary.json 和 best.cu,再独立复跑。

这个优化器可以把一套很实用的流程自动串起来:编写候选内核、编译、运行、在输出不一致时淘汰、在输出通过后计时,再把证据送入下一轮。它无法替你判断参考实现是否正确,也无法证明测试用例覆盖了生产环境,更不能保证一个孤立内核变快后,整笔 GPU 账单一定会下降。

该仓库于 2026 年 9 月 24 日 19:41:43 UTC 以 commit 1e9464da54dfc651337a97c3643bfeefec712bc1 首次出现。固定这个 commit 很重要,因为本文讲的是 v0.0,而不是仓库之后可能发生的变化。

这个优化器究竟做了什么

可以把它想成一个带质检关卡的模型工坊。模型能够重新设计工作台上的小零件,也就是 CUDA 内核,并调整它的启动方式;测试运行器负责掌控测量设备。只有全部输入用例都得到可接受输出,候选内核才会进入最终陈列柜。

在底层,独立的 C++ 运行器使用 NVRTC 编译 CUDA 源码,通过 CUDA Driver API 启动内核并保存输出。Python 随后把这些输出与参考结果比较,再筛选候选方案。标为 correctness 的用例必须通过,但不计入得分;标为 performance 的用例既参与正确性验证,也会进入用于排名的几何平均延迟计算。

默认情况下,每个计时用例先预热 10 次,再通过 CUDA event 正式测量 100 次。这些数字只描述内核计时,并不是任务总成本。编译、模型调用、失败尝试、输入生成、profiler 重放和人工复核都不包含在这段延迟里。

从参考内核出发,依次经过生成、验证和基准测试,最终得到 best.cu 的架构流程
只有通过全部输入用例的内核才会在候选循环中晋级;排名计时不包含编译和 profiler 重放。

这也正是应该使用测试运行器,而不是只用一个 prompt 让通用编程 agent 交付所谓“聪明内核”的原因。它的价值在于提供一套有记录、有预算上限、关卡明确的循环,但这并不能证明 LangGraph 一定比能力出色的编程 agent 找到更好的答案。仓库作者在发布讨论中也强调过同一点:真正有用的是给各个步骤加上边界。

按固定版本搭建 Windows 环境

先沿用文档明确支持的 Windows 路径。 该仓库在 RTX 3060 Laptop GPU 上开发,文档指定 Visual Studio 2026 及其 C++ 工具。编译之前,请确认已有 Python 3.12 或更高版本、CMake 3.24 或更高版本、C++17 编译器、NVIDIA 驱动,以及兼容的 CUDA Toolkit。

Powershell
python --version
cmake --version
where.exe cl
nvidia-smi
nvcc --version

git clone https://github.com/bertaye/agentic-cuda-optimizer.git
cd agentic-cuda-optimizer
git checkout --detach 1e9464da54dfc651337a97c3643bfeefec712bc1

python -m venv .venv
.venv\Scripts\python -m pip install -r optimizer_agent/requirements.txt
cmake -S cuda_test_harness -B cuda_test_harness/build -DCMAKE_BUILD_TYPE=Release
cmake --build cuda_test_harness/build --parallel

Set-Content .env 'OPENAI_API_KEY=your-key-here'

任何一项前置检查失败,都应该先停下来。工具链和 agent 同时变动内核时,很难判断失败究竟来自哪里。

v0.0 有两个细节尤其值得注意:

  • README 建议传入 --config optimizer_agent/example.json,但固定 commit 中没有这个文件。请改用明确的 flags,或自行创建并审查配置。
  • 公开仓库中没有 license 文件,GitHub 也显示未检测到 license。代码公开可见不等于获得商业授权;用于公司、再分发或付费产品之前,应先取得许可或接受法律审查。

该版本没有记录其他平台的搭建路径。本文也检查过 Linux 环境,但由于缺少所需的 CUDA 和构建工具,那次检查只能算前置条件审计,不能算成功完成了 Linux 测试。

最后,还要隔离运行机器。如果让优化器创建输入,生成的 Python 会直接在本地执行,没有 sandbox;生成的 CUDA 同样会直接在 GPU 上运行。请选择一次性主机或 VM,只授予有限凭据,不放生产数据和无关 secret,也不要让它访问重要的共享文件。

设计一个能诚实失败的实验

从一个能用一页纸写清契约的内核开始。 行主序 float32 矩阵乘法很适合作为试点:输入、输出和维度都很明确,奇数尺寸还能暴露那些规整方阵用例容易漏掉的边界处理问题。

在优化器的结果目录之外准备 3 项资产:

  1. reference.cu:来自可信来源、经过审查的简单实现。不要让同一个模型同时生成 oracle 和候选内核。
  2. initial.cu:原本真正准备上线的 baseline。这样就不会把“相对较弱生成代码的巨大提升”误判成业务收益。
  3. input_cases.json:包含固定、可复现的二进制输入,并针对你的数值契约设定有实际意义的比较容差。

一个有边界的试点可以放入一个奇数形状的正确性用例,例如 M=31、N=37、K=29;再放入两个规模适中的性能用例,例如 256×256×256,以及 M=384、N=256、K=320。这些只是实验设计建议,不是仓库的 benchmark。另留一个搜索期间不可见的第 4 个 holdout 形状和一组新数值,让最终候选面对真正没见过的测试。

输入应使用有实际变化的数值,不要全是 0 或 1。逐一检查 buffer 大小、参数顺序、标量类型和容差。manifest 至少要有一个 performance 用例。所有用例都必须通过,但只有 performance 用例参与排名。

运行前,给参考实现、输入和测试运行器计算 hash,或者直接保留副本。优化器可以自由修改候选源代码以及各用例的启动配置,但不能修改成功的判定标准。

严格执行 7 轮改进

下面的命令使用明确的输入和文档指定的 Windows 解释器路径。它固定了入口签名,提供独立参考实现和真实 baseline,并把改进预算限制在 7 轮。

Powershell
.venv\Scripts\python optimizer_agent\optimizer_agent.py `
  --description "Row-major float32 matrix multiplication C=MxN from A=MxK and B=KxN." `
  --signature 'extern "C" __global__ void matmul_f32(const float* a, const float* b, float* c, int m, int n, int k)' `
  --reference .\experiment\reference.cu `
  --initial-kernel .\experiment\initial.cu `
  --input-cases .\experiment\input_cases.json `
  --max-iterations 7

默认模型是 gpt-5-mini,reasoning effort 为 medium,API 用量由你的账户付费。7 轮改进不等于只调用 7 次模型,也不等于只启动 7 次内核。一次 proposal 可能包含工具调用和纠错重试,而仅一个计时用例,默认就有 10 次预热和 100 次正式测量。

第一次建立干净 baseline 时,先不要启用 --use-nsight 和 --nvidia-research。Nsight profiling 会增加重放工作,还需要 Nsight Compute 以及读取 GPU 性能计数器的权限;NVIDIA research 则会增加模型和检索工作。基础循环稳定之后,再一次只增加一个变量。

按下 Enter 之前,先建立实验日志并记录:

  • 固定的 commit 和 dirty-tree 状态
  • GPU 型号、驱动及 CUDA Toolkit 版本
  • 参考实现和用例的 hash
  • 开始与结束时间戳
  • GPU 总 wall-clock time
  • 模型名称、调用次数、token,或保存的 response 文件中可取得的其他用量 metadata
  • 有效候选、被拒候选及拒绝原因
  • baseline 与胜出版本在各用例上的延迟
有限预算的 CUDA 实验清单,包含固定 commit、自有用例、7 轮尝试、成本记录和独立复跑
有效的试点会在搜索前固定代码版本和测试契约,随后补齐内核计时未覆盖的各项成本。

比较计时时,应让 GPU 保持空闲。后台 GPU 任务可能把微小的表面提升变成纯粹的测量噪声。

读懂证据,再独立复跑胜出内核

把结果目录当作审计包,不要当成奖杯陈列柜。 每次 session 都保存在 results/run-NNN/ 下。先看这些文件:

  • history.json 记录每次被评估的尝试,包括用例级执行细节、验证结果、启动配置和实测延迟。
  • summary.json 给出最佳 iteration、各用例延迟、可取得的 baseline speedup,以及终止原因。
  • best.cu 是通过全部输入用例后速度最快的候选内核。
  • best-case-N.json 是使用胜出源码在现有用例上复跑的 request。
  • model-*.json 和工具 response 文件保留 agent 的交互过程。应在其用量 metadata 中核算 API 成本,因为 summary.json 不会汇总模型支出。
  • heatmap.png 和 heatmap.svg 展示计时历史。它们可以帮助定位问题,但不是正确性证据。

被拒候选与有效候选同样值得认真统计。6 个 proposal 被拒、只剩 1 个窄幅胜出方案,与所有候选始终保持有效,传达的是完全不同的信息。检查编译失败、输出不匹配,以及胜出源码是否真的与其 parent 有差异。

接下来,在同一块保持空闲的 GPU 上,通过测试运行器逐一复跑保存的 best-case-N.json。然后使用独立 oracle,让 best.cu 接受隐藏形状和新数值的测试。现有用例只能证明候选通过了这些用例,不能证明它在所有合法形状上都普遍正确、没有 race,也不能证明其行为始终安全。

只要任一 holdout 失败、重复计时与 baseline 的差距落入噪声,或者收益在真实应用中消失,就应淘汰这个胜出版本。生成的参考实现不能作为唯一 oracle;相对生成初始内核的胜利,也不代表胜过 cuBLAS 或其他生产 baseline。该仓库没有发布与 cuBLAS 的对比结果。

CUDA 性能优化是否划算,要算整笔账

判断依据应该是完整任务的经济性,而不是孤立的内核得分。 公开仓库没有订阅价格,但同样没有授予商业许可。实验仍然会消耗工程师时间、模型 API 用量和 GPU 时间。

一份实用的 worksheet 可以列 3 行:

  • pilot cost = engineer setup and review + model charges + GPU wall-clock cost
  • saved GPU hours per month = end-to-end milliseconds saved per invocation × monthly invocations ÷ 3,600,000
  • payback months = pilot cost ÷ monthly gross GPU saving

这里要使用集成后的端到端毫秒节省量,而不是 summary.json 中由 CUDA event 得出的延迟。如果每次请求会多次运行该内核,就按实测调用次数计算。如果加速会改变吞吐量、显存压力或 batching,请重新测量完整 workload,不要凭假设外推内核结果。

实体化的回本天平:工程师、API 和 GPU 试点成本,对比调用量、节省时间与 GPU 费率
是否上线应由完整成本账本决定。更快的内核只是输入之一,不是最终结论。

人工方案本身也不便宜。Upwork 的 CUDA consultant 页面目前给出的规划区间是:性能 profiling 为 $500 至 $1,200,内核调优为 $2,500 至 $4,500。这些是平台区间,不是报价,也不能证明 agent 可以取代专家;但它们确实说明,如果一套可重复的一轮实验能把昂贵的专家工作收敛到证据完整的候选方案上,就可能创造价值。

是否继续的规则可以很直接:只有候选方案通过独立用例、反复胜过 baseline、确实改善真实 workload,并且回本周期落在团队运行前设定的范围内,才进入受控集成测试。

最适合采用这套方法的 7 类团队

下面按“最有可能把经过验证的内核收益转化为收入或算力节省”排序。

排名团队具体 workflow为什么可能划算
1有单个高负载自定义算子的 inference platform 团队对生产环境做 profiling,隔离该算子,提供有代表性的形状,再在服务内复跑胜出内核反复出现的延迟下降可以减少 GPU-hours 或释放更多请求容量,但前提是端到端测量确认收益
2需要支持多种客户形状的 CUDA library vendor针对每类受支持的形状各跑一次有限 campaign,再把胜出内核纳入特定硬件的 regression suite同一项经审查的改进可以惠及多个部署点,从而摊薄验证成本
3内层循环稳定的科学仿真团队固定 numerical oracle,搜索不同启动方式和 memory layout,再比较完整仿真耗时当同一操作重复数百万次时,小幅内核收益也可能很可观
4使用自定义 transform 的视频或图像 pipeline测试生产环境实际使用的分辨率和边界形状,包括奇数维度更低的逐帧 GPU 时间可以提高吞吐量,holdout 则用于守住视觉正确性
5GPU 优化咨询团队用测试运行器完成有上限的 discovery 阶段,再由专家检查并加固最佳候选有记录的失败和计时可以减少付费诊断时间,同时不把最终复核伪装成自动完成
6评估生成式内核的 ML systems 团队向多种候选生成方案提供完全相同的参考实现和用例共用运行器能减少比较结果对各 agent 自报数据的依赖
7教授 GPU 性能的研究实验室让学生检查某个已知操作的变更历史、被拒候选和启动选择这些 artifact 能训练实验纪律;但由于生成代码会在本地执行,环境中不应放置敏感信息

如果目标 workload 是完整应用、成熟的 vendor primitive,或持续变化的一组形状,应该先从别处入手。这个优化器明确处于实验阶段,目标是单个内核。

如需了解相邻系统,可以阅读现有的 GPU 优化 AI agent 对比,其中涵盖 AKO、KernelAgent、AutoKernel、Apex 和 CUDA Agent。Bertaye 的仓库是一个更新、相互独立的项目。

围绕它最值得做的 2 款产品

1. 有边界的 CUDA 优化审计

这是最值得优先考虑的机会。 面向只有一个高成本 CUDA 内核的团队,出售范围固定的证据包:捕获运行环境、接收可信用例、执行 7 轮尝试、独立复跑、核算模型与 GPU 成本,并给出继续或停止的报告。

需求不大,却非常具体。DataForSEO 显示,cuda optimization 在美国每月约有 30 次搜索,cuda kernel optimization 约有 20 次,两者的付费搜索竞争都较低。与此同时,Upwork 上 profiling 的规划价格为 $500 至 $1,200,调优为 $2,500 至 $4,500。这组信号更适合做小众专家服务,而不是大众自助应用。

最小可售版本需要安全 intake form、一次性 GPU runner、锁定的用例 manifest、运行成本 collector,以及 HTML 证据报告。人工 reviewer 不能缺席。真正的难点是信任:一个错误的胜出内核,就足以抹去多次成功审计积累的价值;仓库没有 license,也意味着在此代码之上提供商业服务前必须取得许可。

2. GPU 内核回归门禁

可以构建一项受控 CI 服务:在预留硬件上复跑已批准的内核,检查保存的输出,并在延迟或正确性发生漂移时阻止发布。GPU platform 团队和 CUDA 咨询公司会愿意为跨 driver、toolkit 和源码变更的稳定记录付费。

DataForSEO 显示,gpu performance optimization 在美国每月约有 10 次搜索。单靠 SEO,这个量级不足以支撑一门生意,但足以验证买家使用的表达方式。获客渠道应放在咨询公司、GPU vendor 和企业内部 platform 团队。

MVP 需要 hardware queue、环境 fingerprint、签名 reference case、重复计时、threshold,以及与上一个已接受版本之间的简洁 diff。难点在于 variance:如果 runner 无法控制机器并重复测量,共享主机、thermal state 和 driver 变化都可能造成误报。

这些限制会直接改变你的决定

坦率地说,v0.0 是一套有用的实验脚手架,但也带来很重的信任负担。

  • 它优化的是单个 CUDA 内核,不是完整应用。
  • 通过现有用例并不能确立普遍正确性。
  • 生成的参考实现不是独立 oracle。
  • 性能收益取决于 workload 和硬件。
  • 它没有提供与 cuBLAS 或其他 vendor library 的对比。
  • 默认计时不包含编译和 profiler 重放,因此不是运行总成本。
  • 生成的输入脚本会在本地执行,没有 sandbox。
  • 文档支持的构建路径是 Windows;其他平台需要单独保存经过验证的搭建记录。
  • 固定 commit 中缺少文档提到的示例配置。
  • 仓库没有确立商业许可权。

如果需要明确阶段、持久证据和可重复预算,独立运行器就值得使用。如果已有专家全程监管终端、测试足够强,而且任务确实只做一次,通用编程 agent 也可能已经够用。只有当边界与审计轨迹真正降低了风险或重复成本时,这个运行器才有存在价值。

常见问题

如何在 Mac 上使用 Agentic CUDA Optimizer?

固定版本仓库记录的是搭载 NVIDIA GPU 和兼容 CUDA 环境的 Windows 构建,不是 Mac 搭建方案。应使用可以自行验证的远程或一次性 NVIDIA 机器,并把该平台单独标注清楚,不要靠猜测改写 Windows 命令。

Agentic CUDA Optimizer 与 ByteDance CUDA Agent 是同一个项目吗?

不是。本文介绍的是 Bertaye 的 agentic-cuda-optimizer,它由 LangGraph workflow 和 C++ CUDA 测试运行器组成,于 2026 年 9 月发布。ByteDance 和 Tsinghua 的 CUDA Agent 是另一套研究系统,也使用不同的仓库。

本文使用哪个 CUDA-Agent GitHub 仓库?

本文使用 bertaye/agentic-cuda-optimizer,并固定到 commit 1e9464d。搜索结果中还会出现 BytedTsinghua-SIA/CUDA-Agent,但它不是本文配置的软件。

这个优化器是否使用 NVIDIA CUDA Agent?

文档中的流程不包含独立的 NVIDIA agent。项目可以选择通过 --nvidia-research 检索 NVIDIA 指南,也可以通过 --use-nsight 检查 Nsight Compute counter,但候选生成与编排仍由该仓库自己的 workflow 完成。

下周一最实际的一步很简单:安排 1 名 GPU 工程师、1 个低风险 float32 内核、1 台一次性 NVIDIA 机器,再留出 1 天准备独立参考实现、测试用例和成本表。只有这些关卡全部写清楚后,才开始 7 轮试点。

如果你希望把可测量的 GPU 实验及其复核路径接入生产系统,可以从 AI 生产系统 开始。

最近更新
2026年9月25日
分类
Build

在 Google 中优先显示本站

将 omidsaffari.com 添加为 Google 搜索的优先来源

把 omidsaffari.com 设为优先来源,Google 会在 Top Stories、AI Overviews 和 AI Mode 中为您优先展示。

Runpod 价格详解:Pods 与 Serverless 怎么选

Runpod 价格详解:Pods 与 Serverless 怎么选

Runpod 价格到底怎么计算?本文对比 Secure Cloud Pods、Serverless Flex、Active workers 与存储费率,用 100 小时、730 小时和请求量场景拆解 H100 成本,并给出 60.33% 的盈亏平衡线,帮助你按真实 worker 时长选择方案。2026年9月25日Build
Vercel Sandbox Drive 实战:让 AI 编程工作区跨沙箱持久化

Vercel Sandbox Drive 实战:让 AI 编程工作区跨沙箱持久化

用 Vercel Sandbox Drive 把代码、依赖缓存和任务笔记保存在可跨沙箱挂载的持久工作区中。本指南通过 TypeScript 示例,讲清 Drive 的创建与挂载、单写入者与快照读取规则、区域限制,以及存储、读写与计算费用,并给出四项上线前验证方法,帮助 AI 编程代理减少重复安装和工作区重建时间。2026年9月25日Build
Firecrawl 替代方案怎么选:7 款网页抓取工具成本对比

Firecrawl 替代方案怎么选:7 款网页抓取工具成本对比

Firecrawl 替代方案指南:对比 Apify、Crawl4AI、ScrapFly、Jina Reader 等 7 款网页抓取工具,按验收通过页面核算价格与运维工时,并拆解 URL 发现、JavaScript 渲染、Markdown/JSON 输出边界和迁移验收方法,帮助小团队避开只看请求单价的选型误区。2026年9月25日Build
AI code review 工具怎么选:7 款 CodeRabbit 替代方案

AI code review 工具怎么选:7 款 CodeRabbit 替代方案

对比 7 款 CodeRabbit 替代方案,按 5 名 PR 作者、每月 300 次审查统一核算 Greptile、cubic、Qodo、PR-Agent、Kodus、Cursor Bugbot 与 GitHub Copilot 的成本,并从 Git 托管平台、数据边界、部署方式和计费单位判断团队是否值得迁移。2026年9月25日Build
Greptile 与 CodeRabbit:代码审查工具怎么选

Greptile 与 CodeRabbit:代码审查工具怎么选

Greptile 与 CodeRabbit 都是 AI 代码审查工具,但同为每位作者每月 $30,计费逻辑却截然不同。本文逐项对比积分、滚动限额、平台支持、运行时验证和五人团队成本,并给出可复核的选型与试用方法,帮你判断常规吞吐量该选 CodeRabbit,何时值得为 Greptile 的审查深度付费。2026年9月25日Build
Perplexity Portable Computer 使用指南:AMD Windows 本地运行全流程

Perplexity Portable Computer 使用指南:AMD Windows 本地运行全流程

AMD Windows 电脑如何本地运行 Perplexity Portable Computer?详解 Ryzen AI Max 硬件门槛、模型下载、文件夹权限、对账测试和定时任务设置,说明哪些步骤会转入云端、消耗 Computer credits,以及如何用已知异常验收结果,避免把系统内存误当成 GPU 可用内存。2026年9月25日Build
AgentRun 评测:AI 智能体工作流何时值得引入

AgentRun 评测:AI 智能体工作流何时值得引入

AgentRun 值得用于 AI 智能体工作流吗?本文实测 beta.4 的分支控制、schema 校验、升级机制、集成成本与定价,并与 TypeScript、LangGraph.js 和 Temporal 对比。结合 4 个客服案例、31 项测试及 31 行函数,说明适用团队、关键限制,以及何时该继续使用普通代码。2026年9月24日Build
Perplexity API Fast Search 对比默认 Web:该怎么选?

Perplexity API Fast Search 对比默认 Web:该怎么选?

Perplexity API 的 Fast Search 每 1,000 次成功请求仅需 $1,默认 web 为 $5。本文对比两种模式的延迟、检索质量、覆盖能力与真实成本,并给出按查询风险路由、用证据门槛自动升级的落地方法,帮助 Agent 团队判断哪些任务该追求速度,哪些研究必须保留更广的来源覆盖。2026年9月24日Build
订阅通讯

每周日,一封信。写运转中的系统,不写热评。

每周一期。无垃圾邮件。随时退订。