融合规则(包括图融合和UB融合)开关配置文件路径以及文件名,通过该参数关闭配置文件中指定的融合规则。
从这个过程会发现A的结果从Unified Buffer->Global Memory->Unified Buffer->Global Memory。这个经过Global Memory进行数据搬移的过程是浪费的,因此将A和B算子合并成一个算子,省去了数据搬移的过程叫UB融合。UB融合可以减少整网中数据搬移的时间(Global Memory>Unified Buffer,Unified Buffer->Global Memory),提高运算效率,有效降低带宽。
无。
参数值:配置文件路径以及文件名。
参数值格式:路径和文件名:支持大小写字母(a-z,A-Z)、数字(0-9)、下划线(_)、短横线(-)、句点(.)、中文汉字。
参数值约束:
系统内置的图融合和UB融合规则,均为默认开启,用户可以根据需要通过该参数关闭指定的融合规则。当前可以关闭的融合规则请参见《图融合和UB融合规则参考》,由于系统机制,其他融合规则无法关闭。
无。
配置文件样例如下,冒号前面为融合规则名,后面字段表示融合规则是否开启(融合规则开关配置文件名举例为fusion_switch.cfg):
xxxFusionPass:off yyyFusionPass:off ....
{ "Switch":{ "GraphFusion":{ "ALL":"off" }, "UBFusion":{ "ALL":"off" } } }
说明:
{ "Switch":{ "GraphFusion":{ "ALL":"off", "SoftmaxFusionPass":"on" }, "UBFusion":{ "ALL":"off", "TbePool2dQuantFusionPass":"on" } } }
将上述配置好的fusion_switch.cfg文件上传到ATC工具所在服务器任意目录,例如上传到$HOME/module,使用示例如下:
--fusion_switch_file=$HOME/module/fusion_switch.cfg
模型转换完毕,会生成"fusion_result.json"文件:
该文件用于记录模型转换过程中除去fusion_switch.cfg文件中关闭的融合规则外,仍旧使用的融合规则,其中,"match_times"字段表示模型转换过程中匹配到的融合规则次数,"effect_times"字段表示实际生效的次数。如果未配置--fusion_switch_file参数,则生成的"fusion_result.json"文件中记录模型转换过程中匹配到的所有融合规则。
Atlas 200/300/500 推理产品
Atlas 推理系列产品
Atlas 训练系列产品
Atlas 200I/500 A2推理产品
Atlas A2训练系列产品/Atlas 800I A2推理产品
Atlas 200/300/500 推理产品、Atlas 训练系列产品场景必须关闭的融合规则:
V100RequantFusionPass:off ConvConcatFusionPass:off SplitConvConcatFusionPass:off TbeEltwiseQuantFusionPass:off TbeConvDequantVaddReluQuantFusionPass:off TbeConvDequantVaddReluFusionPass:off TbeConvDequantQuantFusionPass:off TbeDepthwiseConvDequantFusionPass:off TbeFullyconnectionElemwiseDequantFusionPass:off TbeConv2DAddMulQuantPass:off TbePool2dQuantFusionPass:off TbeCommonRules0FusionPass:off TbeCommonRules2FusionPass:off
Atlas 推理系列产品必须关闭的融合规则:
V200RequantFusionPass:off ConvConcatFusionPass:off SplitConvConcatFusionPass:off TbeEltwiseQuantFusionPass:off TbeConvDequantVaddReluQuantFusionPass:off TbeConvDequantVaddReluFusionPass:off TbeConvDequantQuantFusionPass:off TbeDepthwiseConvDequantFusionPass:off TbeFullyconnectionElemwiseDequantFusionPass:off TbeConv2DAddMulQuantPass:off TbePool2dQuantFusionPass:off TbeCommonRules0FusionPass:off TbeCommonRules2FusionPass:off
Atlas 200I/500 A2推理产品、Atlas A2训练系列产品/Atlas 800I A2推理产品必须关闭的融合规则:
ConvConcatFusionPass:off SplitConvConcatFusionPass:off TbeEltwiseQuantFusionPass:off TbeConvDequantVaddReluQuantFusionPass:off TbeConvDequantVaddReluFusionPass:off TbeConvDequantQuantFusionPass:off TbeDepthwiseConvDequantFusionPass:off TbeFullyconnectionElemwiseDequantFusionPass:off TbeConv2DAddMulQuantPass:off TbePool2dQuantFusionPass:off TbeCommonRules0FusionPass:off TbeCommonRules2FusionPass:off
融合规则解释如下:
图融合规则。V100量化场景下,满足反量化(dequant)和量化(quant)相关pattern时,进行部署优化,提升推理性能。
图融合规则。V200量化场景下,满足反量化(dequant)和量化(quant)相关pattern时,进行部署优化,提升推理性能。
图融合,支持split+conv2d*N+concat算子的融合规则,conv2d后面可以连接dequant和Relu类算子。
UB融合规则。量化场景下,对Conv-dequant-vadd-relu-quant连续的节点,标记UB融合,提升推理性能。
UB融合,支持conv2d+dequant+vadd+relu/conv2d+dequant+(leakyrelu)+vadd算子的融合节点。
UB融合,支持depthwiseConv2d+dequant+(relu/mul)+quant/depthwiseConv2d+dequant+(sigmoid)+mul/depthwiseConv2d+requant/depthwiseConv2d+(power+relu6+power)+elemwise+(quant)算子的融合节点。
UB融合,支持conv+dequant+add+quant融合,add算子除quant外还必须有另两路任意输出才可以进行融合。
UB融合,支持StridedRead+Conv2D+dequant+elemwise+quant+StridedWrite算子的UB融合,除Conv2D外,其他节点都是可选节点。
UB融合,支持StridedRead+Conv2D+dequant+elemwise+quant+StridedWrite算子的UB融合,除Conv2D外,其他节点都是可选节点;elemwise支持多输出场景下的融合。