算子信息导出功能
功能简介
对一个自定义模型使能图模式前,需要验证模型中哪些算子支持入图,哪些算子不支持入图。本功能支持导出模型中使用的算子信息,包括算子名、是否有converter、算子调用次数等。
使用方法
该功能通过torchair.get_npu_backend中compiler_config参数配置,配置示例如下,参数说明参见表1。
1 2 3 4 5 |
import torch_npu, torchair config = torchair.CompilerConfig() # 设置导出图中的Aten算子信息 config.debug.fx_summary.type = "csv" npu_backend = torchair.get_npu_backend(compiler_config=config) |
参数名 |
参数说明 |
是否必选 |
---|---|---|
fx_summary.type |
指定导出的文件类型,字符串类型。缺省为None,不导出图中的Aten算子信息。 当前仅支持csv格式。 |
否 |
fx_summary.skip_compile |
是否跳过GE的编译,以FX图Eager方式执行。
|
否 |
在正式运行图模式时,要删除或注释config.debug.fx_summary.type = "csv"这行代码,否则将无法正确使能图模式。
产物说明
功能开启后,运行模型脚本,默认在当前路径下生成一个summary_${timestamp}.csv文件,文件包含Aten IR、是否支持图模式、调用次数及输入/输出shape等信息,内容样例如表2所示。
目标函数 |
函数类型 |
支持状态 |
调用次数 |
输入统计 |
输出统计 |
---|---|---|---|---|---|
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) |
csv文件中在“支持状态”列选择支持以下情况,而“调用次数”、“输入统计”、“输出统计”列分别表示算子的调用次数、算子输入/输出的shape和dtype信息。
- 未实现:该算子暂不支持图模式。
- 已支持:该算子支持图模式。
- 部分支持:该算子在部分场景下不支持图模式。