CANN/ge修改Conv数据格式融合Pass示例

发布时间:2026/10/29 6:50:39

CANN/ge修改Conv数据格式融合Pass示例 样例使用指导【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge功能描述本样例为修改Conv2D算子data_format并删除后续Transpose算子对。 提供在线推理与atc工具离线编译模型两种方式演示框架如何调用自定义pass完成图优化。 本样例使用eager style api和融合接口实现。目录结构├── src │ ├──modify_conv_data_format_pass.cpp.cpp // pass实现文件 ├── CMakeLists.txt // 编译脚本 ├── data | ├──torch_gen_onnx.py // torch脚本用于导出onnx | ├──torch_forward.py // torch脚本用于在线推理 |—— gen_es_api | |——CMakeLists.txt // 生成eager style api的编译脚本环境要求编译器GCC 7.3.x使用python及其依赖库版本python3.9 、pytorch2.1已完成相关环境准备。实现步骤定义ConvTransFormatPass类继承FusionBasePass。重写基类FusionBasePass中的Run方法其中实现自定义pass逻辑。定义FindNCHWConvNodes遍历图中节点获取符合条件的Conv节点。对符合条件的节点使用SetAttr修改属性。定义DeleteTransposePairBehindIfExist广度遍历后续节点删除转置操作。注册ConvTransFormatPass到指定阶段。程序编译假设CANN软件包的安装目录为INSTALL_PATH 例如/home/HwHiAiUser/Ascend/。配置环境变量。运行软件包中设置环境变量脚本命令如下source ${ASCEND_PATH}/set_env.sh${ASCEND_PATH}为CANN软件包安装目录下的cann路径。请替换相关软件包的实际安装路径例如${INSTALL_PATH}/cann。根据实际情况修改CMakeLists.txt文件中的如下信息。ASCEND_PATH可以设置默认的软件包路径如果通过set_env.sh设置了$ASCEND_HOME_PATH无需修改。PASS_SO_DIR可以设置自定义融合pass动态库安装目录名默认为pass_so_dir。target_include_directories需要包含的头文件对于本示例无需修改。如果是用户自行开发的代码当需要添加头文件时在示例下方直接增加行即可注意不要删除原有项目。如果网络中有自定义算子请增加自定义算子的原型定义头文件。target_link_libraries需要链接的库对于本示例无需修改。如果是用户自行开发的代码当需要添加链接库时在示例下方直接增加行即可注意不要删除原有项目。禁止链接软件包中的其他so否则后续升级可能会导致兼容性问题。执行如下命令 生成eager style api依次执行:mkdir build cd build cmake ..执行后在build目录下产生的es_all_build/generated_code目录中包含es构图api的头文件及源码。执行make命令编译自定义pass so成功编译后通过make modify_conv_data_format_pass.so安装到自定义融合pass目录下。 可以在make后增加可选参数-j$(nproc)用于并行执行构建任务$(nproc)动态获取CPU核心数。make -j$(nproc) modify_conv_data_format_pass make install程序运行配置环境变量(如已执行跳过)。运行软件包中设置环境变量脚本命令如下source ${ASCEND_PATH}/set_env.sh${ASCEND_PATH}请替换相关软件包的实际安装路径。使用ATC离线推理。设置环境变量dump出编译过程中的模型图export DUMP_GE_GRAPH1进入data目录执行.py文件导出onnx文件中使用了torch的onnx导出器依赖额外的Python包onnx运行前确保安装。 此外ATC工具当前最高支持onnx opset_version 18若当前torch默认导出更高版本请显式指定见脚本中注释python torch_gen_onnx.py执行结束后在data目录下生成.onnx格式的模型文件名称为model.onnx。执行ATC工具命令(关于ATC工具的详细说明请前往昇腾社区搜索ATC离线模型编译工具)soc_version请根据实际环境修改atc --model./model.onnx --framework5 --soc_versionxxx --output./model日志中出现如下打印ConvTransFormatPass is starting Remove output edges success Remove output edges success ConvTransFormatPass completed在线推理设置环境变量dump出编译过程中的模型图export DUMP_GE_GRAPH1进入data目录执行.py文件进行在线推理在线推理请确保已安装torch_npu插件python torch_forward.py日志中出现如下打印ConvTransFormatPass is starting Remove output edges success Remove output edges success ConvTransFormatPass completed查看运行结果ATC工具命令执行完成后目录下生成一系列.pbtxt文件。 对比以下dump图ge_onnx_xxxxx_PreRunBegin.pbtxt执行前dump图ge_onnx_xxxxx_RunCustomPass_BeforeInferShape.pbtxt执行InferShape后的自定义pass dump图可以发现模型已按预期优化即卷积算子的data_format被修改为NHWC卷积算子后的transpose被删除。若未获得预期结果可设置如下环境变量如使用atc命令还需添加参数--logdebug让日志打印到屏幕来定位原因。export ASCEND_SLOG_PRINT_TO_STDOUT1 #日志打印到屏幕 export ASCEND_GLOBAL_LOG_LEVEL0 #日志级别为debug级别【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/24 22:27:12

STM32F4贪吃蛇小游戏开发:从CubeMX配置到状态机实现

简介:基于STM32F4开发板的贪吃蛇小游戏完整工程包,面向嵌入式初学者与趣味项目开发者,采用C语言编写,整合触摸屏、LCD显示、四向按键与LED状态指示,解决综合外设应用与游戏逻辑设计的练习需求。工程在经典玩法之上加入…

2026/10/29 6:49:05

marketingskills:重建真实用户连接的实操能力

1. 这不是“学营销”,而是重建你和真实用户之间的连接能力“marketingskills”这个词,最近在招聘平台、自由职业接单页面、甚至小红书笔记标题里高频出现,但它绝不是指背熟4P理论、能画SWOT矩阵、会写朋友圈文案就完事了。我带过37个从零起步…

2026/10/29 6:49:05

OpenCV图像仿射变换原理与实战指南

1. 图像仿射变换基础概念解析在计算机视觉和图像处理领域,仿射变换是最基础也最重要的几何变换之一。简单来说,仿射变换就是保持图像中直线和平行线关系的线性变换,它包含了平移、旋转、缩放和剪切等基本操作。作为图像处理工程师&#xff0c…

2026/10/29 6:49:05

marketingskills:5个可练习的营销能力模块

1. 这不是“学营销”,而是重建你和钱的关系“marketingskills”——这个词最近在招聘平台、自由职业接单站、甚至朋友圈晒学习计划的截图里高频出现,但它根本不是什么新概念,更不是某家培训机构刚编出来的课程名。它就是市场能力的缩写&#…

2026/10/29 6:49:05

Prompt-Tuning小样本微调:模板、标签词与过拟合控制

简介:《Prompt-Tuning:深度解读一种全新的微调范式》是一份面向NLP研究者、算法工程师与大模型学习者的综述型PDF,围绕少样本、零样本场景下如何用提示替代传统Fine-tuning展开,重点回应预训练与下游任务目标差异大、微调易过拟合…

2026/10/29 6:49:05

营销能力不是灵感,而是可拆解的四大实战模块

1. 这不是“营销课”,而是一套可拆解、可验证、可复用的实战能力系统“marketingskills”这个词,乍看像英文课程名,但放在当下内容爆炸、流量碎片、用户注意力以秒计价的环境里,它根本不是什么抽象概念,而是你发一条朋…

2026/10/29 6:44:05

Ponytail:前端UI状态快照与协作诊断工具详解

1. 项目概述:从“ponytail”热词切入,我们到底在讨论什么?最近刷技术社区、设计论坛甚至短视频平台,频繁撞见“ponytail”这个词——它既不是马尾辫的直译,也不是某个新晋网红的ID,而是一个正在快速聚拢真实…

2026/10/28 14:42:12

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/28 15:28:56

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/28 3:32:29

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/29 0:03:42

学生选课系统DFD图绘制指南:边界划分与分层校验实战

简介:文档以顶层与第一层DFD图为核心,完整刻画学生选课系统的逻辑模型,面向软件工程课程设计、系统分析学习及毕设前期建模人群。顶层图界定系统边界,外部实体包括管理员、教师和学生三类角色;第一层图进一步细化用户登…

2026/10/29 0:03:42

JIRA敏捷落地:Scrum角色权限、Sprint与燃尽图避坑指南

简介:围绕“基于JIRA的敏捷开发项目管理”这一主题,面向产品负责人、Scrum Master及研发测试成员,梳理Scrum角色分工、迭代流程与JIRA工具配置的对应关系,适合初、中级团队导入敏捷管理时参考。压缩包共1个docx文件,大…

2026/10/29 0:03:42

SEMI S8人机工程验收实战:从条款拆解到现场实测的完整指南

简介:面向半导体设备设计、制造与运维工程师及安全合规人员,这份资料聚焦SEMI标准体系下的设备安全规范,重点收录SEMI S8-0308《半导体制造设备人体工程学工程安全指南》。内容围绕设备设计原则、错误与事故预防、人体工程学适配三大主线展开…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑