ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

CANN/GE操作符重载异步执行Python样例

CANN/GE操作符重载异步执行Python样例 样例使用指导【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge1、功能描述本样例使用操作符重载进行构图旨在帮助构图开发者快速理解操作符重载的定义。 与operator_overload不同本目录在执行阶段使用Session.run_graph_with_stream_async接口。 关于异步执行更多信息请参考 异步执行。2、目录结构python/ ├── src/ | ├── common.py // 公共逻辑常量、图构建、输入张量、GE 生命周期 | ├── make_add_graph.py // 异步执行样例 | └── make_add_graph_custom_allocator.py // 注册自定义 SamplePoolAllocator 异步执行样例 ├── README.md // README文件 ├── run_sample.sh // 执行脚本3、使用方法3.1、准备cann包本样例需要同时安装两套 CANN最新开发包用于图编译官网正式发布包提供pyACL模块用于图执行。本文中的“编译”和“执行”均特指图编译和图执行不指 GE 工程源码编译。安装请参考最新开发包用于图编译提供本样例依赖的最新 GE/Python 能力。安装请参考 环境准备 中“方式三手动安装软件包 场景1体验master版本能力或基于master版本进行开发”安装最新版本的toolkit和ops包官网正式发布的 CANNtoolkit和ops包用于图执行提供pyACL。安装请参考 环境准备 中“方式三手动安装软件包 场景2体验已发布版本能力或基于已发布版本进行开发”安装官网正式发布版本的软件包设置环境变量 (假设最新开发包安装在/usr/local/Ascend/官网正式发布包安装在/usr/local/Ascend-release/)source /usr/local/Ascend/cann/set_env.sh export PYTHONPATH$PYTHONPATH:/usr/local/Ascend-release/cann/python/site-packages3.2、执行本目录提供两个可选 target3.2.1、默认 allocator 样例bash run_sample.sh -t sample_and_run_python该命令会生成 dump 图并使用 GE 内置 allocator 异步执行该图执行成功后会看到[Success] sample 执行成功pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头可以在 netron 中打开显示3.2.2、自定义 allocator 样例bash run_sample.sh -t sample_and_run_python_custom_allocator该命令在默认样例基础上通过Session.register_external_allocator向 GE 注册自定义SamplePoolAllocator。该类继承ge.allocator.Allocator基类按精确字节数维护空闲块列表命中则复用否则acl.rt.malloc申请free时将块放回池内不立即acl.rt.free。对象被回收时在__del__中统一acl.rt.free缓存块。执行成功后终端会出现以下格式的打印具体行数取决于 GE 对输出 Tensor 的分配/释放地址与size以实际运行为准[Info] SamplePoolAllocator 已注册到 stream [SamplePool] new : addr0x设备内存地址 size字节数 B [Info] 异步执行 Graph 成功 [SamplePool] cache : addr0x设备内存地址 size字节数 B [Info] SamplePoolAllocator 已注销 [SamplePool] destroy: freed N cached blocks [Info] 运行环境已清理 [Success] sample 执行成功pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头可以在 netron 中打开显示输出文件说明执行成功后会在当前目录生成以下文件ge_onnx_*.pbtxt- 图结构的protobuf文本格式可用netron查看3.3、日志打印可执行程序执行过程中如果需要日志打印来辅助定位可以在bash run_sample.sh -t sample_and_run_python之前设置如下环境变量来让日志打印到屏幕export ASCEND_SLOG_PRINT_TO_STDOUT1 #日志打印到屏幕 export ASCEND_GLOBAL_LOG_LEVEL0 #日志级别为debug级别3.4、图编译流程中DUMP图可执行程序执行过程中如果需要DUMP图来辅助定位图编译流程可以在 bash run_sample.sh -t sample_and_run_python 之前设置如下环境变量来DUMP图到执行路径下export DUMP_GE_GRAPH24、核心概念介绍4.1、构图步骤如下创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)添加起始节点(起始节点指无输入依赖的节点通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))添加中间节点(中间节点为具有输入依赖的计算节点通常由用户构图逻辑生成并通过已有节点作为输入连接)设置图输出(明确图的输出节点作为计算结果的终点)4.2、操作符重载概念说明操作符重载是 ES API 提供的语法糖针对AI算子做语法封装使构图代码更加简洁和直观构图 API 特点操作符重载保持与函数调用相同的类型检查和约束【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表