【CANN文档速递07期】模型转换浅谈

01 什么是ATC,它能做什么?

昇腾张量编译器(Ascend Tensor Compiler,简称ATC)是昇腾CANN架构体系下的模型转换工具:

  • 它可以将开源框架的网络模型或Ascend IR定义的单算子描述文件(json格式)转换为昇腾AI处理器支持的.om格式离线模型。
  • 模型转换过程中,ATC会进行算子调度优化、权重数据重排、内存使用优化等具体操作,对原始的深度学习模型进行进一步的调优,从而满足部署场景下的高性能需求,使其能够高效执行在昇腾AI处理器上。

其中,开源框架网络模型支持情况如下:

【CANN文档速递07期】模型转换浅谈_第1张图片

02 ATC工具功能架构

【CANN文档速递07期】模型转换浅谈_第2张图片

开源框架网络模型场景:

  1. 开源框架网络模型经过Parser解析后,转换为中间态IR Graph。
  2. 中间态IR经过图准备,图拆分,图优化,图编译等一系列操作后,转成适配昇腾AI处理器的离线模型。
  3. 用户将转换后的离线模型上传到板端环境,通过AscendCL接口加载模型文件实现推理过程。

单算子描述文件场景:

  1. 通过ATC工具进行单算子编译后,转成适配昇腾AI处理器的单算子离线模型。
  2. 用户将转换后的单算子模型文件上传到板端环境,通过AscendCL接口加载单算子模型文件来验证单算子功能。

03 如何使用ATC工具

下面以Caffe框架ResNet-50网络模型为例,为您演示如何借助ATC工具进行模型转换。

1. 参见昇腾社区相关文档安装CANN软件包,并设置ATC运行所需环境变量。在任意路径执行atc --help命令,若回显参数信息,则说明ATC工具能正常使用。

2. 准备要进行转换的ResNet-50网络模型文件*.prototxt、权重文件*.caffemodel,然后上传到ATC工具所在Linux服务器。

3. 执行如下命令进行模型转换。

【CANN文档速递07期】模型转换浅谈_第3张图片

参数解释如下:

 --framework:原始网络模型框架类型,0表示Caffe框架。

 --soc_version:指定模型转换时昇腾AI处理器的版本,例如Ascend310。

 --model:原始网络模型文件路径与文件名。

 --weight:原始网络模型权重文件路径与文件名,仅当原始网络模型是Caffe时需要指定。

 --output:

     • 若是开源框架的网络模型:存放转换后的离线模型的路径及文件名,文件名以指定的为准,自动以.om后缀结尾。

     • 若是单算子描述文件:存放转换后的单算子模型的路径。

4. 若提示ATC run success信息,则说明模型转换成功。

在--output参数指定的路径下,可查看离线模型:caffe_resnet50.om。

04 ATC工具高级特性

上述只给出了ATC工具进行模型转换最基本的命令,本章节给出ATC工具支持的更多高级特性,方便用户进一步了解,如下场景假设用户已经准备好待转换的模型

原始模型文件或离线模型转成json文件

如果用户不方便查看原始模型或离线模型的参数信息时,可以将原始模型或离线模型转成json文件进行查看。

• 原始模型文件转json文件

• 离线模型转json文件

该场景下需要先将原始模型转成离线模型,然后再将离线模型转成json文件。

自定义离线模型的输入输出数据类型

模型转换时支持指定网络模型的输入、输出节点的Datatype、Format、支持精度选择等高级参数。例如,针对Caffe框架ResNet50网络模型,要求转换后模型输入为FP16类型,指定Pooling算子作为输出,并且该输出节点为FP16类型,则转换命令为:

【CANN文档速递07期】模型转换浅谈_第4张图片

离线模型支持动态BatchSize/动态分辨率

某些推理场景,如检测出人脸后再执行人脸识别网络,由于人脸个数不固定导致人脸识别网络输入BatchSize不固定;如果每次推理都按照最大的BatchSize或最大分辨率进行计算,会造成计算资源浪费,因此,模型转换需要支持动态BatchSize和动态分辨率的设置,实际推理时,通过AscendCL接口设置具体的BatchSize和动态分辨率。

• 动态BatchSize

【CANN文档速递07期】模型转换浅谈_第5张图片

其中,“--input_shape ”中的“-1”表示设置动态BatchSize,具体支持哪些BatchSize由“--dynamic_batch_size”决定。

• 动态分辨率

【CANN文档速递07期】模型转换浅谈_第6张图片

其中,“--input_shape ”中的“-1,-1”表示设置动态分辨率,具体支持哪些分辨率由“--dynamic_image_size ”决定。

05 更多介绍

关于ATC工具更多参数和特性说明,请登录昇腾社区,阅读相关文档

【CANN文档速递07期】模型转换浅谈_第7张图片

昇腾CANN文档中心致力于为开发者提供更优质的内容和更便捷的开发体验,助力CANN开发者共建AI生态。任何意见和建议都可以在昇腾社区反馈,您的每一份关注都是我们前进的动力。

你可能感兴趣的:(人工智能,深度学习,ai)