Efficient Large-Scale Model Inference on Edge NPUs via Adaptive Subgraph Repartitioning 样例使用指导 功能描述 本样例为IR模型构建样例,支持通过以下几种方式构建Graph,并生成适配昇腾AI处理器的离线模型,用户可任选其一。
通过算子原型构建Graph
将TensorFlow原始模型解析为Graph
将Caffe原始模型解析为Graph
目录结构
├── src
│ ├──main.cpp //实现文件
├── Makefile //编译脚本
├── CMakeLists.txt //编译脚本
├── data
│ ├──data_generate.py // 通过算子原型构建Graph时,用于生成Graph所需要的数据信息,例如权重、偏置等数据
│ ├──tensorflow_generate.py // 将TensorFlow原始模型解析为Graph时,用于生成.pb格式的TensorFlow模型
│ ├──caffe_generate.py // 将Caffe原始模型解析为Graph时,用于生成.pbtxt格式的Caffe模型与.caffemodel格式的权重文件
├── scripts
│ ├──host_version.conf
│ ├──testcase_300.sh
环境要求
操作系统及架构:CentOS x86系统、CentOS aarch64系统、Euleros x86系统、Euleros aarch64系统
编译器:g++
芯片:all
python及依赖的库:python3.7.5
已完成昇腾AI软件栈在开发环境上的部署
如果采用模型解析方式构图,请在当前环境安装tensorflow1.15.0和caffe
准备构图数据
如果用户需要通过算子原型构建Graph,请执行以下操作准备构图数据:
在data目录执行数据生成脚本,python3.7.5 data_generate.py 执行结束后,在data目录下生成.bin格式的数据。后续模型构建时会从该文件读取权重、偏置等数据。 如果用户需要将TensorFlow原始模型解析为Graph,请执行以下操作准备构图数据:
在data目录执行tensorflow原始模型生成脚本,python3.7.5 tensorflow_generate.py 执行结束后,在data目录下生成.pb格式的模型文件。后续将原始模型解析时会使用该tensorflow模型,名称为tf_test.pb。 如果用户需要将Caffe原始模型解析为Graph,请执行以下操作准备构图数据:
在data目录执行caffe原始模型生成脚本,python3.7.5 caffe_generate.py 执行结束后,在data目录下生成.pbtxt格式的模型文件与.caffemodel格式的权重文件。后续将caffe原始模型与权重文件解析时会使用两者,名称分别为caffe_test.pbtxt与caffe_test.caffemodel。 程序编译 根据实际情况修改Makefile文件中的如下信息。
ASCEND_PATH:指定到ATC或FwkACLlib的安装目录,例如/home/HwHiAiUser/Ascend/ascend-toolkit/latest
INCLUDES:需要包含的头文件,对于本示例,无需修改。如果是用户自行开发的代码,当需要添加头文件时,在示例下方直接增加行即可,注意不要删除原有项目。如果网络中有自定义算子,请增加自定义算子的原型定义头文文件。
LIBS:需要链接的库,对于本示例,无需修改。如果是用户自行开发的代码,当需要添加链接库时,在示例下方直接增加行即可,注意不要删除原有项目。
禁止链接软件包中的其他so,否则后续升级可能会导致兼容性问题。
执行如下命令进行编译。
如果安装的是ATC组件,依次执行make clean和make ir_build。
如果安装的是FwkACLlib组件,依次执行make clean和make fwk_ir_build。
编译结束后,在out目录下生成可执行文件ir_build或者fwk_ir_build。
程序运行 配置环境变量。
若运行环境上安装的“Ascend-cann-toolkit”包,环境变量设置如下:
. ${HOME}/Ascend/ascend-toolkit/set_env.sh 若运行环境上安装的“Ascend-cann-nnrt”包,环境变量设置如下:
. ${HOME}/Ascend/nnrt/set_env.sh 若运行环境上安装的“Ascend-cann-nnae”包,环境变量设置如下:
. ${HOME}/Ascend/nnae/set_env.sh “$HOME/Ascend”请替换相关软件包的实际安装路径。
在out目录下执行可执行文件。
如果用户采用算子原型构图方式,请执行如下命令:
如果安装了ATC组件,请执行:./ir_build ${soc_version} gen
如果安装了FwkACLlib组件,请执行:./fwk_ir_build ${soc_version} gen
${soc_version}:昇腾AI处理器的版本,可以从ATC或FwkACLlib安装路径下的/data/platform_config查看ini文件名,文件名即为对应版本,如果仍然无法确定具体使用的版本号,可以通过如下方法查询:
单击如下手册中的链接并进入该手册,CANN Ascend-DMI工具用户指南。 完成“使用工具>使用前准备“,然后进入“使用工具>设备实时状态查询“章节。 使用相关命令查看芯片的详细信息,例如使用ascend-dmi -i -dt命令查看芯片的详细信息,返回信息中“Chip Name“对应取值,去除空格后,即为具体使用的${soc_version}。 编译成功提示:
========== Generate Graph1 Success!========== Build Model1 SUCCESS! Save Offline Model1 SUCCESS! 如果用户采用将TensorFlow原始模型解析为Graph的构图方式,请执行如下命令:
如果安装的是ATC组件,请执行:./ir_build ${soc_version} tf
如果安装的是FwkACLlib组件,请执行:./fwk_ir_build ${soc_version} tf
编译成功提示:
========== Generate graph from tensorflow origin model success.========== Build Model1 SUCCESS! Save Offline Model1 SUCCESS! 如果用户采用将Caffe原始模型解析为Graph的构图方式,请执行如下命令:
如果安装的是ATC组件,请执行:./ir_build ${soc_version} caffe
如果安装的是FwkACLlib组件,请执行:./fwk_ir_build ${soc_version} caffe
编译成功提示:
========== Generate graph from caffe origin model success.========== Build Model1 SUCCESS! Save Offline Model1 SUCCESS! 检查执行结果。
在out目录下生成离线模型文件。