应用开发深入讲解之模型转换工具

1.基本概念

昇腾张量编译器(Ascend Tensor Compiler,简称ATC)是异构计算架构CANN体系下的模型转换工具, 它可以将开源框架的网络模型或Ascend IR定义的单算子描述文件(json格式)转换为昇腾AI处理器支持的.om格式离线模型。

模型转换过程中,ATC会进行算子调度优化、权重数据重排、内存使用优化等具体操作,对原始的深度学习模型进行进一步的调优,从而满足部署场景下的高性能需求,使其能够高效执行在昇腾AI处理器上。

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

2.参数说明

  • --model

填写原始网络模型文件路径与文件名。参数使用参考示例如下:

#Caffe模型
--model=$HOME/module/resnet50.prototxt --weight=$HOME/module/resnet50.caffemodel
#MindSpore模型
--model=resnet50.air
#pb模型
--model=resnet50.pb
#onnx模型
--model=resnet50.onnx
  • --framework

填写原始网络模型框架,参数取值与使用参考示例如下:

#取值为0时,即为Caffe框架网络模型,模型包括后缀为prototxt的模型文件和后缀为caffemodel的权重文件
--framework=0
#取值为1时,即为MindSpore框架网络模型,仅支持后缀为*.air的模型文件。
--framework=1
#取值为3时,即为TensorFlow框架网络模型,只支持尾缀为pb的模型文件
--framework=3
#取值为5时,即为ONNX格式网络模型,仅支持ai.onnx算子域中opset v11版本的算子,用户也可以将其他opseth版本的
算子(比如opset v9),通过PyTorch转换成opset v11版本的ONNX算子;而使用PyTorchi训练出的pth模型需要转化为
ONNX格式的模型,才能进行模型转换。
--framework=5
  • --input_format

填写输入数据格式,Caffe、ONNX默认为NCHW;TensorFlow:默认为NHWC。

该参数一般不需要填写,直接使用默认值即可,但是该参数存在以下限制:

如果TensorFlow模型是通过ONNX模型转换工具输出的,则该参数必填,且值为NCHW。

当原始框架为MindSpore时,只支持配置为NCHW。

如果摸型转换时开启AIPP,在进行推理业务时,输入图片数据要求为NHWC排布,该场景下最终与APP连接的输入节点的格式被强制改成NHWC,可能与atc模型转换命令中--input format参数指定的格式不一致。

#input format参数填写示例
--input format=NCHW
  • --input_shape

填写模型输入输出的shape,格式为"input_name:n,c,h,w";模型输入唯一且shapel固定时,可以不填写该参数。以下情况必须要设置该参数:

a.模型有多个输入,则不同输入之间使用英文分号分隔,例如"input_name1:n1,c1,h1,w1;input_name2:n2,c2,h2,w2"。input_name必须是转换前的网络模型中的节点名称。 b. 原始模型中输入数据的某个维度不固定,例如input_name1:?,h,w,c,该参数必填。其中“?”为batch数,表示一次处理的图片数量,可以直接设置为固定值。

#input shape参数填写示例
--input shape="actual input 1:1,3,224,224"
  • --output 当进行开源框架的网络模型转换时,填写输出的离线模型的路径以及文件名。参数使用参考示例如下:
#指定目录
--output=SHOME/resnet50
#当前目录
--output=resnet50

换后的模型文件名以该参数指定的为准,自动以.om后缀结尾。

  • --insert_op_conf

填写插入算子的配置文件路径与文件名,例如aipp预处理算子。

#aipp预处理
--insert op_conf=aipp.cfg
  • --soc version
    填写模型转换时昇腾AI处理器的版本。参数使用参考示例如下:
#昇腾310A处理器使用示例
--soc version=Ascend310

#昇腾310PAI处理器使用示例
--soc version=Ascend310P3

#昇腾910Al处理器使用示例
--soc version=Ascend910A

3.常见使用命令

#caffe模型,不使用aipp
atc --model=resnet50.prototxt --weight=resnet50.caffemodel --framework=0 --output=resnet50 --soc_version=Ascend310 --input_format=NCHW

#pb模型,不使用aipp
atc --model=resnet50_tensorflow_1.7.pb --framework=3 --output=resnet50 --soc_version=Ascend310

#onnx模型,不使用aipp
atc --model=resnet50.onnx --framework=5 --output=resnet50 --input_shape="actual_input_1:1,3,224,224" --soc_version=Ascend310

#onnx模型,使用aipp
atc --model=resnet50.onnx --framework=5 --output=resnet50 --input_shape="actual_input_1:1,3,224,224" --soc_version=Ascend310 --insert_op_conf=aipp.cfg
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6