Hawk:利用硬件感知知识实现高性能NPU内核生成
摘要
Hawk是一个无需训练的框架,通过利用硬件感知知识来提升大语言模型在NPU内核生成上的表现,将生成准确率从49.4%提升至80.0%,并相比当前最优基线实现最高2.2倍的执行加速。
arXiv:2607.01590v1 公告类型:新
摘要:为神经处理单元(NPU)开发高性能内核是行业的关键瓶颈,要求开发者手动应对隐式硬件约束和严格的内存层次结构。尽管大语言模型具有巨大的自动化潜力,但由于从根本上缺乏硬件特定的先验知识,它们在NPU上表现糟糕。简单地从类似NPU内核中移植代码片段可能通过编译器,但盲目违反底层硬件约束会持续引发运行时崩溃和性能下降。为解决此问题,我们提出了Hawk,一个无需训练的框架,通过三个核心模块利用硬件感知知识:(1)运行时知识合成模块,采用三部分可执行知识表示,将错误上下文与可执行语义固有地耦合在一起;(2)瓶颈感知知识检索模块,实现二维检索范式,将查询投影到正交的句法空间和硬件对齐的语义空间;(3)效果驱动知识蒸馏模块,利用大语言模型驱动的语义仲裁,基于经验执行反馈通过剪枝错误和合并冗余来持续蒸馏知识。在真实NPU工作负载上的广泛评估表明,Hawk将生成准确率从49.4%提升至80.0%,同时相比当前最优基线实现最高2.2倍的执行加速。
查看缓存全文
缓存时间: 2026/07/03 05:44
# Hawk:利用硬件感知知识生成高性能NPU内核 来源:https://arxiv.org/html/2607.01590 温俊毅¹,庄瑞言²,徐永嘉¹,李鹏图¹,邹瑞¹,陈弘毅¹,万景文¹,杨普旭¹,陈武辉¹³,王延林¹ ###### 摘要 为神经网络处理器(NPU)开发高性能内核是一个关键的行业瓶颈,要求开发者手动处理隐式硬件约束和严格的存储层次。虽然大语言模型提供了巨大的自动化潜力,但由于根本缺乏硬件特定的先验知识,它们在NPU上效果极差。天真地从类似NPU内核移植代码片段可能通过编译,但总是因为盲目违反底层硬件约束而引发运行时崩溃和性能下降。为了解决这一问题,我们提出**Hawk**,一个无需训练的框架,通过三个核心模块利用硬件感知知识:(1)**运行时知识合成模块**,采用**三部分可执行知识表示**,将错误上下文与可执行语义内在地耦合;(2)**瓶颈感知知识检索模块**,实现**二维检索**范式,将查询投影到正交的语法和硬件对齐语义空间;(3)**效果驱动知识蒸馏模块**,利用**大语言模型驱动的语义仲裁**,基于经验性执行反馈,通过剪枝错误和合并冗余来持续蒸馏知识。在实际NPU工作负载上的大量评估表明,Hawk将生成准确率从49.4%提升到80.0%,同时相比现有先进基线实现了高达2.2倍的执行加速。 ## I 引言 像神经网络处理器(NPU)这样的领域特定加速器对现代人工智能工作负载至关重要,但通过大语言模型[31]、[25]、[33]、[1]自动化NPU内核生成仍然异常困难。我们的实证研究(§III)显示,最先进的大语言模型在NPU上仅达到13.3%的Comp@1(编译成功率)和13.3%的Pass@1(功能正确率),与GPU生成(100% Comp@1,80% Pass@1)形成鲜明对比。我们发现超过75%的失败源于底层硬件特定的误用(例如无效的API调用和内存布局不匹配)。此外,即使在相同理论计算能力下,功能正确的NPU内核的执行速度也比其GPU等效内核慢近20倍。 近期改善NPU内核生成的尝试通常分为两类:模型训练(例如领域自适应微调[4]和RL引导[39])以及中间表示(IR)辅助(例如轻量级DSL[27]和多面体编译器[38])。然而,两者都面临严重的可扩展性瓶颈。在模型中心的方法中,API更新[21]、[20]会导致分布偏移,使现有数据集失效,需要数千个新的专家标记样本和资源密集型的重新训练[12]、[13]、[29]。相反,在IR中心的方法中,即使是对代码库进行适度的扩展,也需要专家花费数月时间手动重写语法规则[34]、[40]、[24]、[17]。 为了绕过这些可扩展性瓶颈,我们探索了一种高度可扩展的替代方案:利用现有NPU内核之间的功能相似性。我们的分析(§III)显示,开源NPU内核的代码相似度高达70%,表明知识迁移具有巨大潜力。然而,天真的代码移植[19]是不稳定的;仅凭功能相似性无法捕获底层的硬件感知知识。忽略此类知识常常导致运行时崩溃和严重性能下降,尽管编译成功。 为此,我们提出Hawk,一个基于大语言模型的框架,利用**硬件感知知识**生成高性能NPU内核。基于上下文学习理论[30]、[14],Hawk维护一个经过精选的现有NPU内核知识库。通过动态检索相关知识,它引导大语言模型避免编译和性能陷阱。然而,实现该框架需要解决三个基本挑战: **挑战1:异质知识结构化。** 代码片段缺乏关键的优化原理和硬件约束。有效的硬件感知知识本质上涵盖自然语言策略、伪代码和可执行实现。将它们直接拼接会耗尽大语言模型的上下文窗口并稀释关键信号,而强制统一格式则会破坏语法精度。挑战在于组织这种异质知识,以保留语义丰富性和语法保真度。 **挑战2:硬件感知知识检索。** 天真的检索依赖功能或文本代码相似性,这对NPU内核而言根本不足。两个执行相同数学运算的内核可能由于不同的内存布局、张量形状或硬件限制而需要完全不同的硬件实现。挑战在于设计一种检索机制,超越表面上的代码相似性,准确捕获和匹配深层硬件感知约束。 **挑战3:上下文感知知识维护。** 随着时间的推移,知识库不可避免地积累错误和冗余条目。错误的知识会直接误导大语言模型生成无效或崩溃的内核。冗余的条目会浪费宝贵上下文窗口预算,使大语言模型陷入重复获取相同策略的循环。挑战在于基于经验性执行反馈自动识别和修剪这些低质量知识,同时不破坏有效的上下文依赖。 Hawk包含以下三个核心模块: **运行时知识合成(解决C1)。** 为了在不耗尽令牌的情况下实现这种合成,该模块引入了三部分可执行知识表示。不是将原始手册和代码扁平拼接,我们将NPU领域知识分解为严格的信息层次:(1)**索引触发器**(例如运算符类型或数据类型)用于快速上下文定位;(2)**语义原理**(例如关于NPU统一缓冲区限制或分块策略的自然语言规则)用于解释底层硬件约束以及如何应用知识;(3)**精确语法模板**(例如已验证的API代码片段)用于可执行部署。关键的是,知识在运行时动态捕获:每当代理在内核生成过程中遇到预定义的触发条件时,它会系统地将新发现的信息形式化为这种精确的三部分格式,确保知识库持续进化。 **瓶颈感知知识检索(解决C2)。** 为了克服天真相似性的局限,该模块实现了一种二维检索范式。超越表面症状匹配的文本检索,Hawk动态地将查询投影到两个正交维度:一个确保精确API签名合规性的语法空间,以及一个捕获深层内存和并行化约束的硬件对齐语义空间。通过融合这些维度,该模块精确地隔离出可操作的、根因优化策略,而不仅仅获取功能相似的代码片段。 **效果驱动知识蒸馏(解决C3)。** 为了维护高纯度语料库,该模块采用大语言模型驱动的语义仲裁。不是依赖静态启发式过滤,它主动利用物理NPU编译和执行反馈来持续验证条目。它系统性地清除污染上下文的错误并修剪功能冗余的模式,确保代理仅由经验验证的高效用硬件约束引导。 我们的主要贡献包括: - •我们系统性地证明,缺乏隐式硬件感知知识是大语言模型生成高性能NPU内核的根本瓶颈。 - •我们提出**Hawk**,一个无需训练的框架,通过利用硬件感知知识生成高性能NPU内核。通过协调运行时知识合成、瓶颈感知检索和效果驱动蒸馏,Hawk在不进行昂贵的模型微调的情况下强制执行NPU内核生成。 - •在实际的昇腾NPU工作负载上的大量评估证明,与现有先进工作相比,Hawk将准确率从49.4%提升到80.0%,并实现了高达2.2倍的执行加速。 ## II 背景与相关工作 参见图1:昇腾NPU架构。本部分通过介绍NPU架构、其编程模型以及当前大语言模型生成的局限性,为Hawk提供背景。 ### II-A NPU架构 如图1所示,NPU采用异构计算架构[11]、[10],旨在高效加速人工智能工作负载。其复杂性和高性能源于三个紧密耦合的硬件设计: **计算单元。** 计算核心包含两个专用单元:**AI Cube**,针对密集矩阵乘法优化(在一个执行周期内完成整个M×K和K×N矩阵乘法);**AI Vector**,专门用于逐元素操作(例如ReLU、池化)。 **内存层次与数据移动。** 昇腾具有多层内存层次(全局内存、L1、统一缓冲区和L0),完全对外公开,要求开发者显式管理数据分配。数据迁移[35]、[26]跨这些层次由多个内存传输引擎(MTE)协调。单个MTE内的操作是顺序的,而不同MTE之间可以并行,需要精细协调以最大化带宽。 **显式指令流水线。** 为了将计算与内存访问重叠,昇腾将任务封装为指令调度到独立队列(标量、向量、Cube和MTE)。虽然队列内指令顺序执行,但跨队列指令并发执行。这为NPU实现了细粒度并行。 ### II-B 基于大语言模型的内核生成 基于大语言模型的内核生成的最新进展面临领域适应成本与工程灵活性之间的基本权衡。它们可以大致分为微调方法和无需训练、IR辅助的框架。 **微调方法。** 大量工作利用监督微调(SFT)和强化学习(RL)将大语言模型专门用于GPU内核。例如,CUDA Agent[7]和Kevin[3]构建了算法描述与CUDA实现配对的大规模数据集用于SFT。为了进一步使模型与硬件执行对齐,CUDA-L1[18]和KernelBlaster[9]利用自动化编译器反馈和性能分析指标作为奖励信号驱动RL优化。最近的文献将这种参数更新范式适应到NPU:AscendKernelGen[4]在专有的昇腾C语料库上微调基础模型,而EvoKernel[39]通过RL采用进化算法发现有效的内核变体。虽然有效,但微调面临严重的可扩展性瓶颈:不断演进的硬件和昇腾工具链需要昂贵的数据集重建和资源密集型的再训练,以防止性能下降。相反,Hawk可以即时适应。只需将新的专业知识附加到其外部知识库,Hawk就能无缝整合硬件更新,同时完全绕过再训练大语言模型的巨大开销。 **无需训练与IR辅助框架。** 为了避免持续的再训练开销,另一条研究路线集中于多智能体系统(MAS)和中间表示(IR)。对于像GPU这样成熟的生态系统,框架如STARK[8]和CudaForge[37]编排开发者和评估者智能体,利用原始AST解析和执行驱动的自我反思来迭代优化CUDA代码。类似地,AVO[5]集成外部存储器来跟踪历史优化轨迹。然而,这些纯多智能体系统本质假设底层大语言模型对目标语言具有深度预训练先验知识。因此,它们在NPU上完全失效(§III),因为依赖的大语言模型缺乏基本的NPU编码知识。 表I:在两个平台和两个模型上的15个激活算子的add-shot策略结果。 为了弥合这种能力差距而无需微调,专注于NPU的系统历史上求助于IR或领域特定语言(DSL)。例如,AKG[38]依赖多面体模型进行自动调度,而AscendCraft[27]构建了将高级Python逻辑映射到低级昇腾C API的转换器。虽然有效,但以IR为中心的流水线需要高昂的人工工程成本:即使是微小的API更新,也迫使专家重写语法、转换器和AST规则。Hawk不是硬编码脆弱的编译器逻辑,而是利用硬件感知知识,干净地绕过了复杂的编译器工程,将大语言模型智能体的灵活性与严格的领域知识结合起来。 ## III 动机 本部分揭示了在NPU内核生成(通常用昇腾C编写)中大语言模型的根本局限性,以及天真知识迁移的不足,这促使我们设计Hawk,我们的硬件感知知识利用框架。 ### III-A 大语言模型在NPU内核生成中的发现 **发现1。** 尽管在CUDA代码生成方面表现出色,但现有最先进的大语言模型在昇腾C内核生成方面表现挣扎。 表II:126个失败的分类。 | 错误类型 | 数量 | 层级 | 比例 | |---------|------|------|------| | 不存在的函数 | 27 | 语法 | - | | 不正确的类型名 | 5 | 语法 | - | | 主机端API误用 | 12 | 语法 | - | | 代码格式 | 1 | 语法 | - | | 运行时超时 | 53 | 语法 | - | | **语法级小计** | **98** | **语法** | **77.8%** | | UB溢出 | 26 | 硬件 | - | | **硬件级小计** | **26** | **硬件** | **20.6%** | | 正确性不匹配 | 2 | 数值 | - | | **数值级小计** | **2** | **数值** | **1.6%** |
相似文章
面向AMD GPU的更好HIP内核生成:合成数据、多智能体搜索与强化学习
探讨了合成数据生成、多智能体优化和强化学习,以提高语言模型为AMD GPU生成高性能HIP内核的能力,并在MI350X上展示了编译率和正确率的提升。
AdaExplore:基于失败驱动的自适应与多样性保留搜索的高效内核生成
来自卡内基梅隆大学、华盛顿大学和Arm的研究人员提出了AdaExplore,这是一种用于GPU内核代码生成的LLM智能体框架。该框架通过失败驱动自适应与多样性保留搜索技术,在不进行额外微调的情况下,在KernelBench Level-2和Level-3基准测试中分别实现了3.12倍和1.72倍的加速。
一个可定制的编译器,用于为AI模型生成高效的融合GPU内核 [P]
作者介绍了一款用 Python 编写、高度可定制且易于修改的 ML 编译器。该编译器通过多级 IR 流水线将 LLMs 转换为优化的 CUDA 内核,在特定操作上实现了与 PyTorch 相当甚至更优的性能。文章详细阐述了该编译器的优化过程、降级规则以及用于生成高效融合 GPU 内核的 CLI 用法。
KForge:面向AI加速器的LLM驱动跨平台内核生成
KForge是一个跨平台框架,利用两个协作的基于LLM的智能体,自动生成和优化适用于多种AI加速器的高性能计算内核,在NVIDIA B200和Intel Arc B580硬件上实现了显著的加速效果。
AccelOpt:一种用于AI加速器内核优化的自我改进LLM智能体系统
AccelOpt是一种自我改进的LLM智能体系统,通过迭代生成和优化记忆自主优化AI加速器内核,在AWS Trainium上实现了49%至61%的峰值吞吐量提升,同时比Claude Sonnet 4便宜26倍。