CANN Bench:在真实NPU与算法极限下对智能体生成的内核进行基准测试
摘要
CANN Bench是一个开放基准测试,用于评估在华为Ascend NPU上由AI生成的算子内核,涵盖53个运算符和1060个测试用例,覆盖多种精度格式和难度等级。
arXiv:2607.20518v1 公告类型:新
摘要:AI智能体现在能够在不同硬件平台上编写、编译并迭代优化底层算子内核。然而,现有基准测试几乎完全集中在CUDA和Triton上,使得编程模型暴露较少的硬件生态系统缺乏共同的评估基线。我们提出CANN Bench,一个针对华为Ascend NPU上AI生成的算子代码的开放基准测试。当前版本涵盖53个运算符和1060个测试用例,分为四个难度等级——从简单的逐元素原语到MoE调度和FlashAttention内核——覆盖FP16、BF16、FP32和INT8精度格式。评估采用\textbf{三维加权综合得分},将编译、功能正确性和性能视为独立维度,为内核生成智能体提供合理的奖励信号。性能评分基于开箱即用的PyTorch-on-Ascend基线和真实NPU硬件上每个案例的分析性硬件锚定性能(HAP)极限,确保得分反映真实的优化空间而非测量伪影。评估框架从底层设计上抵制奖励破解。CANN Bench在官方CANN仓库中进行版本管理,并设计用于长期社区共建,为Ascend生态系统提供量化、可重复且可持续维护的AI算子编写能力衡量标准。
查看缓存全文
缓存时间: 2026/07/24 05:04
# 在真实NPU与算法极限下对智能体生成算子的基准测试 ## 基准测试智能体生成的算子是否达到真实NPU与算法极限 来源:https://arxiv.org/html/2607.20518 薛健高*、邓攀*、苏跃明*、李嘉晟、杜斌、朱凤鸣、马成迪、范俊逸、廖启辰、胡成秋、陈心弦、郑凌超、李俊、杨继伟、范宇伟# ## 华为 ###### 摘要 AI智能体现在能够针对不同硬件平台编写、编译并迭代优化底层算子内核。然而,现有的基准测试几乎只关注CUDA和Triton,使得那些编程模型不那么开放的硬件生态系统缺乏统一的评估基线。我们提出了**CANN Bench**,一个针对华为昇腾NPU上AI生成算子代码的开放基准测试。当前版本涵盖了**53个算子**和**1060个测试用例**,分为四个难度等级——从简单的逐元素原语到MoE分发和FlashAttention内核——覆盖FP16、BF16、FP32和INT8精度格式。评估采用**三维加权复合评分**,将编译、功能正确性和性能视为独立维度,为内核生成智能体提供原则性的奖励信号。性能评分基于开箱即用的PyTorch-on-Ascend基线以及针对每个案例分析得出的硬件锚定性能(HAP)极限(在真实NPU硬件上),确保分数反映真实的优化空间而非测量伪像。评估框架从根本上设计为抵抗奖励篡改。CANN Bench在官方CANN仓库中进行版本管理,旨在实现长期的社区共建,为昇腾生态系统提供一个量化、可复现且可持续维护的AI算子编写能力衡量标准。 **脚注:** 这些作者贡献相同:薛健高、邓攀、苏跃明 **脚注:** 通讯作者:[email protected] *关键词*:基准测试 · 昇腾NPU · CANN · 算子生成 · 大语言模型智能体 ## 1 引言 ### 1.1 为何现在需要一个面向昇腾的基准测试 代码生成智能体现在能够端到端地编写、编译和分析算子内核[6, 23, 12, 1, 27],它们所针对的基准测试提供了驱动下一轮优化的执行反馈信号[3, 18, 8, 15]。在华为昇腾NPU上,算子生成通过CANN——华为的异构计算架构,它连接上层AI框架与底层昇腾处理器——进行。在CANN下编写算子需要显式控制内存层次结构、分块形状和向量-立方体流水线调度,其编程界面类似于NVIDIA GPU架构上的CUDA。最近的基准测试开始包含昇腾目标[28, 4, 29, 30, 31, 14],但它们要么将昇腾视为众多平台之一,要么与特定的智能体训练方案耦合。因此,昇腾生态系统仍然缺乏一个用于AI生成的CANN算子的共享评估尺度——该尺度独立于任何单一训练方案,并作为跨项目参考进行维护。 必须支持的算子目录仍在不断扩展。每个新的模型系列都会引入新的注意力变体和MoE路由模式,这些都需要在CANN下为昇腾重新进行分块和调度。精度进一步加剧了增长:现代流水线将FP16和BF16与低精度格式(如FP8和MXFP4[22, 26])混合使用,每种格式具有不同的粒度和性能权衡。工作负载的变动和精度的增长共同将算子目录推到了手工编写的算子难以跟上的地步。因此,面向昇腾的基准测试需要随硬件和软件栈一起演变,而不是在发布时固定不变。下面我们定义了这样一个基准测试的六个设计标准。 ### 1.2 面向昇腾基准测试的六个标准 我们将六个标准分为两层。前四个涉及任务集;后两个涉及基准测试的交付和维护。 **C1. 难度跨度。** 任务集必须覆盖完整的难度范围,从逐元素和归约原语,到计算密集型核心(如卷积和矩阵乘法),再到融合级算子(如MoE分发和Flash Attention)。如果没有这个范围,分数会聚集在简单或纯融合极端,无法区分能力层次。 **C2. 工作负载来源。** 任务来自真实的昇腾生产工作负载——大语言模型训练、量化推理以及视觉/多模态流水线——而不是来自故障模式无法迁移的合成案例。 **C3. 精度和量化覆盖。** FP16和BF16是基线。量化整数路径(INT8,具有逐张量和逐通道粒度)在生产中的CANN下同样重要,而更低精度的浮点格式如FP8、HiF8、MXFP8、FP4和MXFP4[22, 26]已列入近期路线图(§1.6)。 **C4. 三维评估。** 编译、功能正确性以及昇腾NPU上的性能都对最终加权分数有贡献;在任一维度上失败都会严格限制提交在其余维度上能获得的分数。 **C5. 自包含的可复现工具包。** 每个算子都附带规格说明、黄金实现、公开测试用例和性能基线,以便第三方可以复现评估。 **C6. 抗奖励篡改与持续演进。** 评估框架必须能够检测奖励篡改尝试,例如绕过精度断言、记忆输出或硬编码形状。任务集和评估协议还必须随昇腾硬件、CANN版本和模型系列一同演进,而不是在发布时固定不变。 ### 1.3 现有工作符合这些标准的情况 对照§1.2中的标准,现有基准测试仅覆盖了设计空间的部分子集。我们按目标硬件对最相近的先前工作进行分组,并在表1中总结其位置。CUDA和Triton生态系统拥有最大的算子生成基准测试集合。KernelBench[21]将评估分解为编译、正确性和加速比,涵盖250个PyTorch到CUDA的任务。TritonBench[16]对184个真实世界的Triton算子应用了类似的三维设置,其中DSL概念幻觉是主要的失败模式。SOL-ExecBench[17]将性能锚定到NVIDIA Blackwell硬件的速度光极限,并添加了沙箱化的计时框架。这三个都针对NVIDIA平台。它们的任务集不能直接迁移到昇腾:CANN暴露了不同的分块语义和不同的多级缓冲区结构,因此机械移植会违反C2(工作负载来源)。 同样的不可迁移性出现在其他NPU栈上。NPUEval[13]评估了前沿大语言模型在102个AMD NPU算子任务上的表现,平均向量化得分约为10%。KernelCraft[20]研究了跨PLENA、AMD NPU和Coral NPU指令集架构(ISA)的33个任务的近金属算子生成。两者都不针对CANN或昇腾。 有两个基准测试更直接地针对昇腾生态系统,但都不能完全满足我们的六个标准。MultiKernelBench[28]涵盖了285个任务,跨越14个算子类别和三个硬件平台——NVIDIA GPU、华为昇腾NPU和Google TPU——使用作者提供的参考和类别感知的少样本提示方案。广度牺牲了每个平台的深度:昇腾任务只是总体的一部分,因此每个算子的规格说明深度有限(部分满足C5),并且昇腾精度覆盖范围狭窄(部分满足C3)。NPUKernelBench与AscendKernelGen微调方案[4]一同发布,涵盖三个难度等级的昇腾任务;AscendKernelGen报告称,通过思维链数据加上来自设备端执行反馈的强化学习,Level-2编译率从0%提升到95.5% Pass@10。两个局限性削弱了其作为共享参考的作用。首先,在构成NPUKernelBench相当大一部分的静态形状轨道上,给定任务的所有测试用例都对应于一个单一固定输入配置[4],因此专门针对一个规范形状的内核已经可以通过每个任务评估。其次,该基准测试是与AscendKernelGen方案一同发布和演进的,而不是在独立维护轨道上,因此其任务集跟踪的是一个训练管线的节奏,而不是更广泛的昇腾生态系统(部分满足C6)。 现在有几种算子生成方法直接针对CANN。AscendCraft[29]通过约束导向的中间表示应用DSL引导的传输编译。AscendOptimizer[30]在来自`cann-ops`仓库的127个算子上运行一个带有优化回退的阶段性进化智能体,并报告了1.19倍的几何平均加速。EvoKernel[31]通过价值驱动内存解决冷启动和持续细化问题;在一个自构建的NPU变种KernelBench上,它将前沿模型的正确率从11%提升到83%。KernelCAT[14]报告了在昇腾910B2上FlashAttention和DeepSeek-OCR-2的部署端增益。这些工作中的每一个都使用了跨平台基准测试、自定义任务集或作者选择的算子集合,因此它们仍然缺乏一个共同的评估尺度。 C6(抗奖励篡改与持续演进)有一个具体的先例。KernelBench在实践中记录了静默分发利用:提交的代码调用高级算子(如cuBLAS)来代替生成的CUDA内核,或者无操作内核,其输出内存从参考张量中重用[25, 7, 24]。表1将上述基准测试沿五个轴定位:黄金参考来源、评分格式、泛化规范、抗奖励篡改立场和维护模式。在公开描述的昇腾NPU基准测试中,我们没有看到另一个将官方CANN仓库中的共同定位、与供应商算子合约并行的维护以及专用排行榜协议结合起来的基准测试;CANN Bench旨在覆盖这三者。 **表1:昇腾生态系统算子生成基准测试:CANN Bench与针对昇腾NPU的相关基准测试的定位。** 针对其他ISA(KernelBench、TritonBench、SOL-ExecBench、KernelCraft、NPUEval)的基准测试未直接比较。列报告了黄金参考的来源、性能分数组成、测试用例泛化规范、抗奖励篡改立场和维护模式;“—”表示给定基准测试未记录的属性。 ### 1.4 CANN Bench:数据集、评分与在线排行榜 CANN Bench是一个算子生成基准测试,维护在官方CANN仓库中。其规格说明、黄金实现、测试用例和性能基线位于华为供应商维护的算子合约旁边(C2, C5)。初始版本针对昇腾910B2,采用与算子DSL无关的规格说明格式,设计为在未来版本中扩展到Triton、PyPTO、TileLang以及其他CANN兼容范式。 #### 数据集。 CANN Bench目前包含53个算子和1060个测试用例,分布在四个难度级别(L1–L4)上,分别为8/16/21/8个,这四个级别跟踪昇腾硬件单元的使用情况,从L1的纯向量内核到L4的融合矩阵-向量流水线。§2列出了代表性算子、每个级别的完整细分以及四个每个算子的可复现性工件(desc.md、proto.yaml、cases.csv、golden.py)。 #### 公开与隐藏用例拆分。 每个算子的用例拆分为20个公开用例(用于本地迭代)和80个隐藏用例(由评估框架保留用于排行榜评估)。排行榜汇总两个拆分,因此隐藏集可以防止仅针对已公开输入进行拟合。 #### 三维加权评分。 编译在算子级别进行评估,而功能正确性和性能则在每个用例上评分;三个信号组合成每个算子的加权复合得分(§3.3), `EachOperatorScore = [w_c · δ_pass + Σ_{i∈cases} δ_accuracy,i (w_f + w_p · score_i) / num_of_cases] · 100` 其中δ_pass ∈ {0,1} 是算子级别的编译标志(编译失败的内核会使所有项归零),δ_accuracy,i ∈ {0,1} 是每个用例的功能指示器,score_i 是每个用例的性能子分数,而 w_c、w_f、w_p 是线性权重(默认 w_c=0.2, w_f=0.3, w_p=0.5)。性能子分数是HAP分数:它在PyTorch-on-Ascend基线 T_baseline,i 和分析得出的每个用例硬件锚定性能(HAP)极限 T_HW,i(§3.2,§3.3)之间,对候选内核的实测运行时间 T_cand,i 进行评分。 #### 精度范围。 当前版本涵盖FP16、BF16、FP32以及量化整数路径(特别是用于权重量化和激活量化的INT8)。FP8、HiF8、MXFP8、FP4和MXFP4作为计划扩展仍在讨论中,见§1.6。 #### 在线排行榜。 CANN Bench附带一个在线排行榜[注1:门户网站正在准备中,将在未来更新中发布。]。 ### 1.5 工程基础与抗奖励篡改 可靠的评分取决于评估框架。CANN Bench在单个流水线中运行编译、精度验证和性能采样。为了控制NPU路径上的测量噪声,它会执行一次繁重的MatMul++ReduceMax预热,使NPU达到其持续峰值DVFS状态,在计时的运行之间清空L2缓存以消除跨步缓存重用,并通过`torch_npu.profiler`收集内核级别的计时。
相似文章
JAXBench:对自主TPU内核优化进行基准测试
JAXBench是一个新的基准测试套件,包含50个JAX工作负载,用于评估在谷歌云TPU上的AI生成内核优化,提供人工调优基线和智能体评估框架。论文发现,基于精选TPU文档进行条件化处理能显著提升正确性和加速比,其中Autocomp波束搜索在人工调优内核上相比XLA实现了高达1.6倍的几何平均加速。
AgentKernelArena:兼顾泛化能力的GPU内核优化代理基准测试
AgentKernelArena是一个开源基准测试,用于评估AI编码代理在GPU内核优化方面的表现,涵盖完整的代理工作流程以及跨196个任务对未见配置的泛化能力。
TensorBench: 在基于编译器的张量框架上对代码代理进行基准测试
TensorBench 是一个基于编译器的张量框架上的基准测试,包含199个功能添加和重构任务,评估了七个代码代理,其通过率范围从22.1%到64.8%。
ProgramBench(5分钟阅读)
ProgramBench 是一项全新的基准测试,用于评估 AI 智能体在无法获取源代码或反编译工具的情况下,仅凭编译后的二进制文件和文档重建完整软件项目的能力。
@rohanpaul_ai: NVIDIA 刚刚发布了首个代理型 AI 基准测试结果,其中 GB300 NVL72 每兆瓦可运行多达 20 倍以上的编码代理…
NVIDIA 发布了首个代理型 AI 基准测试结果,显示 GB300 NVL72 每兆瓦可运行的编码代理数量比 H200 多出 20 倍,该测试基于 Artificial Analysis 的 AgentPerf 基准。