已开启
[Bug]: MaskNet模型图模式缓存运行失败 #3005
LucciC创建于  7月17日
LucciC
LucciC成员
7月17日 创建

在提交新问题之前,请确保您已经在社区中搜索过相关问题,并使用了社区中提供的资源/工具后,仍未找到满意的解决方式。

⚠️ 安全信息提醒:请仔细检查提供的文本内容,确保其不包含敏感数据信息,包括但不限于:

  • API 令牌或密钥
  • 密码或身份验证凭证
  • 私有网址或接口地址
  • 个人或机密数据
  • ...

在分享配置信息或代码示例时,请将敏感信息脱敏处理,或使用 <TOKEN> 等占位符替代原有内容。

环境信息

例如:
- 操作系统 arm
- 昇腾硬件信息 A2
- CANN软件版本 cann 9.1.0
- 安装的对应软件版本 pta 2.9.0

🐛 问题描述

问题

Inductor在缓存加载的时候tensor没转成npu的

原因

  1. inductor cache 序列化:pickle.dumps(CompiledFxGraph) → 常量中的 NPU tensor 被 pickle
  2. NPU tensor 的 pickle 机制:UntypedStorage.reduce → torch.save(self, b, _use_new_zipfile_serialization=False) → 旧格式(非 zipfile)
  3. 反序列化:pickle.loads → _load_from_bytes → torch.load(io.BytesIO(b), weights_only=False) → map_location=None
  4. torch_npu 的 load 函数(serialization.py 第 294-339 行):检测到非 zipfile + map_location=None → 强制传 "cpu" 给 _legacy_load → NPU tensor 变成 CPU tensor!
  5. 而标准 PyTorch 的 _legacy_load 在 map_location=None 时,会通过 default_restore_location + 已注册的 privateuse1(npu) 反序列化器,正确地将 tensor 恢复到 NPU 设备。
  6. 问题就在 torch_npu 的 load 函数中,map_location=None 时不应该强制传 "cpu"。

修改方式:

在torch_npu.utils.serialization.py
if map_location is None:
return _legacy_load(
opened_file, None, pickle_module, **pickle_load_args
)

欢迎加入社区,感谢您对社区的贡献 🎉!

likedislike
LucciCLucciC成员
7月17日 添加了label:bug
LucciCLucciC成员
7月17日 关联了pull request:modifty torch_npu.utils.load for torch.compile cache use
LucciCLucciC成员
7月17日 关联了pull request:modifty torch_npu.utils.load for torch.compile cache use
LucciCLucciC成员
7月17日 关联了pull request:modifty torch_npu.utils.load for torch.compile cache use
LucciCLucciC成员
7月17日 关联了pull request:modifty torch_npu.utils.load for torch.compile cache use
LucciCLucciC成员
7月17日 关联了pull request:modifty torch_npu.utils.load for torch.compile cache use
LucciCLucciC成员
7月17日 关联了pull request:modifty torch_npu.utils.load for torch.compile cache use
ascend-robotascend-robot成员
7月17日 关联了pull request:[sync] PR-41864: modifty torch_npu.utils.load for torch.compile cache use
ascend-robotascend-robot成员
7月17日 关联了pull request:[sync] PR-41864: modifty torch_npu.utils.load for torch.compile cache use
ascend-robotascend-robot成员
7月17日 关联了pull request:[sync] PR-41864: modifty torch_npu.utils.load for torch.compile cache use
ascend-robotascend-robot成员
7月17日 关联了pull request:[sync] PR-41864: modifty torch_npu.utils.load for torch.compile cache use
ascend-robotascend-robot成员
7月17日 关联了pull request:[sync] PR-41864: modifty torch_npu.utils.load for torch.compile cache use
TorchNPU-BotTorchNPU-Bot成员
26 天前 添加了label:bot-triaged
TorchNPU-Bot
TorchNPU-Bot成员
26 天前 评论:

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

likedislike