当前位置: 首页 > article >正文

graph-autofusion:CANN 的自动算子融合引擎

GE 的图优化 pass 里算子融合是对推理性能影响最大的一个。但 GE 的融合规则是硬编码的——ConvBNReLU写一条规则BMMSoftmaxBMM写一条规则。规则多了维护成本直线上升总有覆盖不到的融合场景。graph-autofusion 解决了这个问题。它是一个独立的自动融合框架不靠人工写规则而是通过分析计算图的 Tensor 流和硬件特性自动识别可融合的算子组合。在秦昇腾NPU 上的推理链路中graph-autofusion 是 GE 和 Runtime 之间的一道关键工序——把 GE 输出的优化图进一步压榨到极致。为什么算子融合重要一个不融合的算子执行路径算子 A从 DDR 读输入 Tensor → 计算 → 写中间 Tensor 到 DDR 算子 B从 DDR 读中间 Tensor → 计算 → 写中间 Tensor 到 DDR 算子 C从 DDR 读中间 Tensor → 计算 → 写输出到 DDR每个算子的输入输出都要经过 DDR。DDR 的带宽是 NPU 片上 L1 Buffer 带宽的十分之一左右。中间 Tensor 每在 DDR 中走一趟就浪费一次搬运开销。融合后融合算子 ABC从 DDR 读输入 → L1 上顺序执行 A→B→C → 写输出到 DDR中间 Tensor 只在 L1 上流转。搬运量从 ABC 的输入输出全部读写减少到只读一次输入、只写一次输出。对于卷积或 Attention 这类中间 Tensor 比输入输出大得多的算子搬运量的减少在 2-4 倍。graph-autofusion 如何工作graph-autofusion 的核心是一个基于图模式的自动识别引擎。它不靠手写规则而是通过几个步骤自动发现融合机会第一步图扫描。从 GE 传过来的优化计算图中遍历每个算子节点记录每个节点的输入 Tensor 和输出 Tensor 的引用计数——哪些节点读这个 Tensor、哪些节点写这个 Tensor。第二步依赖分析。找到写后读的 Tensor 链——A 的输出是 B 的输入、B 的输出是 C 的输入并且 ABC 之间没有分支。这条链上的算子可以融合成一个。A → B → C直线链可融合 A → B ↘ → DB 有分支不能简单融合 A 和 B C ↗第三步硬件约束检查。即使算子在依赖图上可以融合还需要检查硬件约束L1 容量约束。融合后的算子需要的片上 L1 Buffer 总容量不能超过硬件上限。Attention Score 的[n,n]矩阵在 n 很大时可能超出 L1需要分块执行。算子类型约束。某些算子有特殊的硬件执行单元——比如 Cube Unit 专门做矩阵乘Vector Unit 做逐元素运算。融合时不能把两种硬件单元的不同指令混成一个 Kernel。数据类型约束。FP16 算子和 INT8 算子的融合有限制——混精度融合需要中间 Tensor 做类型转换。第四步融合收益预估。对候选融合方案做量化收益评估——融合后省了多少搬运量、有没有引入额外的计算开销。收益超过阈值才执行融合。// graph-autofusion 的收益评估逻辑简化for(autocandidate:candidates){floatsaved_bytescandidate.input_sizecandidate.output_size;floatextra_computecandidate.recompute_overhead;if(saved_bytes/total_bytesTHRESHOLDextra_compute0.1*saved_bytes){apply_fusion(candidate);}}Transformer 中的融合场景graph-autofusion 在 Transformer 推理中最典型的几个融合MHAMulti-Head Attention融合。QKV 投影 → Split → QK → Softmax → ScoreV → Concat → 输出投影这条长链如果不做融合需要 8 次搬运 7 个中间 Tensor。graph-autofusion 把整条链识别为一个融合模式产出 3 到 4 个融合算子——按硬件执行单元切分但不额外增加 DDR 访问。FFN 融合。GEMM1 → BiasAdd → ReLU → GEMM2 → BiasAdd。5 个操作可以融合成 2 个 KernelGEMM1BiasAddReLU在第一个 Kernel 里完成GEMM2BiasAdd在第二个里完成。两个 Kernel 之间通过 Stream 串联中间 Tensor ReLU 输出在 L1 上流转不经过 DDR。LayerNorm 融合。LayerNorm 的mean → var → normalize过程通常被 GE 表示为多个独立算子。graph-autofusion 会识别出这组操作为 LayerNorm 模式替换成 CANN 内置的优化 LayerNorm 算子。融合执行的性能收益在 Ascend 910 上以 BERT-Base 推理为基准配置延迟 (ms)DDR 访问量 (MB)算子 Launch 次数不融合逐算子执行12.585472GE 基础融合7.852186GE graph-autofusion5.23194graph-autofusion 在 GE 基础融合之上又减少了 40% 的 DDR 访问和 50% 的算子 Launch 次数。延迟从 7.8ms 降到 5.2ms。加速的来源不是计算变快了——算子的计算量没有变——而是搬运量和调度开销减少了。融合后的 Kernel 数变少Runtime 的 Launch 开销从 472 次降到 94 次每节省一次 Launch 就省掉了约 10μs 的调度延迟。从 graph-autofusion 到 GEgraph-autofusion 不是 GE 的替代品它是 GE 图优化链路上的一个扩展插件。GE 做第一轮优化常量折叠、无用节点消除、Layout 转换graph-autofusion 做第二轮的自动融合。两者的分工是GE 负责哪些优化在所有条件下都安全graph-autofusion 负责哪些融合在当前硬件和模型配置下收益最大。理解了这两层的关系就理解了 CANN 图编译管线的完整链路。graph-autofusion 仓库GE 图执行引擎GE 与 graph-autofusion 的分工graph-autofusion 不是 GE 的替代它是 GE 优化链路上的一个扩展插件。GE 先执行第一轮基础优化——常量折叠、无用节点消除、Layout 转换。这些优化在所有场景下都安全。然后 GE 调用 graph-autofusion 做第二轮自动融合——根据当前模型的图结构和硬件约束找到收益最大的融合方案。graph-autofusion 的融合结果反馈给 GEGE 把融合后的 Fusion 算子写进 OM 模型的执行计划。后续推理时 Runtime 直接加载这个执行计划不需要重新做融合决策。融合的边界不是所有算子都能无脑融合。graph-autofusion 在决策时会检查几个硬约束L1 容量边界。融合后的算子需要更大的临时 Buffer。如果融合后的 L1 需求超过硬件上限graph-autofusion 会回退到分块融合——把 A→B→C→D 拆成 A→B融合和 C→D融合。执行单元冲突。Cube Unit 和 Vector Unit 各有专用的指令集。融合时如果混用 Cube 和 Vector 指令需要拆成两个 Kernel。graph-autofusion 检测到这种情况时会把 Cube 部分和 Vector 部分分开融合。动态 Shape 约束。输入 Shape 变化大的算子融合后需要处理多种形状的分块参数。graph-autofusion 对动态 Shape 的算子做保守融合——只融合形状变化不敏感的操作如常量折叠Shape 敏感的操作留到运行时再决定。手动干预融合graph-autofusion 的自动融合并不是 100% 确定的。高级用户可以通过配置影响融合决策fusion:enabled:trueaggressive_level:2# 融合激进程度0-关闭1-保守2-激进默认exclude_ops:[TopK]# 跳过某些算子的融合fusion_blacklist:[]# 禁止融合的算子对激进模式aggressive_level2会尝试更大的融合范围——哪怕 L1 空间只剩 10% 的余量也尝试融合。保守模式多留余量保证任何 Shape 都能正确执行。激进模式在固定 Shape 推理场景中性能更高保守模式在动态 Shape 场景中更可靠。graph-autofusion 的 Transformer 特殊优化对于 Transformer 类模型graph-autofusion 有几个专门的融合策略Attention 投影融合。Q、K、V 三个投影可以融合成一个算子——同一个输入 X 乘以三个不同的权重矩阵。融合后 X 只需要从 DDR 读一次三个投影的结果写到三块不同的显存区域。DDR 读取量从 3 次降到 1 次。FFN 中的多个连续 GEMM。SwiGLU 等结构有GEMM → 门控 → 逐元素乘 → GEMM的模式。第一层 GEMM 的输出被门控函数消费后直接喂给第二层 GEMMgraph-autofusion 把这三步合并成一个融合算子——L1 上完成 GEMM → 门控 → 逐元素乘 → 第二层 GEMM最后写一次 DDR。总结graph-autofusion 的自动融合是 CANN 推理性能优化的关键一环。它不需要人工编写融合规则通过图分析和硬件约束检查自动识别融合机会。在 Transformer 类模型的推理场景中graph-autofusion 的融合效果最显著——Attention 和 FFN 的长算子链可以被高效压缩为少数几个融合算子DDR 访问量和 Launch 次数同步降低。参考仓库graph-autofusion 自动融合框架GE 图执行引擎

相关文章:

graph-autofusion:CANN 的自动算子融合引擎

GE 的图优化 pass 里,算子融合是对推理性能影响最大的一个。但 GE 的融合规则是硬编码的——ConvBNReLU 写一条规则,BMMSoftmaxBMM 写一条规则。规则多了维护成本直线上升,总有覆盖不到的融合场景。 graph-autofusion 解决了这个问题。它是一…...

asnumpy:NPU 原生的 NumPy 体验

如果你用 Python 做 AI 开发,大概率写过类似这样的代码:用 NumPy 预处理数据,把结果转成 PyTorch Tensor,推理完再转回 NumPy 做后处理。这个过程里数据在 CPU 和 NPU 之间来回拷贝了一次,拖慢了整体速度。 CANN 的 a…...

HCCL 集合通信:昇腾集群的参数同步引擎

大模型训练的本质是将一个超大矩阵乘法拆到多张 NPU 上并行计算,每张卡算完自己的分片后把梯度合并。合并操作就是集合通信。 HCCL(Huawei Collective Communication Library)是 CANN 的集合通信库,对应 NVIDIA NCCL。它不参与模…...

Tenstorrent:基于RISC-V的异构计算架构如何挑战AI芯片市场

1. 项目概述:Tenstorrent的野心与Jim Keller的蓝图在芯片设计的江湖里,Jim Keller这个名字本身就代表着一种传奇。从AMD的K7、K8架构,到苹果A系列、M1芯片的奠基,再到特斯拉的自动驾驶芯片,他参与的每一个项目都深刻影…...

2026毕业季降AI工具排行榜,4款知网维普降AI软件横评

2026年毕业季过半,但还有大量同学的论文卡在AIGC检测这一关。知网在年初做了一次算法升级,维普、万方也在跟进,检测变得越来越严。论文一个字没改,去年12月查AI率18%能过,今年再查变成32%,很多同学就是栽在…...

Win11系统下JDK1.8(jdk-8u121)环境变量配置保姆级教程,附常见报错排查

Win11系统Java开发环境配置全指南:从安装到故障排查 1. 为什么Java环境配置如此重要? 对于每一位Java开发者来说,正确配置开发环境是迈入编程世界的第一步。想象一下,当你满怀期待地写下第一个"Hello World"程序&#x…...

云原生安全新思路:基于DPU智能网卡的IPsec卸载实战,为K8s节点通信加密‘减负’

云原生安全新思路:基于DPU智能网卡的IPsec卸载实战 在Kubernetes集群中,节点间的网络通信安全一直是DevOps团队关注的焦点。传统IPsec加密方案虽然能有效保护数据传输,却不可避免地消耗大量主机CPU资源。当集群规模扩大时,这种加密…...

紧急停止与异常停机:天勤策略里的断线保护与人工兜底

前言 网络闪断、进程被 kill、策略异常未捕获,都可能让持仓暴露在无人管理状态。天勤文档里有紧急停止相关能力(见 advanced/emergency_stop.rst),我把它和自建「停机即平仓/撤单」脚本配合使用。下面写工程清单,不替代…...

5分钟极速上手:免费B站视频转文字工具完整指南

5分钟极速上手:免费B站视频转文字工具完整指南 【免费下载链接】bili2text Bilibili视频转文字,一步到位,输入链接即可使用 项目地址: https://gitcode.com/gh_mirrors/bi/bili2text 还在为整理B站视频内容而烦恼吗?bili2t…...

魔百盒CM311-1s刷机后体验:安卓9.0固件到底香不香?附5621DS无线实测

魔百盒CM311-1s刷机实战:安卓9.0系统深度评测与无线性能揭秘 当手中的魔百盒CM311-1s遇上安卓9.0系统,这场硬件与软件的碰撞会擦出怎样的火花?作为一款搭载S905L3B芯片的电视盒子,其原生系统往往受限于运营商定制化限制&#xff0…...

别再为printf发愁了!华大HC32L13x单片机串口打印的三种实战配置(Keil MDK环境)

华大HC32L13x单片机串口打印的三种高效配置方案 在嵌入式开发中,printf函数作为调试利器,其重要性不言而喻。然而,当您拿到华大HC32L13系列单片机官方SDK,按照常规ARM单片机经验配置printf时,却发现串口毫无反应——这…...

直流接地故障查找:从原理到实践的安全操作指南

1. 项目概述:为什么直流接地查找是个“精细活儿”?在电力系统、轨道交通、数据中心以及各类工业控制场景中,直流系统是名副其实的“神经系统”。它为继电保护、自动装置、通信设备、事故照明以及控制回路提供稳定可靠的电源。你可以把它想象成…...

基于Zynq FPGA的2-FSK基带发射器设计与实现

1. 项目概述与核心思路最近在折腾一个基于Zynq的软件定义无线电(SDR)小项目,核心需求很简单:用硬件逻辑生成一个可调频率的正弦波,并通过DAC输出。这听起来像是数字信号处理的入门练习,但我的目标更具体一点…...

终极指南:如何快速上手B站视频转文字工具,解放你的双手

终极指南:如何快速上手B站视频转文字工具,解放你的双手 【免费下载链接】bili2text Bilibili视频转文字,一步到位,输入链接即可使用 项目地址: https://gitcode.com/gh_mirrors/bi/bili2text 还在为整理B站视频内容而头疼吗…...

为内部知识库问答机器人接入Taotoken多模型增强能力

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为内部知识库问答机器人接入Taotoken多模型增强能力 构建企业内部知识库问答系统,是提升信息流转效率和员工生产力的常…...

Efinity RISC-V IDE实战指南:FPGA软硬件协同开发与调试

1. 项目概述:为什么你需要关注Efinity RISC-V IDE?如果你正在或即将踏入RISC-V开发的世界,尤其是涉及到FPGA(现场可编程门阵列)的软硬件协同设计,那么“Efinity RISC-V IDE”这个名字你大概率绕不开。它不是…...

交流充电桩通信系统设计:从PWM安全握手到CAN总线协议解析

1. 项目概述:从“插上电”到“充上电”的幕后功臣当你把电动汽车的充电枪插入交流充电桩的充电口,听到“咔哒”一声锁止,看到桩体屏幕亮起、开始计费充电时,这背后发生的一系列“对话”远比我们想象的要复杂。这不仅仅是物理连接&…...

对比直接使用官方API,通过Taotoken接入在成本控制上的实际感受

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比直接使用官方API,通过Taotoken接入在成本控制上的实际感受 1. 引言:从单一渠道到聚合平台 对于个人开…...

Seraphine:英雄联盟玩家的终极智能助手,5分钟快速上手教程

Seraphine:英雄联盟玩家的终极智能助手,5分钟快速上手教程 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 你是否曾在英雄联盟对局中因为不了解队友对手的实力而输掉比赛?是…...

原子制造:从单原子操控到新材料创制的技术原理与应用

1. 原子制造:从宏观“锤子”到微观“镊子”的范式革命我们常说,人类文明史是一部材料史。从打磨石器的旧石器时代,到熔铸青铜的青铜时代,再到锻造钢铁的工业时代,每一次文明的跃迁,都伴随着我们对物质操控能…...

手把手教你用ZYNQ PS-SPI读写W25Q80 Flash(附Vitis代码与逻辑分析仪调试技巧)

ZYNQ PS-SPI驱动W25Q80 Flash全流程实战与深度调试指南 在嵌入式系统开发中,外部Flash存储器的可靠读写是许多应用的基础需求。Xilinx ZYNQ系列SoC的Processing System(PS)端集成了SPI控制器,可直接连接W25Q80等串行Flash芯片,无需占用宝贵的…...

Windows进程注入技术深度解析:从DLL注入到反射式加载

1. 项目概述与核心价值在Windows安全研究、恶意软件分析乃至一些高级的软件开发场景中,“进程注入”是一个绕不开的核心技术点。简单来说,它指的是将一个代码模块(通常是DLL)或一段代码(Shellcode)加载到另…...

Linux内存管理全景解析:从伙伴系统到malloc的完整链路

1. 项目概述:从开机到应用,Linux内存管理的全景图刚接触Linux内核开发或者系统调优的朋友,经常会听到“伙伴系统”、“Slab分配器”、“vmalloc”这些名词,感觉它们既神秘又分散。实际上,这些概念串联起来,…...

从零搭建CXL设备模拟器:手把手实现CXL.cache协议的关键Opcode

从零搭建CXL设备模拟器:手把手实现CXL.cache协议的关键Opcode 在异构计算架构快速发展的今天,CXL(Compute Express Link)协议正成为连接CPU与加速器设备的关键纽带。作为CXL三大协议之一,CXL.cache协议通过定义设备与主…...

BarTender如何在线刷新许可证

1、在BarTender服务端打开Administration Console注意:此操作需要服务端连接外网,登录本地管理员账户2、点击许可并等待右侧弹出许可证界面选中需要操作的许可证并点击右侧刷新按钮3、许可证刷新成功4、刷新完成后观察刷新后的许可证前方是否有感叹号如果…...

GD32 RISC-V BSP框架设计:从硬件抽象到跨平台移植实战

1. 项目概述:为什么我们需要一个专属的BSP框架?如果你正在使用GD32的RISC-V内核MCU,比如GD32VF103系列,并且是从STM32或者其他ARM Cortex-M平台转过来的,那你大概率踩过这样的坑:官方提供的固件库&#xff…...

别再混淆了!一张图看懂SAP特殊采购类40、70、80的核心区别与适用场景

深度解析SAP特殊采购类40/70/80:业务逻辑与实战选型指南 引言 在SAP供应链管理的复杂生态中,特殊采购类(Special Procurement Type)是连接多工厂协同的神经中枢。当企业面临跨工厂物料调配、集中采购或分布式生产等场景时&#xf…...

终极指南:5分钟掌握XUnity自动翻译器,轻松实现Unity游戏汉化

终极指南:5分钟掌握XUnity自动翻译器,轻松实现Unity游戏汉化 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 还在为看不懂的日语游戏剧情而烦恼吗?面对满屏英文的游戏界…...

荣耀出征唯一官网下载:零氪平民友好 无套路轻松畅玩

国新出审〔2023〕941号,ISBN 978-7-498-12393-0,备案号:皖ICP备2023003237号-2。由河北传娱网络科技有限公司拥有著作权,方圆电子音像出版社有限责任公司正规出版,安徽游昕网络科技有限公司负责全程运营,资…...

2025最权威的五大降重复率神器实际效果

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 处于内容营销范畴当中,标题属于勾引用户去点击的首个关卡。伴随AIGC也就是人工智…...