昇腾张量编译器(Ascend Tensor Compiler,简称ATC)是昇腾CANN架构体系下的模型转换工具:
其中,开源框架网络模型支持情况如下:
开源框架网络模型场景:
单算子描述文件场景:
下面以Caffe框架ResNet-50网络模型为例,为您演示如何借助ATC工具进行模型转换。
1. 参见昇腾社区相关文档安装CANN软件包,并设置ATC运行所需环境变量。在任意路径执行atc --help命令,若回显参数信息,则说明ATC工具能正常使用。
2. 准备要进行转换的ResNet-50网络模型文件*.prototxt、权重文件*.caffemodel,然后上传到ATC工具所在Linux服务器。
3. 执行如下命令进行模型转换。
参数解释如下:
--framework:原始网络模型框架类型,0表示Caffe框架。
--soc_version:指定模型转换时昇腾AI处理器的版本,例如Ascend310。
--model:原始网络模型文件路径与文件名。
--weight:原始网络模型权重文件路径与文件名,仅当原始网络模型是Caffe时需要指定。
--output:
• 若是开源框架的网络模型:存放转换后的离线模型的路径及文件名,文件名以指定的为准,自动以.om后缀结尾。
• 若是单算子描述文件:存放转换后的单算子模型的路径。
4. 若提示ATC run success信息,则说明模型转换成功。
在--output参数指定的路径下,可查看离线模型:caffe_resnet50.om。
上述只给出了ATC工具进行模型转换最基本的命令,本章节给出ATC工具支持的更多高级特性,方便用户进一步了解,如下场景假设用户已经准备好待转换的模型
原始模型文件或离线模型转成json文件
如果用户不方便查看原始模型或离线模型的参数信息时,可以将原始模型或离线模型转成json文件进行查看。
• 原始模型文件转json文件
• 离线模型转json文件
该场景下需要先将原始模型转成离线模型,然后再将离线模型转成json文件。
自定义离线模型的输入输出数据类型
模型转换时支持指定网络模型的输入、输出节点的Datatype、Format、支持精度选择等高级参数。例如,针对Caffe框架ResNet50网络模型,要求转换后模型输入为FP16类型,指定Pooling算子作为输出,并且该输出节点为FP16类型,则转换命令为:
离线模型支持动态BatchSize/动态分辨率
某些推理场景,如检测出人脸后再执行人脸识别网络,由于人脸个数不固定导致人脸识别网络输入BatchSize不固定;如果每次推理都按照最大的BatchSize或最大分辨率进行计算,会造成计算资源浪费,因此,模型转换需要支持动态BatchSize和动态分辨率的设置,实际推理时,通过AscendCL接口设置具体的BatchSize和动态分辨率。
• 动态BatchSize
其中,“--input_shape ”中的“-1”表示设置动态BatchSize,具体支持哪些BatchSize由“--dynamic_batch_size”决定。
• 动态分辨率
其中,“--input_shape ”中的“-1,-1”表示设置动态分辨率,具体支持哪些分辨率由“--dynamic_image_size ”决定。
关于ATC工具更多参数和特性说明,请登录昇腾社区,阅读相关文档
昇腾CANN文档中心致力于为开发者提供更优质的内容和更便捷的开发体验,助力CANN开发者共建AI生态。任何意见和建议都可以在昇腾社区反馈,您的每一份关注都是我们前进的动力。