算子converter支持度导出功能

功能简介

PyTorch模型使能图模式前,需要先识别FX图中IR是否有对应converter实现。若有,表示算子支持接入Ascend IR计算图;否则不支持入图。对于不支持入图的算子,请根据实际情况进行converter补齐,具体操作请参考LINK

本功能可以导出算子详细信息,包括算子名、算子converter支持度、算子调用次数等。

使用方法

该功能通过torchair.get_npu_backend中compiler_config配置,示例如下,参数介绍参见表1

1
2
3
4
5
6
import torch_npu, torchair
config = torchair.CompilerConfig()
# 设置导出图中的Aten算子信息
config.debug.fx_summary.type = "csv"
npu_backend = torchair.get_npu_backend(compiler_config=config)
opt_model = torch.compile(model, backend=npu_backend)
表1 参数说明

参数名

参数说明

fx_summary.type

指定导出的文件类型,字符串类型。缺省为None,不导出图中的Aten算子信息。

当前仅支持csv格式。

fx_summary.skip_compile

是否跳过Ascend IR图编译,以FX图Eager方式执行。

  • True(缺省值):跳过Ascend IR图编译,以FX图Eager方式执行。适用于模型converter不全,图模式不能正常执行的场景,该场景下能收集完整的FX信息。
  • False:采用Ascend IR图编译。适用于模型支持以图模式执行且想收集FX信息的场景。

在正式运行图模式时,要删除或注释config.debug.fx_summary.type = "csv"这行代码,否则将无法正确使能图模式。

产物说明

功能开启后,默认在当前脚本所在路径生成summary_${timestamp}.csv文件,文件样例如表2所示。

表2 fx_summary信息

目标函数

函数类型

支持状态

调用次数

输入统计

输出统计

aten.as_strided.default

aten

未实现

36

24次:(float16(12, 1, 512, 64), [12, 1, 512, 64], [64, 196608, 768, 1])

12次:(float16(12, 1024, 64), [12, 2, 768, 64], [65536, 16384, 64, 1])

24次:float16(12, 1, 512, 64)

12次:float16(12, 2, 768, 64)

aten.native_layer_norm.default

aten

部分支持

62

62次:(float16(1, s0, 4096), [4096], float16(4096,), float16(4096,), 1e-05)

62次:(float16(1, s0, 4096), float32(1, s0, 1), float32(1, s0, 1))

aten.add.Tensor

aten

已支持

120

60次:(float16(1, s0, 4096), float16(1, s0, 4096))

30次:(float16(1, s0, 16384), 1)

30次:(float16(1, s0, 16384), 1.0)

60次:float16(1, s0, 4096)

60次:float16(1, s0, 16384)

<built-in function getitem>

builtin

已支持

62

62次:((float16(1, s0, 4096), float32(1, s0, 1), float32(1, s0, 1)), 0)

62次:float16(1, s0, 4096)