【2023 · CANN训练营第一季】——应用开发深入讲解——模型转换的ATC工具

前言:

        做一个推理应用,首先从模型转换开始(当然先得选好一个合适的模型)。在昇腾平台做模型推理,需要将Caffe,TensorFlow等开源框架网络模型转换成Davinci架构专用模型(OM格式)。昇腾张量编译器(Ascend Tensor Compiler,简称ATC)是异构计算架构CANN体系下的模型转换工具,模型转换过程中,ATC会进行算子调度优化、权重数据重排、内存使用优化等具体操作,对原始的深度学习模型进行进一步的调优,从而满足部署场景下的高性能需求,使其能够高效执行在昇腾AI处理器上。

一、基础知识

文档:https://www.hiascend.com/document/detail/zh/canncommercial/601/inferapplicationdev/atctool/atctool_0001.html

来源:https://www.hiascend.com

视频:https://www.bilibili.com/video/BV1ZL411X77S

1、ATC工具简介

        ATC工具功能架构如下图所示:

ATC工具功能架构

        从上图中,可以看出ATC工具可以转换“开源框架网络模型”和“单算子描述文件”。

        1、开源框架网络模型场景:

        1)开源框架网络模型经过Parser解析后,转换为中间态IR Graph。

        2)中间态IR经过图准备,图拆分,图优化,图编译等一系列操作后,转成适配昇腾AI处理器的离线模型。

        3)转换后的离线模型上传到板端环境,通过AscendCL接口加载模型文件实现推理过程。

        2、单算子描述文件场景下:Ascend IR定义的单算子描述文件(json格式)通过ATC工具进行单算子编译后,转成适配昇腾AI处理器的单算子离线模型,然后上传到板端环境,通过AscendCL接口加载单算子模型文件用于验证单算子功能。

        ATC工具还可以将开源框架网络模型转换后的离线模型、开源框架网络模型通转成json文件,方便查看。

        使用ATC工具进行模型转换的运行流程下图所示:

 

        1、使用ATC工具之前,需要现在开发环境安装CANN软件包,获取相关路径下的ATC工具。训练营提供的镜像已经安装好了CANN,并且已经配置好环境变量,可以直接使用ATC工具。ATC工具的安装路径为:

/home/HwHiAiUser/Ascend/ascend-toolkit/6.0.RC1.alpha001/x86_64-linux/bin

        2、准备要进行转换的模型或单算子描述文件,并上传到开发环境。也可以通过wget命令将模型直接下载到ECS服务器上。

        3、使用ATC工具进行模型转换,在配置相关参数时,根据实际情况选择是否进行AIPP配置。

二、ATC工具参数介绍及实际操作

        下图列出了所有芯片共用的ATC参数(参数只在某些芯片下使用的未列出),其中黄色色块表示参数互斥,不能同时使用;关联参数表示需要相互配合或者某些场景下需要配合使用。

 

        常用的参数:

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

        当原始模型为Caffe框架时,需要和--weight参数配合使用。

 

2、--framework 原始网络模型框架类型

 

3、--input_format 输入数据格式

 

4、--input_shape 指定模型输入数据的shape

 

5、--output 

        1)如果是开源框架的网络模型:

        存放转换后的离线模型的路径以及文件名,例如:$HOME/module/out/caffe_resnet50,转换后的模型文件名以指定的为准,自动以.om后缀结尾,例如:caffe_resnet50.om。

        2)如果是单算子描述文件(json格式):

        存放转换后的单算子模型的路径,例如:$HOME/singleop/out/op_model。转换后的模型文件命名规则为:序号_opType_输入的描述(dataType_format_shape)_输出的描述(dataType_format_shape)。

6、--insert_op_conf  插入算子的配置文件路径与文件名,例如aipp预处理算子。

        若使用该参数后,则输入数据类型为UINT8。

 

7、--soc_version:指定模型转换时昇腾AI处理器的版本

        昇腾310 AI处理器参数值:Ascend310

        昇腾310P AI处理器参数值:Ascend310P*

        昇腾910 AI处理器参数值:Ascend910*

        其中:*可能根据芯片性能提升等级、芯片核数使用等级等因素会有不同的取值。

可以通过“npu-smi info”指令查看芯片类型,如下图所示

 

8、--singleop 单算子模型转换

        单算子描述文件是基于Ascend IR定义的单个算子的定义文件,包括算子的输入、输出及属性信息;将单个算子描述文件(json格式)转换成适配昇腾AI处理器的离线模型,以便进行后续的单算子功能验证。

 

        按照https://www.hiascend.com/document/detail/zh/canncommercial/601/inferapplicationdev/atctool/atctool_0036.html 编一个gemm.json

 

  

 

9、--mode=1 离线模型或原始模型文件转json,方便查看模型中的参数信息。

 

10、--mode=6 针对已有的离线模型,显示模型信息,包括模型占用的关键资源信息、编译与运行环境等信息。

 

11、--log 设置ATC模型转换过程中日志的级别

取值范围:1)debug:输出debug/info/warning/error/event级别的运行信息。

                   2)info:输出info/warning/error/event级别的运行信息。

                   3)warning:输出warning/error/event级别的运行信息。

                   4)error:输出/error/event级别的运行信息。

                   5)null:不输出日志。默认为null,不输出日志信息。

        ATC支持下述三种方式。

        1)日志落盘存储——加入--log参数,并且不设置为null时 

 

    执行后会在$HOME/ascend/log目录下留下日志信息

 

        2)日志打屏——提前设置环境变量

        除了加--log参数外,还需要提前设置环境变量:export ASCEND_SLOG_PRINT_TO_STDOUT=1

为了减少日志打屏的数量,将log设置成error,仅打印error和event信息,方便展示。

 

        3)日志重定向到文件——设置环境,并将--log参数加上“>”,重定向到指定文件

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值