不通过大模型微调 AscendCraft:基于领域专用语言引导转译的昇腾NPU算子自动生成框架

不通过大模型微调 AscendCraft:基于领域专用语言引导转译的昇腾NPU算子自动生成框架 AscendCraft基于领域专用语言引导转译的昇腾NPU算子自动生成框架arXiv:2601.22760v1 [cs.DC] 2026年1月30日作者温忠振南京大学新型软件技术国家重点实验室邵树迪华为上海软件工程应用技术实验室李众南京大学新型软件技术国家重点实验室葛宇南京大学新型软件技术国家重点实验室徐彤彤华为杭州软件工程应用技术实验室林元一华为杭州软件工程应用技术实验室张田南京大学新型软件技术国家重点实验室摘要深度学习模型的性能高度依赖高效算子实现但面向专用加速器开发高性能算子仍耗时耗力且对开发者专业能力要求极高。现有研究证明大语言模型LLM可生成正确、高性能的GPU算子但针对神经网络处理器NPU的算子生成领域仍缺乏充分探索——根源在于NPU具备领域专属编程模型、公开开发案例稀缺、配套文档匮乏。若直接使用大模型生成昇腾CAscendC算子代码正确率极低充分凸显了GPU与NPU算子自动生成领域存在巨大技术鸿沟。本文提出AscendCraft一套由领域专用语言DSL引导、全自动生成昇腾C算子的方案。该框架设计了一套轻量级DSL在屏蔽底层冗余复杂逻辑的同时显式建模昇腾硬件专属执行语义。整套流程分为两步首先依托对应算子类别的专家示例使用大模型生成DSL描述代码再通过多轮约束驱动的大模型降级转译流程将DSL代码转换为标准昇腾C代码。本文基于MultiKernelBench基准套件覆盖7大类算子完成评测AscendCraft算子编译成功率达98.1%功能正确率90.4%其中46.2%生成算子性能持平或超越PyTorch eager模式基线证明DSL引导转译方案可让大模型产出兼具正确性与性能竞争力的NPU算子。除基准测试外本文进一步验证了框架通用性针对全新mHC架构的两类算子AscendCraft均可生成正确实现且性能大幅优于PyTorch eager执行模式。关键词大语言模型昇腾深度学习算子1 引言深度学习模型的性能由底层算子执行效率决定。开发高性能算子需要开发者深度理解硬件架构、存储层级与底层优化手段整个过程人力成本极高针对专用AI加速器开发算子的难度尤为突出——高性能实现需要精细调度数据搬运与片上硬件资源。近年基于大语言模型自动生成算子代码的研究广受关注但现有工作几乎全部聚焦GPU场景。GPU生态具备海量公开代码、完善文档、成熟编程体系因此已有多项工作证实大模型可产出正确、高性能的CUDA/Triton算子。与之形成鲜明对比NPU算子自动生成领域仍存在大量空白。NPU编程模型高度定制化公开开发案例稀少、配套文档零散导致大模型难以充分学习NPU专属语法、执行模型与优化思路。MultiKernelBench基准测试数据显示现有顶尖大模型直接生成昇腾C算子时代码功能正确率不足5%充分证明GPU与NPU算子生成存在难以逾越的技术鸿沟。为解决该问题本文提出AscendCraft——基于DSL引导的昇腾C算子全自动生成框架。框架核心是一套轻量级昇腾专属DSL遵循三大设计原则简洁规整语法DSL采用紧凑、规范的编程结构消除冗余语法强制清晰控制流。大模型可聚焦分块策略、数据流等核心算法设计而非底层语法细节同时生成代码简短、稳定性更强。适度抽象封装刻意屏蔽大幅增加开发负担、但不影响核心算子逻辑表达的硬件细节。例如昇腾C中非对齐内存访问需要冗长的DataCopyPad配置、大量参数这类底层细节全部由DSL封装简化生成流程且不损害代码正确性。硬件定向扩展显式建模昇腾特有执行语义包含片上缓存分配统一缓冲区UB、分阶段执行数据读入CopyIn、计算Compute、数据写出CopyOut、多核并行执行结构保证DSL足以表达高性能NPU算子设计思路。整套方案分为两大阶段阶段一DSL代码生成大模型输出高层DSL程序完整描述算子核心计算逻辑、分块策略、片上数据流。供给大模型的DSL示例均由行业专家编写并按算子类别划分同一类别算子共享计算模式与优化目标示例会编码该类算子通用优化方案与执行逻辑。依托简洁规整的DSL大模型能够学习同类算子的核心设计思路并泛化适配同类别下未见过的算子参数。阶段二DSL转译昇腾C通过多轮结构化、大模型驱动的降级流程将DSL分步转换为昇腾C代码。拆分转换流程为多个定义清晰的子任务降低每一步生成难度提升代码正确性与鲁棒性。转译过程中对昇腾C代码结构施加强约束DSL中每一段CopyIn/Compute/CopyOut代码块都会映射为昇腾C中对应的AI核函数强制固定执行结构杜绝数据搬运与计算逻辑非法交错。本文基于MultiKernelBench、7大类算子开展实验相较于直接用大模型生成昇腾C代码本方案编译成功率与功能正确率大幅提升整体编译通过率98.1%、功能正确率90.4%生成算子性能对标PyTorch eager基线82.7%算子性能达到基线20%以上57.7%达到基线80%46.2%性能持平或超越基线。除基准测试外本文针对全新mHC架构的两类真实算子开展验证AscendCraft单次生成即可产出功能完全正确的实现性能分别是PyTorch eager的6.6倍、3.0倍。开发者基于生成代码搭配大模型辅助迭代调优后最终实现性能分别达到基线的15.9倍、7.2倍。上述结果证明精心设计的DSL搭配结构化约束转译流水线不仅能让大模型可靠生成NPU算子也为新型业务场景下的性能调优提供坚实基础。2 背景与问题动机2.1 昇腾NPU硬件架构昇腾是面向深度学习场景从头设计的专用神经网络处理器。计算单元昇腾核心计算部件为AI核AICore集成三类异构计算单元分别适配不同运算标量单元Scalar负责标量数据处理、程序控制流向量单元Vector执行类SIMD向量运算逐元素计算、归一化、激活、规约操作均在此完成矩阵单元Cube专门处理矩阵运算单次执行即可完成M×K矩阵与K×N矩阵相乘。三类单元可并行工作让昇腾在各类算子场景下保持硬件高利用率。存储层级昇腾采用多层级存储架构全局内存GM、L1缓冲区、统一缓冲区UB、L0缓冲区L0A/L0B/L0C。硬件向软件完整暴露片上存储层级开发者可显式控制数据存放与搬运便于优化数据局部性、提升数据复用率。数据搬运引擎MTE数据传输由专用硬件模块MTE内存传输引擎管理。不同存储层级对应独立MTE单元同一MTE内传输串行执行跨MTE传输可并行最大化带宽利用率。指令流水线昇腾采用显式指令流水线实现计算与数据搬运重叠执行。计算、内存搬运均封装为独立指令下发至标量/向量/Cube/MTE各自执行队列单队列内指令有序执行不同队列指令可并发运行。合理调度即可精细协调计算与数据传输提升整体吞吐。2.2 昇腾CAscendC编程模型昇腾C是基于C、面向昇腾NPU高性能算子开发的流水线编程模型底层开放硬件能力同时提供结构化抽象简化开发。流水线执行模型算子执行拆分为三段逻辑CopyIn全局内存→片上缓存、Compute硬件单元计算、CopyOut片上结果写回全局内存。三段分离设计支持流水线、计算与数据搬运重叠但开发者需要精细协调缓存占用、跨阶段数据依赖。算子执行划分为多个BlockBlock是最小逻辑执行单元启动算子时指定Block数量实现多核并行。同时提供SyncAll等同步原语用于多核间协同。张量与缓存管理GlobalTensor代表全局内存张量作为算子输入输出接口LocalTensor代表片上缓存张量包含UB、L1、L0系列缓存。硬件强制开发者手动管理缓存分配与存放位置UB等片上缓存存在严格硬件约束如32字节对齐、尺寸粒度限制开发者需要反复推导张量形状、分块参数、内存布局大幅提升开发成本。队列与数据依赖管理为协调异构单元的数据搬运与计算昇腾C采用队列机制管理依赖硬件单元完成张量运算后将张量句柄入队后续阶段出队读取数据数据未就绪时自动阻塞。该机制显式表达依赖无需开发者手动同步流水线队列可扩容实现双缓冲等优化但合理使用队列需要精心设计保证执行顺序、最大化计算与传输重叠。算子开发复杂度昇腾C提供完整硬件接口DataCopy搬运接口、Cube矩阵乘Mmad、向量运算Adds等。高性能算子需要开发者跨流水线调度指令、管理缓存复用、对齐硬件队列。尽管昇腾C表达能力强大但编写正确、高性能算子要求开发者精通硬件底层精细协调内存分配、数据搬运与计算逻辑亟需高层抽象与自动生成方案。2.3 基于大模型的算子生成研究现状大语言模型在代码生成、程序综合领域表现优异已有大量工作尝试自动化底层系统开发。现有算子生成研究绝大多数聚焦GPU场景CUDA/Triton算子具备海量开源代码、完善文档、标准化抽象大模型可从中学习分块、共享内存、指令级并行等通用优化思路。NPU算子生成独有挑战严苛硬件约束昇腾C强制内存对齐、多核异构同步开发者必须手动管控内存、搬运、流水线代码容错率极低语料稀缺公开NPU算子代码远少于GPU大模型缺少高质量训练素材直接生成缺陷直接让大模型输出底层NPU代码极易出现语法错误、逻辑幻觉内存使用、同步逻辑、硬件对齐等约束难以满足端到端正确率极低。综上纯端到端大模型直接生成NPU算子的方案无法产出功能正确、性能达标的代码。2.4 研究动机大模型难以直接生成带强硬件约束的底层NPU代码但擅长推理高层算法结构、数据流、分块策略。为弥合高层算子逻辑与底层昇腾C代码的鸿沟现有研究提出引入结构化中间表示/DSL引导大模型生成代码通过约束生成空间、在合适抽象层级编码硬件语义提升代码正确性与可控性。本文遵循该思路设计大模型友好的DSL作为中间层系统化自动生成昇腾C算子。3 领域专用语言DSL定义本文设计一套面向昇腾算子生成的轻量级DSL平衡高层算子意图与底层昇腾C实现兼顾大模型友好性、适度抽象、高性能表达能力。DSL提供硬件感知的结构化表示暴露分块、数据流、片上执行等核心逻辑同时屏蔽无关硬件底层细节。整体结构一段昇腾DSL程序分为两部分Host主机函数、Kernel核函数分别描述主机侧调度逻辑、片上计算逻辑。该架构贴合加速器通用开发范式各模块语义清晰、代码简洁语法风格类似Triton消除冗余模板代码让大模型专注分块、数据流、计算结构等核心算法决策。Host主机函数全局调度规划定义全局执行策略包含核心划分指定硬件核数量、每核负载分配显式描述多核并行结构分块策略将全局张量切分为适配片上UB/L1缓存的小块显式定义所有分块尺寸参数并标注对应内存约束算子启动调用Kernel将分块参数传入片上计算逻辑。Kernel核函数片上执行逻辑描述所有片上行为包含缓存分配、计算流程片上缓存声明使用DSL原生原语显式分配UB/L1临时缓存禁止隐式别名保证数据流、缓存复用逻辑对大模型与转译流程完全透明分阶段执行全局→片上数据搬运必须放在copyin代码块计算逻辑放入compute片上结果写回全局内存放入copyout。支持多段流水线、迭代计算显式分段建模昇腾硬件语义同时结构规整便于大模型生成与解析。DSL内置向量、规约等通用计算原语参数设计与昇腾C API高度对齐保障转译流程稳定可靠。设计思路DSL精准平衡抽象与可控性屏蔽内存对齐、冗长DataCopyPad等底层开发负担同时完整保留决定性能的核心逻辑——片上缓存分配、分阶段流水线、多核并行结构。降低大模型生成代码的歧义支撑无损结构化转译成为生成正确、高效昇腾C算子的高效中间表示。4 方法AscendCraft整体框架AscendCraft分为两大阶段DSL代码生成、多轮转译降级。输入为PyTorch算子逻辑与张量尺寸最终输出可编译、高性能昇腾C算子。4.1 第一阶段DSL代码生成给定算子需求大模型依托DSL规范、同类算子示例生成DSL代码。提示词设计提示词由两部分构成DSL语法规范定义语言语法、Host/Kernel分离、显式缓存分配、三段式执行结构DSL语法简洁仅需简短规范即可让大模型掌握语法生成合法代码算子类别尺寸专属示例示例编码昇腾硬件适配优化方案分块、缓存、数据流匹配目标算子类型与张量形状帮助大模型推导合理执行策略避免不符合硬件特性的设计。DSL抽象的核心价值DSL紧凑且具备完整表达能力覆盖高性能算子必需的存储层级调度、流水线结构。抽象屏蔽底层硬件杂项后大模型仅需聚焦算子算法意图与优化策略仅依靠少量专家示例即可泛化产出高质量DSL代码适配各类算子。4.2 第二阶段DSL转译为昇腾C不一次性生成完整昇腾C代码而是拆分为多轮结构化大模型降级流程每轮仅处理一小部分语义大幅提升在强约束昇腾C编程模型下的代码正确性与鲁棒性。整体分为4轮降级流程前3轮为必需第4轮对齐补全为可选流程1主机侧代码翻译流程2算子初始化逻辑翻译流程3核心计算逻辑翻译流程4内存对齐与填充优化可选每一轮输入提示词包含4部分本轮DSL→昇腾C映射规则、昇腾C接口文档、转换示例、上一轮生成的半成品代码。流程1主机侧翻译将DSL Host函数转换为昇腾C主机代码定义分块数据结构、计算每核负载与分块尺寸、调用昇腾C主机API配置参数最终指定Block数量并启动算子。流程2算子初始化翻译生成算子执行前所有初始化逻辑将主机分块参数拷贝至算子内部变量算子通过GetBlockIdx()获取自身核编号计算分配数据对应的全局内存偏移同时基于DSL缓存注解初始化片上资源数据传输缓存映射为张量队列TQue临时计算缓存映射为张量缓冲区TBuf配置队列容量支持流水线、双缓冲。流程3核心计算翻译DSL强制CopyIn/Compute/CopyOut分段转译时严格保留该结构每段DSL代码对应独立昇腾Caicore内联函数CopyInX/ComputeX/CopyOutX算子主循环Process()依次调用分段函数CopyIn调用DataCopy将全局内存数据搬运至片上缓存写入输入队列Compute从队列取出输入张量通过TBuf访问临时缓存DSL运算映射为昇腾C硬件接口计算结果写入输出队列CopyOut取出结果张量通过DataCopy写回全局内存仅跨核依赖场景插入SyncAll同步原语。分段函数强制固定执行结构杜绝数据搬运与计算逻辑非法交错。流程4对齐与填充优化可选处理内存对齐、非规整张量边界等硬件边缘场景UB访问要求32字节对齐若DSL分块、张量尺寸无法天然满足约束将标准DataCopy替换为DataCopyPad配置填充尺寸、步幅、布局转换参数。该流程后置不干扰前序核心降级逻辑提升整体鲁棒性。每轮编译反馈修正每一轮转译完成后都会编译生成代码捕获编译器报错将错误信息回传给大模型修正代码后再进入下一轮降级流程。多阶段转译的优势拆分降级任务每一轮仅处理窄范围语义减少大模型幻觉、保证代码结构合规同时让生成的昇腾C算子同时满足DSL语义约束与昇腾底层硬件规范。5 实验评测本文围绕三大研究问题开展实验RQ1AscendCraft能否生成功能正确的昇腾C算子RQ2自动生成算子性能对比PyTorch eager基线表现如何RQ3框架能否泛化到基准外全新算子支撑真实算子开发流程5.1 实验配置基准数据集采用MultiKernelBench多平台算子基准套件支持昇腾C、CUDA等加速器后端。实验选用KernelBench一级任务单算子、中等复杂度、计算与访存模式清晰适合评测算子正确性与性能采用最新版本张量尺寸保证算子运行时长超过15ms消除算子启动开销干扰性能对比更客观。硬件软件环境硬件昇腾910B2 NPU工具链CANN 8.1、PyTorch 2.6系统Ubuntu 22.04配套官方昇腾驱动与固件编译器昇腾默认编译工具链。评测指标编译成功率Comp1生成代码无编译错误的算子占比功能正确率Pass1编译通过、数值结果与参考实现完全一致的算子占比性能指标Fastₓ正确算子中运行速度达到PyTorch eager基线x倍以上的算子占比。Fast₀.₂基础性能达标充分利用向量单元、多核并行Fast₀.₈工程可用高效算子数据流与分块策略合理Fast₁.₀性能持平或超越PyTorch eager基线。5.2 RQ1算子正确性评测表1 各类算子编译与功能正确率算子类别算子数量编译成功率Comp1(%)功能正确率Pass1(%)激活函数15100.0100.0损失函数7100.085.7数学运算683.383.3归一化算子8100.087.5优化器算子5100.0100.0规约算子5100.0100.0池化算子6100.066.7总计52个算子98.190.4整体52个算子编译成功率98.1%、功能正确率90.4%大幅优于直接大模型生成昇腾C代码同类基准下顶尖模型正确率仅13%。激活、归一化、优化器、规约、池化算子编译通过率100%数学算子略低源于mask_cumsum布尔类型覆盖不足激活、优化器、规约算子功能正确率100%数据流结构规整、规约逻辑清晰池化算子边界计算复杂、控制流繁琐正确率相对偏低。实验证明结构化DSL、类别专家示例、带约束多轮转译可显著提升自动生成算子的正确性覆盖绝大多数通用算子类型。5.3 RQ2算子性能评测表2 各类算子性能指标占比算子类别Fast₀.₂(%)Fast₀.₈(%)Fast₁.₀(%)激活函数100.080.040.0损失函数85.785.785.7数学运算83.366.766.7归一化算子50.037.537.5优化器算子100.0100.0100.0规约算子100.00.00.0池化算子50.00.00.0整体平均82.757.746.2整体82.7%算子性能达到PyTorch eager基线20%以上57.7%达到80%46.2%性能持平或优于基线。激活、优化器、损失算子性能最优核心收益来自算子融合数学算子依靠专属硬件优化实现大幅提速归一化算子性能偏弱多阶段计算、多层规约对内存布局、执行顺序高度敏感需要更多硬件优化示例规约、池化算子难以达到80%基线性能底层指令调度、硬件规约原语优化无法仅靠高层DSL表达。尽管部分复杂算子性能仍有提升空间但AscendCraft可稳定产出正确、可运行的算子为后续人工调优提供完善起点。5.4 RQ3真实场景落地验证为验证框架工程实用性本文选取DeepSeek提出的全新mHC流形约束超连接架构算子该算子未收录于任何现有基准。选取两个核心算子mHC_post、mHC_post_grad。仅提供PyTorch参考逻辑与标准输入尺寸AscendCraft一次性生成功能完全正确的昇腾C实现mHC_post生成代码速度为PyTorch eager的6.6倍mHC_post_grad生成代码速度为PyTorch eager的3.0倍。资深昇腾C开发者基于框架生成代码搭配大模型辅助迭代优化仅1天完成深度调优优化后mHC_post提速至基线15.9倍优化后mHC_post_grad提速至基线7.2倍。该案例证明两大核心价值可快速为全新算子生成可用、正确的NPU算子实现大幅降低从零开发成本生成代码结构清晰、可读性强是人工深度性能调优的优质基线规避直接从零生成底层昇腾C代码的高失败率问题。6 总结本文提出AscendCraft一套依托大语言模型、DSL引导全自动生成昇腾C算子的框架。通过设计轻量化昇腾硬件感知DSL、结构化多轮约束转译流水线打通高层算子业务逻辑与底层NPU硬件执行语义之间的鸿沟。该方案让大模型聚焦分块、数据流等核心算法设计规避直接生成底层硬件代码带来的高错误率、脆弱性问题。基于MultiKernelBench的大规模实验证明相较于直接大模型生成昇腾C代码AscendCraft编译成功率、功能正确率实现质的提升大量生成算子性能可对标甚至超越PyTorch eager执行基线。针对全新mHC架构算子的案例进一步验证框架泛化能力生成算子天然具备显著加速效果适配真实工业NPU算子开发流程。整体研究证明适配硬件特性的抽象中间表示结构化生成流程能够让大模型驱动的NPU算子自动生成技术具备工程落地价值。未来工作将聚焦两点提升复杂性能敏感算子的自动优化能力打通DSL层与昇腾C底层联合优化进一步缩小自动生成算子与专家手工调优算子的性能差距。参考文献略术语对照表英文术语中文标准译法Ascend NPU昇腾神经网络处理器AscendC昇腾C昇腾算子开发语言DSL(Domain-Specific Language)领域专用语言Transcompilation转译/分层降级编译AICoreAI计算核Cube/Vector/Scalar Unit矩阵/向量/标量计算单元GM(Global Memory)全局内存UB(Unified Buffer)统一缓冲区MTE(Memory Transfer Engine)内存搬运引擎CopyIn/Compute/CopyOut数据读入/计算/数据写出流水线Kernel/Host Function算子核函数/主机调度函数MultiKernelBench跨平台算子生成基准套件PyTorch eagerPyTorch即时执行模式