已开启
[Bug]: [测试用例解耦][A2/aarch64] test_bias_correction_eager 在量化权重预打包阶段报 unknown architecure #459
coconut创建于 5 天前
5 天前 添加了label:triage-review
TorchNPU-Bot
5 天前 评论:
5 天前 评论:
issue待分派,添加triage-review标签


5 天前 添加了label:bug
5 天前 关联了pull request:【社区任务】Ascend for PyTorch测试用例解耦(15)交付件
5 天前 添加了label:bot-triaged;删除了label:triage-review
TorchNPU-Bot
5 天前 评论:
5 天前 评论:
检测到当前 issue 已关联 PR,自动添加标签:bot-triaged


环境信息
🐛 问题描述
二、问题描述
1. 任务背景
test/quantization/eager/test_bias_correction_eager.py。HardwareClassification,为TestBiasCorrectionEager添加hw_classification = HardwareClassification.GENERIC。device参数、张量设备迁移或instantiate_device_type_tests,保持原有测试行为。该测试类包含
test_conv_chain、test_linear_chain两个用例,验证 eager 量化的偏置校正。虽然在配有 NPU 的容器中执行,但目标用例仍按原有逻辑使用 CPU 量化后端;GENERIC分类不表示将量化运算移到 NPU。2. 实际现象
A2 环境中,NPU 张量创建、加法、同步及结果拷回 CPU 均成功,但两个目标用例在量化权重预打包阶段失败,报相同错误:
architecure为实际报错原文中的拼写,本文保留原样。主验证结果:2 failed,5 warnings,耗时 32.49s,退出码 1。两个用例均未跳过;失败发生在模型量化转换/预打包阶段,尚未完成偏置校正结果断言。
三、复现步骤
1. 完整目标用例验证
在已配置 CANN、安装 torch_npu 并应用附件枚举兼容补丁的环境中执行:
cd /workspace/pytorch831 /opt/setup/npu-pytorch-setup/venv_npu/bin/python -u \ /workspace/npu_decouple_validation_20261009/run_a2_bias_validation.py echo "EXIT_CODE=$?"上述脚本作为附件提供,依次执行以下操作:
torch.ones(2, 2, device='npu:0'),执行加法,将结果拷回 CPU,并同步。pytest.main运行目标文件,参数为-v -rs --tb=long。附件路径是本次验证实际路径。其他环境复现时,应先放置附件脚本和目标源码,并相应调整路径;不要求使用相同目录名。
2. 不加载 torch_npu 的最小 CPU 复现
为区分 NPU 初始化问题与 CPU 量化后端问题,额外关闭设备后端自动加载,执行以下最小脚本:
import platform import sys import traceback import torch print('ARCH:', platform.machine(), flush=True) print('TORCH:', torch.__version__, flush=True) print('TORCH_NPU_LOADED:', 'torch_npu' in sys.modules, flush=True) print('QUANTIZED_ENGINE:', torch.backends.quantized.engine, flush=True) print('SUPPORTED_ENGINES:', torch.backends.quantized.supported_engines, flush=True) print('CPU_ONLY_REPRO_NO_NPU_TENSORS', flush=True) weight = torch.quantize_per_tensor(torch.ones(1, 1), 1.0, 0, torch.qint8) print('WEIGHT_DEVICE:', weight.device, flush=True) try: torch.ops.quantized.linear_prepack(weight, None) print('PREPACK_OK', flush=True) except Exception: traceback.print_exc() sys.exit(1)实际执行命令:
TORCH_DEVICE_BACKEND_AUTOLOAD=0 \ /opt/setup/npu-pytorch-setup/venv_npu/bin/python -u \ /workspace/npu_decouple_validation_20261009/repro_a2_fbgemm.py echo "EXIT_CODE=$?"该脚本只创建 CPU 量化张量,不创建 NPU 张量,仍复现同一异常。
四、关键日志
以下为原始日志摘录;完整输出见附件。
1. NPU 基础运算正常
主验证同时确认 NPU 可用,设备数量为 1,NPU 同步成功。
2. 卷积用例失败位置
失败链路进入
torch.ops.quantized.conv2d_prepack,最终抛出RuntimeError: unknown architecure。完整调用栈见主测试日志。3. 最小 CPU 复现输出
原始日志中另有弃用警告;此处省略警告,仅保留异常栈:
五、对照验证与初步原因分析
1. 对照验证
跨平台记录的架构、运行时版本和验证方式并非全部一致,不能仅据通过/失败对比就断言所有 aarch64 环境都不支持该操作。
2. 已确认事实
x86,支持列表包含qnnpack、x86、fbgemm。skipIfNoFBGEMM根据支持列表判断,列表包含fbgemm时不会跳过;这一判断不能证明当前 CPU 架构上的预打包实际可执行。HardwareClassification.GENERIC引入不同失败现象。3. 初步判断及待确认事项
证据指向当前 A2/aarch64 构建的 CPU 量化后端架构兼容性或后端可用性声明问题。FBGEMM 相关预打包路径值得重点排查,但目前尚未通过后端源码逐层定位确认具体抛错分支。
不能将此问题直接表述为已确认的 CANN/NPU 量化算子故障,也不能据此认定更改硬件分类标签即可修复。需要维护者进一步确认构建选项、CPU ISA 支持、量化后端选择和支持列表注册是否一致。