CANN/GE动态输入Python构图示例
样例使用指导
【免费下载链接】geGE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力,并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge
1、功能描述
本样例使用动态输入算子进行构图,旨在帮助构图开发者快速理解动态输入的定义和使用
2、目录结构
python/ ├── src/ | └── make_concatv2_graph.py // sample文件 ├── CMakeLists.txt // 编译脚本 ├── README.md // README文件 ├── run_sample.sh // 执行脚本3、使用方法
3.1、准备cann包
- 通过安装指导 环境准备正确安装
toolkit和ops包 - 设置环境变量 (假设包安装在/usr/local/Ascend/)
source /usr/local/Ascend/cann/set_env.sh3.2、编译和执行
- 注:和 C/C++构图对比,Python构图需要额外添加 LD_LIBRARY_PATH 和 PYTHONPATH(参考sample中的配置方式)
bash run_sample.sh -t sample_and_run_python该命令会:
- 自动生成ES接口
- 编译sample程序
- 生成dump图并运行该图
执行成功后会看到:
[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_STDOUT=1 #日志打印到屏幕 export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别3.4、图编译流程中DUMP图
可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在bash run_sample.sh -t sample_and_run_python 之前设置如下环境变量来DUMP图到执行路径下
export DUMP_GE_GRAPH=24、核心概念介绍
4.1、构图步骤如下:
- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)
- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))
- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)
- 设置图输出(明确图的输出节点,作为计算结果的终点)
4.2、动态输入
概念说明:动态输入是指某些算子的输入个数不固定;例如 ConcatV2 算子,该算子为动态多输入算子
ConcatV2 算子的原型如下所示,ES 构图生成的API是ConcatV2(),支持在 Python 中使用
REG_OP(ConcatV2) .DYNAMIC_INPUT(x, TensorType({BasicType(), DT_BOOL, DT_STRING})) .INPUT(concat_dim, TensorType::IndexNumberType()) .OUTPUT(y, TensorType({BasicType(), DT_BOOL, DT_STRING})) .ATTR(N, Int, 1) .OP_END_FACTORY_REG(ConcatV2)其对应的函数原型为:
- 函数名:ConcatV2
- 参数:共 3 个,依次为 x, concat_dim, N
- 返回值:输出 y
Python API中:
ConcatV2(x: List[Union[TensorHolder, TensorLike]], concat_dim: Union[TensorHolder, TensorLike], *, N: int =1) -> TensorHolder:注: 1.使用TensorLike类型表达输入,以支持实参可以直接传递数值的情况
【免费下载链接】geGE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力,并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
