昇腾社区首页
中文
注册

图编译多级优化选项

功能简介

本功能为试验功能,后续版本可能存在变更,暂不支持应用于商用产品中。

图编译阶段支持设置不同的图编译优化选项,包括子图优化、整图优化、静态shape模型下沉等,同时提供了两个次级编译优化选项,分别为常量折叠优化、死边消除优化。

  • 常量折叠:其核心是在编译阶段直接计算并替换常量表达式的值,从而减少运行时的计算负担。
  • 死边消除:当图中存在条件控制算子(如If、Case等)时,会根据输入条件(cond)判断走哪个分支。若cond在编译时已确定,即可明确所走分支,此时可删除不会走到的分支,从而减少算子编译、图编译耗时。

更多关于图优化技术的详细原理介绍请参考昇腾社区“计算图优化技术”文章。

使用方法

该功能通过torchair.get_npu_backend中compiler_config配置,示例如下,仅供参考不支持直接拷贝运行,参数介绍参见表1

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import torch_npu
import torchair 
config = torchair.CompilerConfig()
# 多级编译优化配置
config.ge_config.oo_level = "O3"
# 常量折叠优化配置
config.ge_config.oo_constant_folding = True
# 死边消除优化配置
config.ge_config.oo_dead_code_elimination = False
npu_backend = torchair.get_npu_backend(compiler_config=config)
opt_model = torch.compile(model, backend=npu_backend)
表1 参数说明

参数名

参数说明

oo_level

图编译多级优化选项,字符串类型。

  • O3(缺省值):开启所有优化,包括开启常量折叠、死边消除等优化。
  • O1:关闭所有图融合和UB融合Pass,只开启静态下沉相关的优化,如InferShape(输出tensor的shape推导)、常量折叠、死边消除等优化。
说明:
  • 支持用户手动将oo_constant_folding或oo_dead_code_elimination置为True/False实现优化项的独立开启/关闭。
  • 取值为O1时,会关闭所有图融合和UB融合Pass,只开启静态下沉的相关Pass。注意,如下路径文件中的图融合Pass系统仍会开启,因为一旦关闭可能会影响功能使用:

    ${INSTALL_DIR}/x86_64-linux/lib64/plugin/opskernel/fusion_pass/config/fusion_config.json”文件中"ExceptionalPassOfO1Level"字段下的所有图融合Pass。其中${INSTALL_DIR}为CANN软件安装后文件存储路径,若安装的Ascend-cann-toolkit软件包,以root安装举例,安装后文件存储路径:/usr/local/Ascend/ascend-toolkit/latest。

  • 更多融合规则相关介绍请参见CANN 图融合和UB融合规则参考

oo_constant_folding

是否开启常量折叠优化。

  • None(缺省值):依赖oo_level取值,当优化级别为O1或O3时,默认开启。
  • True:开启。
  • False:不开启。

oo_dead_code_elimination

是否开启死边消除优化。

  • None(缺省值):依赖oo_level取值,当优化级别为O1或O3时,默认开启。
  • True:开启。
  • False:不开启。