[Bug] QuantONNX 导出阶段 crash: ppq_tensor_round AssertionError

#3
by inoryQwQ - opened
AXERA org

问题描述

使用 model_type: "QuantONNX" 编译带有 QuantizeLinear/DequantizeLinear ops 的 ONNX 模型时,量化阶段顺利完成(AX Load QDQ Config Pass 正确识别 QDQ 配置),但在导出阶段崩溃:

AssertionError: tensor round only takes effect on torch tensor.

复现步骤

  1. 使用 onnxruntime 生成 QDQ ONNX(仅量化 Conv/MatMul):
from onnxruntime.quantization import quantize_static, QuantType, QuantFormat

quantize_static(
    fp32_onnx, qdq_onnx, calib_reader,
    quant_format=QuantFormat.QDQ,
    per_channel=True,
    op_types_to_quantize=['Conv', 'MatMul'],
    weight_type=QuantType.QInt8,
    activation_type=QuantType.QUInt8,
)
  1. Pulsar2 配置:
{
  "model_type": "QuantONNX",
  "target_hardware": "AX650",
  "onnx_opt": { "disable_onnx_optimization": true }
}
  1. pulsar2 build --config config.json

完整错误栈

[11:51:59] AX Load QDQ Config Pass Running ...            ✅
[11:51:59] AX Refine Int Parameter Pass Running ...       
[11:51:59] AX Passive Parameter Quantization Running ...  
[11:51:59] AX Parameter Baking Pass Running ...           
--------- Network Snapshot ---------
Num of Op:                    [272]
Num of Quantized Op:          [271]    ← 量化成功
------- Quantization Snapshot ------
...
Network Quantization Finished.              ← 量化完成
...
Traceback:
  File "quant.ppq.parser.ax_exporter.suergery.insert_op", line 471, in insert_all_qlinear
  File "quant.ppq.parser.ax_exporter.suergery.insert_op", line 57, in insert_quantize_linear_op
  File "quant.ppq.parser.ax_exporter.suergery.insert_op", line 116, in insert_quantizer_linear_after_var
  File "quant.ppq.utils.round", line 126, in ppq_tensor_round
  File "quant.ppq.utils.round", line 84, in forward
AssertionError: tensor round only takes effect on torch tensor.

环境

  • Pulsar2: 6.0 (48520c11)
  • Docker: axera/pulsar2:latest (f6c10451cee1)
  • 模型: 6层 Transformer Text Encoder (192 hidden, 36x Conv1d, 24x MatMul)

补充说明

ONNX 层面的 QDQ 精度已验证正常(QDQ vs FP32 cosine=0.993),问题出在 Pulsar2 内部导出阶段。如果能修复,QuantONNX 通道对 Transformer 类模型(含 Softmax/Attention)的量化精度提升非常关键——PTQ 只有 0.78,QAT+QDQ 可达 0.99+。

参考

完整编译日志见附件。

Sign up or log in to comment