昇腾社区首页
中文
注册
开发者
下载

FX Pass配置功能

功能简介

reduce-overhead模式下的功能为试验特性,后续版本可能存在变更,暂不支持应用于商用产品中。

reduce-overhead执行模式(aclgraph)下,可基于torch.compile生成的ATen IR表示FX Graph或GraphModule,通过对图中的ATen IR变换和分析,可以在不修改原始模型代码的情况下对模型进行灵活修改,例如应用各种图优化Pass操作(算子融合、精度转换、量化等)。

TorchAir提供了一些FX Pass配置项,可以将变换后的ATen IR下沉到aclgraph执行器上,提升算子的执行效率。

使用约束

  • 本功能支持如下产品:
    • Atlas A3 训练系列产品/Atlas A3 推理系列产品
    • Atlas A2 训练系列产品/Atlas A2 推理系列产品
  • 本功能仅支持reduce-overhead模式。
  • 如果图内存在多流并行计算(即配置图内多流表达功能(aclgraph)),本章中所有reinplace相关Pass优化将被跳过,换言之开启此类Pass也不会生效。

使用方法

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

1
2
3
4
5
6
7
8
9
import torch_npu, torchair
config = torchair.CompilerConfig()
# 配置图执行模式
config.mode = "reduce-overhead"
# FX Pass配置开关
config.debug.aclgraph.disable_reinplace_inplaceable_ops_pass = False
config.debug.aclgraph.disable_reinplace_input_mutated_ops_pass = False
npu_backend = torchair.get_npu_backend(compiler_config=config)
opt_model = torch.compile(model, backend=npu_backend)
表1 参数说明

参数名

说明

aclgraph.disable_reinplace_inplaceable_ops_pass

布尔类型,是否关闭Pass。该Pass针对模型的中间节点,将节点中包含的Out-of-place算子(非原地算子)替换为In-place算子(原地算子),以减少计算过程中的内存搬运,从而提升性能。

  • False(默认值):默认打开此Pass。
  • True:关闭此Pass。
说明:

不支持多原地算子(修改了多个输入的算子)开启本pass。

aclgraph.disable_reinplace_input_mutated_ops_pass

布尔类型,是否关闭Pass。该Pass针对模型的原始输入参数,若包含原地操作算子(如KV Cache),Dynamo的Functionalize流程会将原地算子替换为“Out-of-place算子+copy_算子”,本Pass是该操作的逆向过程,将“Out-of-place算子+copy_算子”替换为In-place算子,以减少计算过程中的内存搬运,从而提升性能。

  • False(默认值):默认打开此Pass。
  • True:关闭此Pass。
说明:

多原地算子中,当前仅支持torch_npu.npu_kv_rmsnorm_rope_cache_v2(试验接口,后续版本可能存在变更,暂不支持应用于商用产品中)开启本pass。