
样例使用指导【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge功能描述本样例为自定义算子AddCustom的自定义pass样例此用例针对用户可以获取到自定义算子原型的情况本例中的pass实现对于存在一个输入为 0 的AddCustom进行删除操作。 提供在线推理与atc工具离线编译模型两种方式演示框架如何调用自定义pass完成图优化。 本样例使用eager style api和融合接口实现。目录结构├── README.md // C 样例说明 ├── src │ ├──addcustom_zero_pass.cpp // pass实现文件 ├── CMakeLists.txt // 编译脚本 ├── data | ├──torch_forward.py // torch脚本用于在线推理 |—— gen_es_api | |——CMakeLists.txt // 生成eager style api的编译脚本 |—— proto // 存放自定义算子的算子原型 | |——add_custom_proto.cc | |——add_custom_proto.h环境要求编译器GCC 7.3.x使用python及其依赖库版本python3.9 、pytorch2.1已完成相关环境准备。准备工作创建自定义算子工程编写自定义算子的自定义 pass 的前提是用户已创建自定义算子工程可参考自定义算子入图。在此阶段用户需要完成自定义算子实现、自定义算子包编译与部署、自定义算子适配开发。获取算子原型编译成功后将自定义算子工程中 build_out/autogen 路径下的自定义算子原型定义复制到当前工程的 proto 目录下。本样例中 proto 目录下已添加 AddCustom 自定义算子的原型用户可按需替换或增加。程序编译配置环境变量。运行软件包中设置环境变量脚本命令如下source ${ASCEND_PATH}/set_env.sh${ASCEND_PATH}为CANN软件包安装目录下的cann路径。请替换相关软件包的实际安装路径例如${INSTALL_PATH}/cann。根据实际情况修改gen_es_api/CMakeLists文件修改自定义算子原型文件路径add_library(custom_op_proto SHARED .../proto/your_proto_name.cc)根据实际情况修改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的头文件及源码。完成pass的编写后执行如下命令编译自定义pass so并将编译后的动态库文件libadd_zero_pass.so拷贝到自定义融合pass目录下其中“xxx”为用户自定义目录。 可以在make后增加可选参数-j$(nproc)用于并行执行构建任务$(nproc)动态获取CPU核心数。make -j$(nproc) add_custom_zero_pass make installpass编写定义类AddCustomZeroPass继承PatternFusionPass。重写基类PatternFusionPass中的3个函数Patterns定义匹配模板用于在整图中获取与该模板相同的拓扑。MeetRequirements对模板匹配到的拓扑进行筛选。Replacement定义替换部分。注册AddCustomZeroPass为自定义融合pass执行阶段为BeforeInferShape。验证配置环境变量。运行软件包中设置环境变量的脚本命令如下source ${ASCEND_PATH}/set_env.sh${ASCEND_PATH}为CANN软件包安装目录下的cann路径。请替换相关软件包的实际安装路径例如${INSTALL_PATH}/cann。在线推理设置环境变量dump出编译过程中的模型图export DUMP_GE_GRAPH1进入data目录执行.py文件进行在线推理python torch_forward.py日志中出现如下打印Define pattern for AddCustomZeroPass Define MeetRequirements for AddCustomZeroPass Define replacement for AddCustomZeroPass查看运行结果执行完成后目录下生成一系列.pdtxt文件。 对比以下dump图ge_onnx_xxxxx_PreRunBegin.pdtxt执行前dump图ge_onnx_xxxxx_RunCustomPassBeforeInferShape.pdtxt执行InferShape前的自定义pass dump图可以发现模型已按预期优化即加零节点被删除。若未获得预期结果可设置如下环境变量如使用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),仅供参考