已开启
【26.2.0众测】快速入门示例用 torch.save({'arch': CNN, ...}) 保存权重,换进程 torch.load 会报 AttributeError: Can't get attribute 'CNN' #4781
fpwdh创建于 11 天前
11 天前 添加了label:triage-review
TorchNPU-Bot
11 天前 评论:
11 天前 评论:
issue待分派,添加triage-review标签


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


问题描述(文档示例可用性)
《快速入门》的示例在训练结束时这样保存权重(原文):
torch.save({ 'epoch': 10, 'arch': CNN, 'state_dict': model.state_dict(), 'optimizer' : optimizer.state_dict(), },'checkpoint.pth.tar')其中
'arch': CNN把模型类对象一起 pickle 进了 checkpoint。这样保存出来的文件只能在“CNN这个类可被导入”的进程里加载;换一个进程/脚本去torch.load就会失败。复现步骤
train.py(实测 10 epoch,loss 0.0222,正常生成checkpoint.pth.tar,125,487 字节);import torch ck = torch.load('/root/t5/checkpoint.pth.tar', map_location='cpu', weights_only=False)(因为保存时
CNN属于__main__,新进程的__main__里没有这个类。)期望结果
文档示例保存的 checkpoint 可以被独立进程正常加载,用户拿到权重文件就能直接用。
建议
torch.save({ 'epoch': 10, 'state_dict': model.state_dict(), 'optimizer': optimizer.state_dict(), }, 'checkpoint.pth.tar')CNN放到可导入的模块里(例如model.py),或在文档中明确说明“加载时必须先
from <模块> import CNN,否则会报AttributeError”。(本反馈来自 TorchNPU 26.1.0 众测,材料见 pytorch-ecosystem 仓
01_tasks/2026/torch_npu_public_beta/fpwdh/)