torch.hub.load加载fairseq模型时出现HTTP Error 404: Not Found报错
问题根本原因
fairseq官方代码仓库已从pytorch GitHub组织迁移至facebookresearch组织下,原有pytorch/fairseq对应的torch.hub资源路径全部失效,因此所有使用旧路径的加载请求都会返回404报错,该问题影响所有fairseq系列模型的torch.hub加载逻辑。
可行解决方案
- 方案1:替换仓库路径并指定稳定版本(优先推荐)
将原有代码中的pytorch/fairseq替换为facebookresearch/fairseq,同时指定稳定版本tag避免新版兼容问题,示例代码如下:
# 加载bart.base bart = torch.hub.load('facebookresearch/fairseq:v0.12.2', 'bart.base') # 加载transformer.wmt16.en-de transformer = torch.hub.load('facebookresearch/fairseq:v0.12.2', 'transformer.wmt16.en-de') # 加载camembert camembert = torch.hub.load('facebookresearch/fairseq:v0.12.2', 'camembert')
提示:如果运行时提示仓库校验冲突,可以先删除本地~/.cache/torch/hub目录下的旧fairseq缓存文件夹后重试
- 方案2:开启跳过校验适配本地缓存
如果之前已经成功下载过模型权重到本地,可添加配置跳过仓库校验,直接调用本地缓存资源:
import torch # 关闭仓库fork校验 torch.hub._validate_not_a_forked_repo = lambda a,b,c: True bart = torch.hub.load( 'facebookresearch/fairseq', 'bart.base', skip_validation=True )
- 方案3:本地手动加载预训练权重
如果上述方案都不生效,可自行下载对应模型的预训练权重压缩包到本地,通过fairseq原生接口直接加载:
from fairseq.models.bart import BARTModel bart = BARTModel.from_pretrained( checkpoint_dir='本地权重文件夹路径', checkpoint_file='model.pt', data_name_or_path='本地数据配置路径' )
内容的提问来源于stack exchange,提问作者Anwarvic
相关产品推荐
相关产品推荐

