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

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

时间:2023-05-31 18:36:22浏览次数:49  
标签:转换 ATC CANN 模型 2023 离线 -- 算子

前言:

 做一个推理应用,首先从模型转换开始(当然先得选好一个合适的模型)。在昇腾平台做模型推理,需要将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

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

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

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

1、ATC工具简介

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

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

ATC工具功能架构

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

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

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

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

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

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

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

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

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

        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参数(参数只在某些芯片下使用的未列出),其中黄色色块表示参数互斥,不能同时使用;关联参数表示需要相互配合或者某些场景下需要配合使用。

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

        常用的参数:

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

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

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

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

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

3、--input_format 输入数据格式

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

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

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

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。

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

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

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

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

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

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

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

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

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

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

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

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

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

  

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

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

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

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

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

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时 

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

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

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

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

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

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

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

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

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


标签:转换,ATC,CANN,模型,2023,离线,--,算子
From: https://blog.51cto.com/u_15485447/6388751

相关文章

  • 【2023 · CANN训练营第一季】——开发者套件进阶,玩转智能小车课程笔记
    前言:基于新款开发者套件Atlas200IDKA2的智能小车,采用人工智能的方法,对摄像头采集到实时影像进行推理,产生电机等运动机构的控制指令,在特定环境里,实现自动行驶、自动泊车、目标跟踪等功能。昇腾官方开源了“玩”小车的全部软、硬件资料,还准备了模拟环境,让还没有小车的小伙伴体验自......
  • 某书x-s算法(2023-05-30更新)
     服务器2023-05-30更新了x-s算法,主要位置如下: 将其全部复制下来,放入浏览器测试(HTML代码如下):<!DOCTYPEhtml><html><head><metacharset="utf-8"/><title>X-s,X-t算法测试,技术支持:V:byc6352,日期:2023-5-31</title><scriptsrc="xs.j......
  • Flutter导入第三方包后报错The number of method references in a .dex file cannot e
    报错导入just_audio:^0.9.34后编译报错。报错内容如下:ERROR:D8:Cannotfitrequestedclassesinasingledexfile(#methods:71340>65536)com.android.builder.dexing.DexArchiveMergerException:Errorwhilemergingdexarchives:Thenumberofmethodreference......
  • 2023广东省程序设计大赛F题
    思路:我们把先把所有状态和值用线段树或树状数组记录下来(因为他是连续的区间,相当于一段区间的不同状态的和)再通过二分或者倍增找出这段区间及找出左右端点1:线段树或者着树状数组维护的有两个,一个是前缀和(不管状态),一个是颜色和就是状态2:左右端点查找:一个点对应一个颜色,我们假设从......
  • pkusc2023 d1t3
    整自闭了,快一个月后才想出来怎么做。设点\(i\)是1的概率为\(p_i\),定义\(P_i(x)=1-p_i+p_ix\)。那么\(p_i\)是\(i\)的儿子节点和自己的\(P(x)\)卷起来后取后一半的系数和。树上修改很魔怔,考虑ddp。维护每个点轻儿子和自己的\(\prodP(x)\),记为\(S_i(x)\),设一共有......
  • Spring MVC官方文档学习笔记(二)之DispatcherServlet
    1.DispatcherServlet入门(1)SpringMVC是以前端控制器模式(即围绕着一个中央的Servelt,DispatcherServlet)进行设计的,这个DispatcherServlet为请求的处理提供了一个共用的算法,即它都会将实际的处理工作委托给那些可配置的组件进行执行,说白了,DispatcherServlet的作用就是统......
  • throw,throw ex 与 ExceptionDispatchInfo.Throw(ex)
    有以下代码usingSystem.Diagnostics;usingSystem.Runtime.ExceptionServices;usingMicrosoft.AspNetCore.Mvc;usingstaticSystem.Net.Mime.MediaTypeNames;namespaceWebSignalR.Controllers{[ApiController][Route("[controller]")]publi......
  • 【2023 · CANN训练营第一季】——搭建环境:创建ECS,下载sample仓
    前言:        本文是环境搭建的第一篇笔记。主要包括下面两方面内容:    1、在华为云上创建ECS服务器,并修改Ubuntu源和pip源为国内镜像地址。        2、为了更好的使用ECS,需要在本地安装远程连接和查看代码的工具软件,以Windows为例介绍几个常用的工具软件。......
  • CVE-2023-33246学习
    1.参考学习CVE-2023-33246https://github.com/I5N0rth/CVE-2023-332462.本地搭建环境2.1下载镜像#dockerpullapache/rocketmq:4.9.1#dockerpullapacherocketmq/rocketmq-console:2.0.02.2启动broker、namesrv、console启动namesrvdockerrun-dit-p9876:987......
  • java.lang.ClassCastException: com.alibaba.fastjson2.JSONArray cannot be cast to
    是这样的,今天跟着写springboot项目的时候,前端登录的时候报403错误。检查了半天,是后端的问题报错代码: 第二句报错提示如下 说是JSONArray不能转String,但我这也不是JSONArry转String而是Object转String啊。网上搜了半天,用了好多种方法也没什么用最后索性死马当活马医,让它......