使用torch.load加载PyTorch模型时遭遇Pickling/安全错误的求助
使用torch.load加载PyTorch模型时遭遇Pickling/安全错误的求助
各位大佬好!我最近在跑一个签名检测、清洗和验证的端到端项目,尝试加载项目用到的一个PyTorch模型时,碰到了Pickling相关的安全错误,折腾好一阵都没解决,来这儿求助大家!
具体情况是:我按照项目指引下载了对应的模型文件,当我用torch.load()函数加载这个文件时,直接触发了安全相关的报错,提示加载pickle数据存在风险,或者干脆加载失败。我试过直接用默认参数加载,也尝试过指定map_location适配本地设备,但都没解决问题。
我整理了几个自己试过的方向,但还是没头绪,也想问问大家有没有其他思路:
- 首先怀疑过模型文件是不是下载损坏了,重新下载了一次,但还是报错;
- 后来查资料知道PyTorch新版本默认开启了安全加载,我试过用
torch.load(model_path, weights_only=True)(我用的是PyTorch 2.0+版本),但还是不行;也考虑过用allow_pickle=True,但又担心安全风险,而且不确定是不是这个原因; - 我也核对过原项目的PyTorch版本和本地的,虽然有点小差异,但都是2.x系列,应该不至于完全不兼容吧?
- 另外,会不会是原项目有自定义的模型结构,我加载前没导入对应的类?但我已经把项目的代码都拉下来了,相关文件也导入了,还是没效果。
有没有大佬遇到过类似的问题,或者能给我一些其他的排查建议?麻烦指点一下,万分感谢!
备注:内容来源于stack exchange,提问作者rikyeah




