参考《ATC工具使用指南》
--net_optimize_enable
功能说明:所有融合规则的使能开关。
关联参数:--fusion_switch_file 是控制指定某个融合规则开关,
--net_optimize_enable 是控制所有融合规则的开关。
● 当配置--net_optimize_enable=0 时,关闭所有融合规则,--fusion_switch_file 不 生效。
● 当配置--net_optimize_enable=1 时,使能所有融合规则,如果配置了-- fusion_switch_file,以配置的融合规则文件为准。
推荐配置及收益:融合可以减少算子,提升性能,推荐配置1。
--layer_fusion_enable
功能说明:层间深度融合的使能开关。层间深度融合是指多层之间融合在一起,切小 块循环计算,数据在内部 RAM 传递,不读写 DDR。
关联参数:无
● 参数默认值:1
推荐配置及收益:层间深度融合可以减少 DDR 读写,提升性能,推荐配置 1。
--layer_m2m_enable
功能说明:层间数据共享的使能开关。层间数据共享是指两层之间,上一层的输出数 据在内部 RAM 共享给下一层作为输入数据,不读写 DDR。
关联参数:无
推荐配置及收益:层间数据共享可以减少 DDR 读写,提升性能,推荐配置 1。
--compile_mode
功能说明:编译模式,量化后的数据 bit 位宽,不影响权重量化的 bit 位宽,权重固定是8bit量化。
关联参数:--gfpq_param_file:优先使用配置的量化参数。未配置量化参数时,compile_mode 才生效。
● 参数值 − 0:量化使用 8bit。 − 1:量化使用 16bit。
● 参数默认值:0
推荐配置及收益: ● 配置为 0 时,带宽小,板端缓存小,耗时少,精度损失大。 ● 配置为 1 时,带宽大,板端缓存大,耗时大,精度损失小。
--weight_quant_per_channel
功能说明:权重是否每个卷积单独量化,对应一组量化参数。只有 Convolution 和 Deconvolution 支持。
关联参数: --gfpq_param_file:优先使用配置的量化参数。未配置量化参数时, -- weight_quant_per_channel 才生效。
推荐配置及收益:配置为 1 时,权重量化粒度细,精度更好。
--forward_quantization_option
功能说明:ATC 转换模型校准时的量化选项。控制推理时是否使能数据量化或权重量 化。
关联参数:无
● 参数值:
0:关闭数据和权重量化。 1:使能数据量化。 2:使能权重量化。 3:使能数据和权重量化。
● 参数默认值:3
--online_model_type
功能说明:转换生成模型的类型,用于板端执行 profiling 或 dump 数据。
关联参数: --layer_fusion_enable:深度融合的层不支持 dump,即*.om 转 json 文件里,属性 is_dump_available 为 0 的层不支持 dump。
参数取值:
● 参数值:[0,7]。
0: 没有调试相关的内容,没有网络结构和算子信息。
1: 调试带层信息。
2: 调试带层开始和结束标记,板端 profiling 用。
3: 调试带层信息、层开始和结束标记。
4: 调试带层 TRAP 指令,板端 dump 数据用。
5: 调试带层信息、层 TRAP 指令。
6: 调试带层开始和结束标记、层 TRAP 指令。
7: 调试带层信息、层开始和结束标记、TRAP 指令。
● 参数默认值:1
推荐配置及收益: ● Release 配置 0。 ● Debug for profile 配置 2。 ● Debug for dump and compare 配置 4。
--output_type
功能说明:指定网络输出数据类型或指定输出节点的输出类型。
关联参数: 若指定某个输出节点的输出类型,则需要和--out_nodes 参数配合使用。
参数取值:
● 参数值:支持两种格式。
格式 1:data_type, 表示指定所有输出节点的输出数据类型。
格式 2:op_name:output_index:data_type,表示指定某个输出节点的某个输出的 输出数据类型。
− op_name:指定算子的层名,必须为--out_nodes 指定的输出层。
− output_index:指定输出层的第几个输出。
− data_type:支持数据类型 FP16, FP32, INT16, INT8, S16, S8, U16, U8, UINT16, UINT8
● 参数默认值:FP32
推荐配置及收益:无
示例:
● 指定网络输出类型
--output_type=FP32
● 指定某个输出节点的输出类型 output_type="conv1:0:FP32" --out_nodes="conv1:0"
依赖约束:AACPU 算子只支持输出 FP32。
其他说明:
1.在配置参数:
--net_optimize_enable=0 --layer_fusion_enable=0 --compile_mode=1 \
--weight_quant_per_channel=1 --forward_quantization_option=3
可能会解决精度下降问题。
2.为了导出模型推理时的相关信息,在转换om模型时需加入--online_model_type=2 选项
3.可以通过关闭对应算子的Fusion-Pass
进行拆分:
# atc转换模型时添加参数 --fusion_switch_file=switch_fusion.cfg # fusion_switch_file内容 LayerNormONNXFusionPass:off