图编译多级优化选项
功能简介
本功能为试验功能,后续版本可能存在变更,暂不支持应用于商用产品中。
图编译阶段支持设置不同的图编译优化选项,包括子图优化、整图优化、静态shape模型下沉等,同时提供了两个次级编译优化选项,分别为常量折叠优化、死边消除优化。
- 常量折叠:其核心是在编译阶段直接计算并替换常量表达式的值,从而减少运行时的计算负担。
- 死边消除:当图中存在条件控制算子(如If、Case等)时,会根据输入条件(cond)判断执行哪个分支。若cond在编译时已确定,即可明确执行的分支,此时可删除不执行的分支,从而减少算子编译、图编译耗时。
使用约束
本功能仅支持max-autotune模式。
使用方法
该功能通过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) |
参数名 |
说明 |
|---|---|
oo_level |
图编译多级优化选项,字符串类型。
|
oo_constant_folding |
是否开启常量折叠优化。
|
oo_dead_code_elimination |
是否开启死边消除优化。
|
- 支持用户手动将oo_constant_folding或oo_dead_code_elimination置为True/False实现优化项的独立开启/关闭。
- oo_level取值为O1时,会关闭所有图融合和UB融合Pass,只开启静态下沉的相关Pass。需要注意的是,如下路径文件中的图融合Pass系统仍会开启,因为一旦关闭可能会影响功能使用:
“${INSTALL_DIR}/x86_64-linux/lib64/plugin/opskernel/fusion_pass/config/fusion_config.json”文件中"ExceptionalPassOfO1Level"字段下的所有图融合Pass。${INSTALL_DIR}请替换为CANN软件安装后文件存储路径,以root安装举例,安装后文件存储路径为/usr/local/Ascend/cann。
- 更多融合规则相关介绍请参见《CANN 图融合和UB融合规则参考CANN 图融合和UB融合规则参考》。
父主题: max-autotune模式功能