西湖大学团队推出MetaKernelBench:GPU内核经验能否跨语言复用
你有没有想过这样一件事:一个厨师学会了用中式炒锅做一道菜,掌握了火候、翻炒的节奏、调味的顺序。现在让他换一把西式平底锅做同一道菜,他脑子里那些关于"什么时候该大火""什么时候该收汁"的判断,到底能用上多少?这不是一个无聊的厨房问题,它恰恰是最近一群研究者在GPU编程领域死磕的问题。**GPU内核**:运行在显卡上...
假设一个厨师已经用中式炒锅练熟了一道菜,火候怎么控、翻炒什么节奏、调料按什么顺序放,心里都有数。换成西式平底锅做同一道菜,他脑子里那些“该大火了”“该收汁了”的判断,还能剩下多少管用?
这听起来像厨房里的闲话,其实是最近一批研究者在GPU编程上反复琢磨的难题。
**GPU内核**指的是跑在显卡上、针对特定计算任务做过高度优化的小程序。写得好,程序能快几十倍;写得差,连结果正确都未必保得住。
眼下的AI агент(智能体)已经能自己动手写GPU内核,边写边测,拿测试反馈当方向不断修正。更聪明的一招是,它们会把摸索出来的经验存进知识库,或者整理成一份“技能笔记”,留给以后调用。一个智能体踩过的坑,下次似乎就不用再踩了。
可有个问题始终没有明确答案:这些存下来的经验,到底顶不顶用?
过去的评测只看“这一次代码写得对不对、快不快”,没人追问“上一回攒下的东西,这一回有没有真的帮上忙”。好比只给厨师的每道菜打分,却从不统计他从上一道菜里学到的东西,有没有让下一道菜变好。
西湖大学团队的这篇论文,盯的就是这块空白。他们搭了一套叫**MetaKernelBench**的评测体系,要回答的问题很具体也很尖锐:一个AI模型用A语言写内核攒下的经验,换到B语言写同一个问题,是帮倒忙,还是真管用?
换语言,但不换问题:这个设计巧在哪
想验证经验能不能跨语言复用,第一道坎是怎么把对照实验设计出来。
假如让智能体用同一种语言反复写同一个问题,它上次攒下的“语言专属技巧”(比如某个API怎么调更快)会原样搬过来。这样测到的其实是“记忆的价值”,而非“经验的价值”。
反过来,换一个完全不同的计算问题,麻烦又来了:问题一变,之前学到的东西还剩多少相关?你没法分清,究竟是经验本身没用,还是问题变了才让经验用不上。
研究者的办法是:问题不动,只换语言。
他们从真实生产环境里挑了74个计算任务,覆盖注意力机制、键值缓存、MoE(混合专家模型)路由等六大类。每个任务都备了两个版本,一个用**CuTe DSL**,一个用**TIRx**。这两种都是能让程序员精细控制GPU内存和线程调度的专用编程语言,语法和写法却完全不同。
两个版本对应的是同一个数学问题、同一套硬件、同一个判分标准,唯一的变量就是编程语言。这样一来,经验若真管用,那应该是因为它装的是“底层逻辑”(比如“别把中间结果存出来,直接用”),而不是某门语言的语法技巧。
还是拿做菜打比方:让一位师傅先用炒锅炒一盘青椒肉丝,再用平底锅炒同一盘青椒肉丝。食材、火候要求、咸淡标准全一样,变的只是工具。师傅笔记里若写着“肉要先腌十分钟去腥”,换锅照样成立;可要是写着“炒锅颠勺三次让受热均匀”,平底锅就用不上,还可能让他在不该颠的时候瞎折腾。
这套设计的价值正在这里:语言无关的硬核经验和语言专属的操作技巧,被自然地分开了。不用人工去标注哪条经验归哪一类,实验结果直接就能看出经验的真实成色。
怎么测:一场“单独做”与“带着笔记做”的对照
流程大致是这样。
每个任务,智能体先独立试一次,不借任何外部经验,这一步叫**solo attempt(单独尝试)**——没有任何外部提示,全凭自己摸索。
试完之后,不管代码写得对不对、快不快,智能体都要把这次摸索到的东西写成一份自然语言的“技能笔记”(论文里叫SKILL.md)。
**技能笔记**是用自然语言记下的优化心得,里面可能有有效的发现,也可能有错误的猜测,论文里统称“技能”(skill)。
关键在于“不管对不对都要记”。失败的尝试同样会生成笔记,而且这份笔记会被原样搬到另一种语言的新尝试里,不做任何筛选和过滤。
这个决定挺大胆。按常理,失败的经验该滤掉,只把“验证过有效”的往下传。研究者偏不,他们把判断权交给实验数据:失败经验到底也有价值,还是纯粹噪音?
接着是关键对比。同一个任务、同一种目标语言,跑两次:第一次就是前面说的“单独尝试”,作为基线;第二次是“技能条件化尝试”,把来自另一种语言的技能笔记塞进任务说明,让智能体带着这份笔记重新攻同一个问题。
两次尝试的预算完全一致:40分钟、最多10次提交,差别只在有没有那份笔记。这样比较才公平——带笔记那次要是表现更好,差异就只能算在笔记头上。
打个比方,两个底子一样的学生拿同一张卷子,一个上来就做,另一个先翻一眼师兄留下的"考试心得"再动笔,时间、题目都没变。看了心得的人考得更好,功劳自然归那份心得;反过来考砸了,要么心得本身误导人,要么学生不加判断地照搬。
论文用**paired lift(配对增益)**这个指标把差异量化:拿"带笔记"和"不带笔记"两次的最终运行速度与正确性作对比,换算成一个比值。正数说明笔记帮了忙,负数说明拖了后腿。
结果是四赢两平,但没有谁稳赢。
六个模型、两个方向(CuTe到TIRx、TIRx到CuTe),一共十二组数据。
其中Gemini 3.7 Flash、DeepSeek-V4-Pro、GLM-5.3、GPT-5.6 Sol这四个模型在两个方向上都拿到正收益,提升从2.3%到29.3%不等。GLM-5.3-Flash反过来,两个方向都是负收益;Qwen3.8-Flash则一个方向赚、一个方向亏。
有个数字值得多说两句。
**整体配对增益的区间从负19.1%到正29.3%**。
这个跨度本身就说明问题。经验转移既不是"永远有用",也不是"永远没用",效果取决于具体是谁的经验、转移到了谁身上。
更意外的是,那四个"两个方向都赢"的模型也没能全程稳赢。研究者发现,每个模型在每个方向上都有16%到45%的问题出现"退步",也就是带了笔记反而不如单独做。换句话说,平均正收益归平均正收益,具体到某一道题,你完全可能撞上一份帮倒忙的笔记。
好比一个班平均分涨了,不代表人人都涨,甚至可能有相当一部分学生因为照搬师兄的错误心得考得更差。平均数把个体之间的巨大差异盖住了。
那么,一份笔记能不能帮上忙,究竟由什么决定?
决定成败的不是对错,而是"相对位置"。
这是整篇论文里我觉得最有意思的发现。
直觉上,来自"正确实现"的笔记似乎应该比来自"失败实现"的笔记更靠谱。数据给出的答案却更微妙。
**决定笔记价值的,是源头尝试相对于目标语言单独尝试的"相对水平",而不是源头尝试本身对不对**。
论文把每次尝试的结果分成三档:失败;通过但速度低于2倍提速;通过且2倍提速以上。
接着拿源头尝试的档次和目标语言单独尝试的档次作对比。源头档次更高时,71.2%的转移有效,退步只占8.1%;源头档次更低时情况反转,有效的只有10.6%,退步的占到53.8%。
也就是说,笔记好不好用,要看它比"接收方自己能达到的水平"高还是低,跟笔记本身是不是来自一次成功实现关系不大。
这个发现挺反直觉。它意味着,一份"失败但接近突破"的笔记,可能比一份"成功但很平庸"的笔记更有价值——后者相对目标语言的潜力来说,其实在拖后腿。
就像一个数学本来就不错的学生,去借数学更差的同学的笔记,反而会被带偏,哪怕那份笔记工整、态度认真,内容本身的水平不够格。反过来,借到数学学霸留下的解题思路(哪怕他这次因为笔误没拿满分),倒能学到真东西。笔记的价值从来不看作者"这次考得好不好",而看作者的水平和你自己的水平谁更高。
这也指向一个更根本的东西:**知识转移的价值从来不是绝对的,而是相对的**。同一份经验,水平高的人看了是垫脚石,水平低的人看了反而成了绊脚石。
哪些话容易"带坑",哪些话靠谱。
研究者还找了一批LLM标注员,按内容类型给每份技能笔记打标签,共分11类,从"工作量普查"(枚举计算任务的具体特征)到"未经验证的论断"(没有实证支持却下了结论)。
还有一类结论尤其需要提防,论文里叫 unsupported closure,也就是在证据不够的情况下就把别的可能性一口否掉,比如直接断言"这个递归运算没法用代数方式合并,必须保留原来的实现方式"。六个模型里有五个在这类内容上呈现出同一规律:它出现在"帮倒忙"笔记中的概率,比出现在"真正有用"笔记中的概率高出7到17个百分点。
道理不复杂。一条笔记写着"我试过了,这条路走不通",收到的人多半就信了,不会再去验证,整条探索路径也就此堵死。万一这个判断本身是错的,接收方就白白丢掉了一个本来走得通的方案。
论文里有个案例很能说明问题。GLM-5.3 处理一道涉及递归运算的题目时,CuTe DSL 那边的源头笔记写着"参考实现中的更新操作无法用代数方式折叠,否则会损失数值精度",随后给出结论"保留逐步的 eager 张量运算是必要的"。拿到这份笔记的 TIRx 版本尝试对这个论断照单全收,全程保持逐步循环的写法,从未试过原生实现的递归版本。最后,带笔记的这次尝试比单独尝试慢了 54 倍——单独尝试那边恰好做出了一个折叠后的高效版本。
再看另一类内容,verified reformulation,指笔记里写明"某种算法重写我已经实现并验证过是正确的"。Gemini 3.7 Flash、DeepSeek-V4-Pro、GLM-5.3 这三个模型上,这类内容出现在"有用笔记"里的概率比"帮倒忙笔记"高出7到9个百分点,算是比较靠得住的信号。可到了 GPT-5.6 Sol 身上,情况正好反过来。可见没有哪类内容是处处适用的"万能可靠标志",模型之间的差异是实打实的。
大模型和小模型,踩的坑不一样
论文还做了失败归因分析,追问那些"退步"的案例究竟败在哪一步。分析把原因分成六类,其中有"搜索截断"(照着笔记给的方案走,没去探索目标语言里本来更优的做法)、"未经验证地采信"(笔记里某个论断是错的或没验证过,接收方不测试就直接相信)、"执行出错"(方案本身没问题,写代码时出了 bug)等。
结果分出清晰的层次:DeepSeek-V4-Pro、GLM-5.3、GPT-5.6 Sol 这三个规模更大的模型,出问题的原因里有65%到86%是"被笔记带偏"(搜索截断与未经验证采信两类合计)。而 GLM-5.3-Flash 和 Qwen3.8-Flash 这两个表现相对弱一些的模型,问题主要出在自己的执行环节,占63%到94%。
这个发现有点反直觉:不是模型越弱越容易被笔记误导,反倒是模型越强越容易"听话"。研究者进一步看到,在"退步"案例里,大模型完全照搬笔记方案的比例比"成功"案例低6到16个百分点;小模型这个差距达到24到39个百分点。也就是说,大模型哪怕只采纳一部分笔记建议,也更容易出问题,而笔记被照搬得最彻底的那些情况,往往正是出问题最严重的时候。
好比一个经验丰富的老司机拿到一份不太靠谱的导航提示,他过度信任自己判断路况的能力,忽略了路上的真实状况,照着错误提示一路开下去;换成刚上路的新手司机,本来就手忙脚乱,导航对不对已不是他出事的主因,更可能是自己打方向盘时出了问题。
还有一个隐藏的危险信号:错误经验会"传代"
论文还发现了一个让人略感不安的现象:一次"技能条件化尝试"如果收到了一份未经验证的笔记,它自己最后生成的新笔记,往往会把那条未经验证的论断原封不动抄一遍,再传给下一轮。
数据显示,这种"错误传播"在退步案例里出现的比例是17%到68%,成功案例里只有5%到32%。一条站不住脚的结论一旦混进笔记系统,不会自动被下一轮使用者纠正,反而有相当大的概率被原样复制、继续往下传。
这就像谣言在群聊里被转发,每次转发都带着"听说""据说"的前缀,可传到最后一个读者手里时,这些限定词早就被省掉了,谣言成了"事实"。知识库系统要是没有纠错机制,攒下来的不只是有用的经验,也可能是层层加码的错误共识。
这件事到底说明了什么
论文没有给出"知识转移是好的"或"知识转移是坏的"这种简单答案,它给出的结论更细,也更有价值:
知识转移的效果,取决于转移出去的东西相对于接收方自身水平的高低,而不取决于这份经验本身听起来有多"正确"、多"自信"。
对正在搭建 AI 智能体长期记忆系统的人来说,这是个值得警惕的信号。现在不少团队都在做类似的事,让 AI 系统把经验存进知识库,下次直接调用。论文提醒的是,存起来的经验并非越多越好,也不是越"确信"越好,一份语气笃定、把各种可能性都排除掉的笔记,反而比一份谦虚地留着开放问题的笔记更危险。
写在后面
读完这篇论文,我印象最深的不是那堆百分比,而是那个"相对位置"的发现。
平时谈知识传承,我们习惯假设经验的价值是绝对的,好经验传给谁都该是好经验。这篇论文用实证说明,一份经验算不算"好经验",从来要看接收方是谁、接收方自己能达到什么水平。这跟教育领域一个老掉牙却常被忽视的道理是一回事:同样的教学内容,因材施教和一刀切,效果可能天差地别。
另一个让我反复回想的细节,是"大模型反而更容易被笔记带偏"。这跟"更聪明的系统应该更有判断力"的朴素期待相矛盾。或许更准确的理解是,大模型的"听话"能力太强,能更精准地理解并执行笔记里的指示,可这种执行力本身不含质疑能力。听得懂和会判断,是两件完全不同的事。
论文里提到“错误经验会传代”,这个发现让我又往下想了几层。一套AI智能体系统要是跑上成百上千轮,每一轮都把上一轮的一些错误结论悄悄接过来,它的知识库最后会成什么模样?是越滚越聪明,还是在某个角落里悄悄攒下一堆没人察觉的历史包袱?论文这次只测了一轮转移。换成十轮、一百轮的链式传递,错误会被不断稀释,还是反过来被不断巩固、变成某种“系统共识”?论文没有回答这个问题,但我觉得值得继续追问。
Q&A
Q1:MetaKernelBench是什么?西湖大学团队提出的这套评测体系,就是用来测AI模型用一种GPU编程语言写内核时攒下的经验,能不能搬到另一种语言里、帮着解决同一个问题。它涵盖74个真实计算任务,跨CuTe DSL和TIRx两种语言。
Q2:技能笔记转移是不是一定能让AI写得更好?不一定。实验里六个模型,有的在两个方向上都拿到了正收益,可也有模型出现负收益。而且每个模型都有16%到45%的问题属于“带着笔记反而更差”的退步情况,效果完全看具体情况。
Q3:技能笔记管不管用,关键因素是什么?关键不在笔记来源的那次尝试本身成没成功,而在于它跟接收方自己单独尝试能达到的水平比,是高还是低。源头水平更高时,71.2%的转移有效;源头水平更低时,53.8%会出现退步。