已关闭
[benchmarks/torchbench] fambench_xlmr 模型无法在 NPU 上运行:canary 白名单缺失 + fairseq checkpoint/deepcopy 兼容问题 #4686
huyuchao创建于  9月8日关闭于  10 天前
huyuchao成员
9月8日 创建

问题现象

  1. torchbench.py --only fambench_xlmr 选不中模型:fambench_xlmr 位于 canary_models 目录,runner 的 CANARY_MODELS 白名单未包含(默认仅 torchrec_dlrm)。
  2. 加入白名单后模型加载失败:torch>=2.6 torch.load 默认 weights_only=True 拒绝 fairseq checkpoint(含 argparse.Namespace 等非白名单对象)。
  3. 加载通过后 validate 阶段 copy.deepcopy 无限递归:fairseq HubInterface 动态 __getattr__ 代理导致深拷贝回环——模型已声明 DEEPCOPY=False 上游契约,但 runner 的 deepcopy_model 未消费该旗标。
  4. default 后端(TORCHINDUCTOR_NPU_BACKEND=default)下 --inductor 编译失败:safe_softmax 融合 kernel UB overflow(10.76Mb > 1.57Mb,bishengir 降级 code-motion 重试仍败);triton_experimental 后端编译成功。

修复方案(对应 PR #46021,fambench_xlmr 与 vision_maskrcnn 合并提交;原 #45955 已并入关闭)

  • torchbench.py:CANARY_MODELS 加入 fambench_xlmr(全量套件仍走 SKIP,仅 --only 手动选中)。
  • npu_support.py:@register_patch("fambench_xlmr"),与库上其余模型 patch 同构:
    • Model.__init__ 包装内 scoped torch.load → weights_only=False(try/finally 恢复,仅加载 checkpoint 期间生效);
    • 深拷贝递归按上游契约整改:common.py deepcopy_model 镜像 util/env_check.py 语义(DEEPCOPY=False 不拷贝)+ torchbench.py 旗标传递(镜像 util/backends/cudagraph.py),模型自带的 DEEPCOPY = False 声明生效。

验证

  • triton_experimental 后端 perf 1.152x(6 图编译成功,契约整改后复测)、accuracy pass_accuracy;
  • default 后端的 safe_softmax UB overflow 属编译器问题,不在本 PR 范围(PR 描述已交代)。
likedislike
TorchNPU-BotTorchNPU-Bot成员
9月8日 添加了label:triage-review
TorchNPU-Bot
TorchNPU-Bot成员
9月8日 评论:

issue待分派,添加triage-review标签

likedislike
TorchNPU-BotTorchNPU-Bot成员
9月8日 添加了label:bot-triaged;删除了label:triage-review
TorchNPU-Bot
TorchNPU-Bot成员
9月8日 评论:

检测到当前 issue 已关联 PR,自动添加标签:bot-triaged

likedislike
Hhuyuchao成员
29 天前 修改了issue 的描述
Hhuyuchao成员
22 天前 修改了issue 的描述
chenrayraychenrayray成员
15 天前 关联了里程碑:v26.2.0
chenrayray
chenrayray成员
10 天前 评论:

因为本单相关实施 PR 已全部结束(1 个已合入、1 个已关闭),按照本轮 issue 整理规则,先关闭此单。其中关闭但未合入的 PR 不代表对应修复已交付。

核对的 PR:

如仍有问题或需要继续推进,请重新打开,并补充当前 PyTorch / TorchNPU / CANN 版本、硬件环境、复现步骤及相关日志;需求类请补充尚未完成的具体内容。

likedislike
chenrayraychenrayray成员
10 天前 关闭了 issue
chenrayraychenrayray成员
10 天前 issue状态由 TODO 改变为 DONE
ascend-robotascend-robot成员
10 天前 添加了label:resolved