Ascend配置文件说明
概述
本文档介绍云侧模型转换工具在Ascend后端指定configFile参数时,配置文件的选项说明。
配置文件
表1:配置[ascend_context]参数
参数 |
属性 |
功能描述 |
参数类型 |
取值说明 |
---|---|---|---|---|
|
可选 |
指定模型输入format。 |
String |
可选有 |
|
可选 |
指定模型输入Shape, input_name必须是转换前的网络模型中的输入名称,按输入次序排列,用 |
String |
例如: |
|
可选 |
指定动态BatchSize和动态分辨率参数。 |
String |
|
|
可选 |
配置模型精度模式。 |
String |
可选有 |
|
可选 |
配置算子选择模式。 |
String |
可选有 |
|
可选 |
指定网络输出数据类型。 |
String |
可选有 |
|
可选 |
配置融合规则开关配置文件路径及文件名。 |
String |
指定融合规则开关的配置文件 |
|
可选 |
模型插入AIPP算子 |
String |
AIPP配置文件路径 |
|
可选 |
AOE自动调优模式 |
String |
可选有”subgraph turing”, “operator turing”或者”subgraph turing, operator turing”, 默认不使能 |
动态shape配置
在某些推理场景,如检测出目标后再执行目标识别网络,由于目标个数不固定导致目标识别网络输入BatchSize不固定。如果每次推理都按照最大的BatchSize或最大分辨率进行计算,会造成计算资源浪费。因此,推理需要支持动态BatchSize和动态分辨率的场景,Lite在Ascend上推理支持动态BatchSize和动态分辨率场景,在convert阶段通过congFile配置[ascend_context]中dynamic_dims动态参数,推理时使用model的Resize功能,改变输入shape。
动态Batch size
参数名
dynamic_dims
功能
设置动态batch档位参数,适用于执行推理时,每次处理图片数量不固定的场景,该参数需要与input_shape配合使用,input_shape中-1的位置为动态batch所在的维度。
取值
最多支持100档配置,每一档通过英文逗号分隔,每个档位数值限制为:[1~2048]。 例如配置文件中参数配置如下:
[ascend_context] input_shape=input:[-1,64,64,3] dynamic_dims=[1],[2]
其中,input_shape中的”-1”表示设置动态batch,档位可取值为”1,2”,即支持档位0: [1,64,64,3],档位1: [2,64,64,3].
若存在多个输入,不同输入对应的挡位需要一致,并用
;
隔开。[ascend_context] input_shape=input1:[-1,64,64,3];input2:[-1,256,256,3] dynamic_dims=[1],[2];[1],[2]
converter
./converter_lite --fmk=ONNX --modelFile=${model_name}.onnx --configFile=./config.txt --optimize=ascend_oriented --outputFile=${model_name}
说明:使能动态BatchSize时,不需要指定inputShape参数,仅需要通过configFile配置[ascend_context]动态batch size,即上节示例中配置内容。
推理
使能动态BatchSize,进行模型推理时,输入shape只能选择converter时设置的档位值,想切换到其他档位对应的输入shape,使用model Resize功能。
注意事项
1)若用户执行推理业务时,每次处理的图片数量不固定,则可以通过配置该参数来动态分配每次处理的图片数量。例如用户执行推理业务时需要每次处理2张,4张,8张图片,则可以配置为2,4,8,申请了档位后,模型推理时会根据实际档位申请内存。
2)如果用户设置的档位数值过大或档位过多,可能会导致模型编译失败,此时建议用户减少档位或调低档位数值。
3)如果用户设置的档位数值过大或档位过多,在运行环境执行推理时,建议执行swapoff -a命令关闭swap交换区间作为内存的功能,防止出现由于内存不足,将swap交换空间作为内存继续调用,导致运行环境异常缓慢的情况。
动态分辨率
参数名
dynamic_dims
功能
设置输入图片的动态分辨率参数。适用于执行推理时,每次处理图片宽和高不固定的场景,该参数需要与input_shape配合使用,input_shape中-1的位置为动态分辨率所在的维度。
取值
最多支持100档配置,每一档通过英文逗号分隔。 例如: [imagesize1_height,imagesize1_width],[imagesize2_height,imagesize2_width]”。 例如配置文件中参数配置如下:
[ascend_context] input_format=NHWC input_shape=input:[1,-1,-1,3] dynamic_dims=[64,64],[19200,960]
其中,input_shape中的”-1”表示设置动态分辨率,即支持档位0: [1,64,64,3],档位1: [1,19200,960,3].
converter
./converter_lite --fmk=ONNX --modelFile=${model_name}.onnx --configFile=./config.txt --optimize=ascend_oriented --outputFile=${model_name}
说明: 使能动态BatchSize时,不需要指定inputShape参数,仅需要通过configFile配置[ascend_context]动态分辨率,即上节示例中配置内容。
推理
使能动态分辨率,进行模型推理时,输入shape只能选择converter时设置的档位值,想切换到其他档位对应的输入shape,使用model的Resize功能。
注意事项
1)如果用户设置的分辨率数值过大或档位过多,可能会导致模型编译失败,此时建议用户减少档位或调低档位数值。
2)如果用户设置了动态分辨率,实际推理时,使用的数据集图片大小需要与具体使用的分辨率相匹配。
3)如果用户设置的分辨率数值过大或档位过多,在运行环境执行推理时,建议执行swapoff -a命令关闭swap交换区间作为内存的功能,防止出现由于内存不足,将swap交换空间作为内存继续调用,导致运行环境异常缓慢的情况。
AOE自动调优
AOE是一款专门为Davinci平台打造的计算图形性能自动调优工具。Lite使能AOE的能力,是在converter阶段集成AOE离线可执行程序,对图进行性能调优,生成知识库,并保存离线模型。该功能支持子图调优和算子调优。具体使用流程如下:
配置环境变量
${LOCAL_ASCEND}
为昇腾软件包安装所在路径export LOCAL_ASCEND=/usr/local/Ascend source ${LOCAL_ASCEND}/latest/bin/setenv.bash
确认环境中AOE可执行程序可被找到并运行:
aoe -h
指定知识库路径
AOE调优会生成算子知识库,默认的路径为
${HOME}/Ascend/latest/data/aoe/custom/graph(op)/${soc_version}
(可选)也可通过
export TUNE_BANK_PATH
环境变量来自定义知识库路径。清除缓存
为了模型编译能命中AOE生成的知识库,在使能AOE之前,最好先删除编译缓存,以免缓存复用,以昇腾310P环境,用户为root为例,删除
/root/atc_data/kernel_cache/Ascend310P3
和/root/atc_data/fuzzy_kernel_cache/Ascend310P3
目录。配置文件指定选项
在转换工具config配置文件中
[ascend_context]
指定AOE调优模式,如下举例中,会先执行子图调优,再执行算子调优。[ascend_context] aoe_mode="subgraph tuning, operator tuning"
性能提升结果会因不同环境存在差异,实际时延减少百分比不完全等同于调优日志中所展示的结果。
AOE调优会在执行任务的当前目录下产生
aoe_workspace
目录,用于保存调优前后的模型,用于性能提升对比,以及调优所必须的过程数据和结果文件。该目录会占用额外磁盘空间,如500MB左右的原始模型会占用2~10GB的磁盘空间,视模型大小,算子种类结构,输入shape的大小等因素浮动。因此建议预留足够的磁盘空间,否则可能导致调优失败。
aoe_workspace
目录需要手动删除来释放磁盘空间。