LLM 智能体写 GPU 内核已经不是新鲜事——KernelBench、MultiKernelBench、FastKernels 等基准已经能比正确率、比加速比。但 D2K-Bench 这套新基准指向了一个更精细的问题:智能体跟专家核的差距,究竟差在"没找到好的设计",还是"找到了但写不出来"?阿里、HKUST、中科大联合团队的解法是,把专家设计拆成 L1 / L2 / L3 三层指引喂给模型,然后看性能差消失多少。

26 个任务、130 对模型-任务配对

D2K-Bench 选了 26 个 GPU 内核任务、85 个 workload,涵盖 attention、mixture-of-experts、量化等 LLM 训练推理常见算子,实现语言统一用 Triton。任务是从 vLLM、SGLang、FlashAttention 这类系统的真实代码里抠出来的,每个任务配一份专家级 Triton/CUDA/CUTLASS 参考实现。基准跑在 NVIDIA B200 上,每个任务给智能体 350 个 turn 的预算,允许反复编译、profile、迭代。

五款参评模型:GPT-6-Astra、Claude-Opus-4.8、GPT-5.6-Sol、GLM-5.3、Kimi-K3。每个模型跑两轮:一轮只给任务描述,一轮额外加三层专家设计指引,其它条件完全一致——同任务、同 workload、同工具、同硬件、同预算。这样的配对设计,就是为了把"设计发现"和"代码实现"两个变量干净地切开。

三层指引从算法一直拆到 warp 调度

指引按依赖关系分三层。L1 是高层算法洞察,告诉模型用什么算法变换、为什么能算得更省;L2 是数据流设计,说清楚每个变量放哪、生命周期多久、哪些中间量能复用;L3 是低层优化技巧,讲 GPU 执行机制怎么落地——流水线怎么叠、warp 怎么分工、哪些同步必须先做。指引只讲设计思路,不附源代码,也不给具体调参常数。

论文以 Muon 正交化核作为示例:L1 提示可以把多次"大方阵更新"压缩成"小方阵组合再做大乘法",L2 提示让方阵状态在段内常驻、矩形矩阵只在边界落地,L3 提示要求对称乘积只算一次三角块、对角块只写一次。配对实验下,GPT-6-Astra 的 Performance Score 从无指引时的 2.68 升到 2.33 的专家基线还差一截的 3.33(满 26 题都正确)。

几何加速比 1.69× → 2.49×

结果分四块。

正确率:130 对模型-任务里,引入指引后整体正确率从 93.1% 升到 98.5%,5 个模型里 GLM-5.3、Kimi-K3 在 26 题里多对了 4 道;GPT-6-Astra、Claude-Opus-4.8、GPT-5.6-Sol 在无指引下就已经 26 题全对,指引主要推的是性能不是正确性。

性能分:五模型 Performance Score(几何平均,基线 PyTorch = 0.056)从无指引 1.46 升到有指引 1.95,相对涨 33.9%。三款 26 题全对的模型,几何平均加速比从 1.69× 升到 2.49×,单模型最大提升是 GPT-6-Astra 从 2.68× 升到 3.33×,逼近专家核自身的 2.33×。看起来指引把模型从"接近基线"推到了"接近专家"区间。

设计与实现的拆解:论文还做了一个有意思的实验——让模型在另一轮里只写设计、不写代码,跑 LLM-as-a-judge 看它能不能自己写出合格的 L1/L2/L3 思路。GPT-6-Astra、Claude-Opus-4.8、GPT-5.6-Sol 三款拿到 70 分上下,GLM-5.3、Kimi-K3 落在 60 分区间。配合上"代码实现的判官分",两者的排序基本一致,但分差比性能分更大——说明专家指引的真正价值,不在于让模型"想到"更好的设计,而在于让它"写对"原本想不到的复杂实现。

层级叠加效应:对三款全对模型拆 L1 / L1+L2 / L1+L2+L3 三档指引累加,每一档都涨性能。GPT-6-Astra 的大头收益来自 L1,说明它本身算法设计能力不弱,缺的是顶层算法选择;Claude-Opus-4.8 和 GPT-5.6-Sol 则是 L3 收尾更多,说明它们更缺 warp / 流水线层面的执行机制知识。

还差多少

指引把分推到了 1.95,但专家基线是 2.33。三款前沿模型即便在指引下,代码实现分也只到 70 出头(满分 100)。也就是说,即便你把设计思路明明白白告诉它,L1/L2/L3 三个层面的若干属性仍然没被写进代码——边界同步、状态常驻、专用化 warp 这些细节,光看指引还摸不到手。

另一层限制是指引本身来自专家代码的"反向解读",而实际工程里能掏到的指引颗粒度未必有这么细。但 D2K-Bench 给出的结论是清晰的:GPU 内核 agent 的瓶颈不在"想法",而在"动手"。把设计文档变成可执行 kernel 这段,大模型还远不如一个会读文档的人类工程师。

代码与数据已开源,GitHub: QwenLM/D2K-Bench。