最初只是想读一篇论文、写个摘要,结果越读越偏,最后变成了一个我觉得挺根本的问题:当 AI agent 说它在"设计芯片"的时候,它到底在做什么? 这篇笔记记的是过程中的几个转折和几次纠正,不是论文摘要。

起点:一篇试图把"理解"变成可测量的论文

论文是 Microsoft Research 的《Do AI Agents Understand Computer Architecture?》(arXiv:2609.19387)。它指出了一个容易被忽略的问题:现在有大量工作报告"AI agent 改进了硬件设计",但这些结果只能证明设计变好了,证明不了为什么变好。一个改进了加速器的 agent,可能在推理这台机器,也可能只是在无意义的旋钮上做了一次高效的搜索——而只有前者能迁移到下一个架构。

作者的做法我觉得很干净:把同一个 agent、同一个 15 维加速器设计空间、同一个评估器、同一批可达最优解,交给它两次。

  • 架构师条件:参数有名字,反馈是带硬件语义的模拟器计数器
  • 黑盒条件:同一个空间暴露成匿名变量 ,反馈是同样的计数器但剥掉全部语义,只报

评估器、合法空间、可达最优解、信息含量完全相同,唯一变化的只有"这些参数有没有意义"。两者的差距就是测量结果。

九个 FP16 GEMM kernel,面积预算按 A100 的物理包络,HBM 带宽锁死在 4800 GB/s(把"靠堆带宽赢"这条路堵死),每个条件跑 5–6 次:

条件平均最优 (µs)评估次数/次vs H200
架构 + 单 agent718.958低 5.4%
架构 + Actor–Critic744.2128低 4.8%
黑盒 + Actor–Critic781.0151低 4.1%
黑盒 + 单 agent819.9194打平
H200 参考750.1——

读出来是一句话:语义值钱,但不是唯一值钱的东西。 把表当 2×2 看——架构框架在"独自搜索"时值 12.3%,批判在"框架被拿掉"时值 4.7%,而两个一起给几乎没有额外收益:两个带 Critic 的条件最好的设计只差 0.8%,Critic 还让架构条件的平均最优倒退了 3.4%。

我原本以为 vs 实际上

这是这次最值钱的部分。

我原本以为:agent 能设计出更好的芯片,说明它懂架构。 实际上:这篇论文的整个设计就是为了说明前者推不出后者。更意外的是,语义带来的优势可以被"有个批判者"补上——架构知识和结构化批判表现成替代品而非互补品。作者的解释是它们提供的是同一种稀缺品:一个"下一步该往哪看"的假设。

我原本以为:机器学习类的设计空间探索方法,就是在整个空间里暴力搜。 实际上:先算个数——一个 470 万点的空间,1000 个样本只覆盖 0.021%。而且 BO / GA / ACO 存在的全部意义就是不要暴力。它们真正的特征是"零先验":把设计空间当成一堆无语义的点,所有知识只能靠采样一点一点买回来。我之前把"采样多"和"没先验"混成一件事了。

我原本以为:既然不做局部爬山,那它们就不算贪心。 实际上:拆成两半看更准确。它们不是空间局部贪心——BO 的采集函数里那个 项就是专门往"均值低但不确定"的地方跑的,GA 的交叉能做非局部跳跃——但它们是时间近视:只优化下一步,从不计算剩余预算里信息的价值。而且每种方法都有一根旋钮(BO 的 、GA 的选择压、ACO 的蒸发率)在"纯随机"和"纯贪心"之间插值。艺术在于事先拧对,而事先拧对需要知道地形。

我原本以为:给 agent 更多信息和更多知识,总不会更差。 实际上:知识源是次模的,甚至会出现负交互。把架构知识和批判当成两个可选项,用论文的实测数据算边际贡献:

已有新加入边际收益
无批判+38.9 µs
无架构知识+101.0 µs
批判架构知识+36.8 µs
架构知识批判−25.3 µs

架构知识单独看值 101,但在已经有批判的情况下只值 36.8;批判单独看值 38.9,但在已经有架构知识的情况下是倒扣 25.3。如果两者可加,最终成绩应该是 ,实测是 744.2——比加性预测差了 64.2 µs。

我原本以为:LLM agent 的架构理解是它自己推理出来的。 实际上:翻到论文的提示词附录(B.8),里面逐条列出了全部 15 个旋钮,带范围、默认值、单位和自然语言描述,第一句还是 "You are an expert AI-accelerator architect"。那套"意义"是实验者写进去的,而模型权重里本来就有架构语料——论文没有任何消融能把这两者分开。所以"给了语义就好很多"站得住,"agent 理解架构"站不住。

我原本以为:Critic 是一个"第二意见",应该更可靠。 实际上:Critic 是 Actor 功能的真子集——Actor 能做 Critic 能做的一切(提出方向),还额外能提交设计、拿独立反馈、跨轮修改策略。Critic 唯一多出来的是独立性,不是功能。而且它不可验证:论文里 Actor 靠读过评估器源码驳回了 Critic 那条"提高 hbm_bw"的建议(HBM 带宽根本不是旋钮),而实测它在架构条件下仍是负收益。

两条路线:同一个问题的两种答案

把已有的设计空间探索方法摊开,其实只有两类,而且它们回答的是同一个问题——下一步该评估哪个点?

机器学习专家启发式
答案从哪来从样本里学从人写的规则里读
机制信念更新 + 采样策略关键路径 → 定位瓶颈 → 沿路径重分配资源
长处通用、可迁移、不需要专家样本效率极高(每步都带因果信息)
短处从零学习 ⇒ 样本饥渴静态、不可修正、换架构就废
什么时候够用近最优平台足够宽 ⇒ 方向不值钱平台窄、且有清晰的瓶颈结构

专家启发式那条我一开始最不理解,后来在一篇讲 GPU 架构探索的论文(LUMINA,arXiv:2603.05904)里看清了它的谱系:从微体系结构的瓶颈分析继承下来——RpStacks 用代表性停顿事件栈做快速评估,Fields 用交互代价分析瓶颈,ArchExplorer 沿关键路径做 bottleneck-removal。核心认知是:瓶颈不是"利用率最高的部件",而是"依赖链上真正卡住别人的那个部件"。它的每一步方向都由人的因果知识给定,所以信息密度极高,几百次仿真就能收敛;代价是规则写死了,样本再多也无法修正它。

机器学习那一边,我觉得最准的比喻是:穷举是走遍每条街;BO 是边走边画地图、专门往"地图上还空白但看起来有希望"的地方去的人。 真正"没有模型"的其实只有网格搜索和随机游走。

顺便一个有意思的对照:LUMINA 的解法是从模拟器源码里静态解析出"哪个资源影响哪个指标"的因果图,再做敏感性分析量化它。这等于把专家写死的规则,换成了一条从"答案册"里自动抄出来、并且能随样本修正的先验。它样本效率确实高——1000 样本内找到 421 个优于参考的设计,而最好的黑盒基线只有 24 个;在只给 20 次评估的极端预算下,它是唯一找到能超过 A100 的设计的方法。但这恰恰是问题所在:它证明的是"注入知识有效",不是"agent 懂架构"。

一个更尖的反问

顺着"知识"这条线再推一步,会撞上一个很不舒服的问题:

如果 Actor 和 Critic 的改进方向都来自模型权重里的预训练先验,那关键不就变成了"先验怎么注入"——这不还是回到专家经验问题上了吗?

我觉得这个反问比论文自己的 Discussion 还尖锐,因为它指出了 treatment 里混着实验者写的领域知识。但它跨大了一步,有两处要反驳:

第一,名字解锁的不只是权重,还有环境。 论文里最大的一次单步改进(0.464 → 0.410),来自 agent 读评估器的成本模型源码,发现"面积对所有 tile 形状都是平的,因为面积由 tc_macs_per_cycle 驱动,而不是 M/N/K 几何"。关键在于——在匿名条件下这件事根本不可能发生:源码里写的是 l1_kb、l2_mb 这些符号,而黑盒 agent 看到的是 ,它没法把两者对应起来。所以名字是一把能打开环境的钥匙,而 这个数字不在任何预训练语料里,只能从现场读出来。

第二,先验的粒度不同。 专家规则是关于答案的("互连是瓶颈就加互连"),换架构就废;LLM 表现出的很多是关于方法的("先读成本模型看面积由什么驱动"、"设计受控实验区分混淆变量"),这些是可迁移的。

所以我把结论改写成:真正可迁移的从来不是知识,而是获取知识的能力。预训练里的架构先验再好,也是别人在某台机器上学到的东西,遇到新架构就会过期;而"读这台机器的源码、设计受控实验、证伪自己的假设"这个能力,不依赖任何关于这台机器的先验。

不过要诚实标注:论文没能证明这一点。它只测了一个模型,没有跨模型消融,没有语义错配控制,也没有陌生架构测试。所以那条最漂亮的轨迹——自己读成本模型发现面积免费——我们无法判断它是从权重里回忆出来的,还是真的从源码里读出来的。

抽象出来的目标函数

聊到最后,我们把整件事压缩成了一个式子:

  • 是地板:什么知识都不注入,只用一个能干的优化器去搜,在预算 和地形 下能拿到什么。
  • 是一组知识 的净贡献。注意它以集合为输入,所以行为可以是非线性的。
  • 它的性质是次模(越加越不值钱,也就是替代品),且交叉项可以为负。

这个式子的价值在于,它把一场定性争论变成了三个可以分别回答的问题:

  1. 地板有多高? 论文里黑盒单 agent 打平 H200,说明地板相当高。
  2. 天花板离地板多远? 也就是 的最大值。宽平台上它很小——论文里三个条件的平均最优挤在 0.8% 以内就是证据。
  3. 给定预算, 该买哪几件? 次模意味着这本质是最大覆盖问题而不是背包问题:不能孤立评估每个知识源再相加,必须按边际贪心、每加一件重新评估,而且必须做消融来检测负交互。当两个源彼此可替代时,就该选更便宜、更可核查的那个。

还应该补一条关于"利用率"的观察:在这篇论文里,利用率是接口的属性,不是 agent 的属性。匿名条件把同一个模型、同一份权重知识的使用率直接打到接近零——模型没能"更努力地使用"它的知识,它根本没有着力点。

待补

  • 论文作者自己说,下一步要上更难的算子(attention、集合通信、稀疏层)、更紧的约束、更小的评估预算。他们的判断是评估预算会最先"咬人",因为预算一紧,错误的假设就再也没法靠采样量补救。如果分离度在那里出现,说明能力是真的;如果不出现,那才是更有意思的结果。值得追。
  • 清单上还没读完的:MicroEvo(LLM + MCTS 的微架构多目标探索)、gem5 Co-Pilot、ArchEval(把 agent 当架构师来考的 benchmark)、CAKE。打算用同一把尺子量它们:知识源 是什么?获取成本记了多少? 有没有被消融验证过?换个架构还剩多少?
  • 一个我想做但还没做的对照实验:语义错配。把参数名系统性地贴错(把 L2 容量的名字贴到核心数上)。如果 agent 的优势真来自架构先验,它应该被带偏;如果只是"有名字"这个锚定效应,贴错名字就不该有太大影响。这个实验能一刀切开"语义先验"和"命名效应"。
  • 强度提醒:上面所有具体数字都来自 5–6 次运行,数值本身噪声很大。可靠的是形状(次模、且至少一个格子为负),不是刻度。论文自己也发现"用同一个 prompt 的不同运行之间的差异,和不同 prompt 版本之间的差异一样大"——未建模的旋钮会主导方差,所以别急着优化,先确认效应量大于噪声。