文档
注册

--fusion_switch_file

功能说明

融合规则(包括图融合和UB融合)开关配置文件路径以及文件名,通过该参数关闭配置文件中指定的融合规则。

  • 图融合:是FE根据融合规则进行改图的过程。图融合用融合后算子替换图中融合前算子,提升计算效率。图融合的场景如下:
    • 在某一些算子的数学计算量可以进行优化的情况下,可以进行图融合,融合后可以节省计算时间。例如:conv+biasAdd,可以融合成一个算子,直接在l0c中完成累加,从而省去add的计算过程。
    • 在融合后的计算过程可以通过硬件指令加速的情况下,可以进行图融合,融合后能够加速。例如:conv+biasAdd的累加过程,就是通过l0c中的累加功能进行加速的,可以通过图融合完成。
  • UB融合:UB即昇腾AI处理器上的Unified Buffer,UB融合指A算子的计算结果在Unified Buffer上,需要搬移到Global Memory。B算子再执行时,需要将A算子的输出由Global Memory再搬移到Unified Buffer,进行B的计算逻辑,计算完之后,又从Unified Buffer搬移回Global Memory

    从这个过程会发现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融合规则参考,由于系统机制,其他融合规则无法关闭。

推荐配置及收益

无。

示例

  • 场景1:逐条配置待关闭融合规则

    配置文件样例如下,冒号前面为融合规则名,后面字段表示融合规则是否开启(融合规则开关配置文件名举例为fusion_switch.cfg):

    xxxFusionPass:off
    yyyFusionPass:off
    ....
  • 场景2:一键式关闭融合规则
    该参数支持用户一键式关闭融合规则,配置文件样例如下:
    {
        "Switch":{
            "GraphFusion":{
                "ALL":"off"
            },
            "UBFusion":{
                "ALL":"off"
             }
        }
    }

    说明:

    1. 关闭某些融合规则可能会导致功能问题,因此此处的一键式关闭仅关闭系统部分融合规则,而不是全部融合规则。
    2. 一键式关闭融合规则时,可以同时开启部分融合规则,样例如下:
      {
          "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"文件:

  • 若设置了ASCEND_WORK_PATH环境变量,则该文件生成路径为:$ASCEND_WORK_PATH/FE/${进程号}/fusion_result.json。环境变量ASCEND_WORK_PATH详细说明请参见环境变量参考
  • 若未设置上述环境变量,则默认生成在执行atc命令的当前路径。

该文件用于记录模型转换过程中除去fusion_switch.cfg文件中关闭的融合规则外,仍旧使用的融合规则,其中,"match_times"字段表示模型转换过程中匹配到的融合规则次数,"effect_times"字段表示实际生效的次数。如果未配置--fusion_switch_file参数,则生成的"fusion_result.json"文件中记录模型转换过程中匹配到的所有融合规则。

支持的型号

Atlas 200/300/500 推理产品

Atlas 推理系列产品(Ascend 310P处理器)

Atlas 训练系列产品

Atlas 200/500 A2推理产品

Atlas A2训练系列产品/Atlas 800I A2推理产品

使用约束

  • 若网络模型中Convolution算子的“group”属性取值==模型文件prototxt中“num_output”属性的取值,则上述配置文件中VxxxRequantFusionPass必须打开。
  • AMCT对原始框架模型进行量化时,会插入量化和反量化算子,而使用ATC工具进行模型转换过程中,会对插入的量化和反量化算子进行融合,此情况下再进行量化后模型dump结果与原始模型dump结果的比对可能不准确,因此如果用户想使用AMCT量化后的模型进行精度比对,则需要通过--fusion_switch_file参数关闭部分融合功能,该场景下需要关闭的融合规则如下:

    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 推理系列产品(Ascend 310P处理器)必须关闭的融合规则:

    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 200/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

    融合规则解释如下:

    • V100RequantFusionPass

      图融合规则。V100量化场景下,满足反量化(dequant)和量化(quant)相关pattern时,进行部署优化,提升推理性能。

    • V200RequantFusionPass

      图融合规则。V200量化场景下,满足反量化(dequant)和量化(quant)相关pattern时,进行部署优化,提升推理性能。

    • ConvConcatFusionPass

      图融合,支持conv2d*N+concat算子的图融合规则,conv2d后面可以连接dequant和Relu类算子。

    • SplitConvConcatFusionPass

      图融合,支持split+conv2d*N+concat算子的融合规则,conv2d后面可以连接dequant和Relu类算子。

    • TbeEltwiseQuantFusionPass

      UB融合,支持elemwise+quant算子的UB融合,quant算子为可选节点。

    • TbeConvDequantVaddReluQuantFusionPass

      UB融合规则。量化场景下,对Conv-dequant-vadd-relu-quant连续的节点,标记UB融合,提升推理性能。

    • TbeConvDequantVaddReluFusionPass

      UB融合,支持conv2d+dequant+vadd+relu/conv2d+dequant+(leakyrelu)+vadd算子的融合节点。

    • TbeConvDequantQuantFusionPass

      UB融合规则。量化场景下,对Conv-dequant-quant连续的节点,标记UB融合,提升推理性能。

    • TbeDepthwiseConvDequantFusionPass

      UB融合,支持depthwiseConv2d+dequant+(relu/mul)+quant/depthwiseConv2d+dequant+(sigmoid)+mul/depthwiseConv2d+requant/depthwiseConv2d+(power+relu6+power)+elemwise+(quant)算子的融合节点。

    • TbeFullyconnectionElemwiseDequantFusionPass

      UB融合,支持如下两种形式的融合:

      1. 静态shape场景BatchMatMul/BatchMatMulV2 + elemwise的融合。
      2. 静态shape场景MatMul/MatMulV2/BatchMatMul/BatchMatMulV2 + AscendDequant + elemwise1(+ elemwise2)的融合。
    • TbeConv2DAddMulQuantPass

      UB融合,支持conv+dequant+add+quant融合,add算子除quant外还必须有另两路任意输出才可以进行融合。

    • TbePool2dQuantFusionPass

      UB融合规则。量化场景下,对Pool2d-quant连续的节点,标记UB融合,提升推理性能。

    • TbeCommonRules0FusionPass

      UB融合,支持StridedRead+Conv2D+dequant+elemwise+quant+StridedWrite算子的UB融合,除Conv2D外,其他节点都是可选节点。

    • TbeCommonRules2FusionPass

      UB融合,支持StridedRead+Conv2D+dequant+elemwise+quant+StridedWrite算子的UB融合,除Conv2D外,其他节点都是可选节点;elemwise支持多输出场景下的融合。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词