e7d0df49创建于 2025年9月19日历史提交

功能问题定位

模型中存在不支持的算子会导致torchAir成图失败,具体支持算子清单可以参考:ATen API支持清单

1. dynamo成图python日志

开启方式:

import logging
torch._logging.set_logs(dynamo=logging.DEBUG, aot=logging.DEBUG, output_code=True, graph_code=True, recompiles=True)

主要用于原生dynamo报错时定位具体问题,主要看FX图guard信息,可以看到dynamo成FX图的具体流程,从而找到dynamo报错或者不支持的原因。

2. TorchAir python日志

开启方式:

import logging
torchair.logger.setLevel(logging.DEBUG)

当发生例如converter内部报错、TorchAir配置项报错等问题时,可以打印该日志查看TorchAir的converter转换流程或配置项等。

3. TorchAir C++日志

开启方式:

export TNG_LOG_lEVEL=0

主要用于定位Ascend IR图是否配置以及内存问题。在该日志中可以看到Ascend IR图是否编译成功以及传入的具体配置项,同时还能够看到输入/输出的内存申请。

精度问题定位

1. TorchAir python日志

开启方式:

import logging
torchair.logger.setLevel(logging.DEBUG)

除了converter内部报错、TorchAir配置项报错等问题,该日志还可以查看单个算子的输入/输出shape用于定位精度问题。

2. Tensor print

图模式下,图内中间节点的device输出结果无法直接print查看。可以通过npu_print API打印。使用方式如下:

import torch, torch_npu, torchair

class Model(nn.Module):
    ...
    def forward(self, x):
        ...
        y = x ** 2
        torchair.ops.npu_print("y=", y, summarize_size=2)
        ...

model = Model()
model = torch.compile(model)
out = model(x)

API说明:def npu_print(*args, summarize_size=3)

  • *args: 支持输入torch.Tensor和python基本类型 - str, bool, float, int
  • summarize_size: 打印tensor时,每个轴首尾展示的数据量

接口约束:

  • 入参args中至少包含一个Tensor类型输入
  • summarize_size为大于0的正整数或者-1(全打印)
  • 接口是异步打印,多个npu_print的输出顺序与被打印节点执行序一致