Python训练bert-base-multilingual-uncased时OSError无法加载config问题求助
问题修复方案
- 首先修正路径问题:你当前配置的
BERT_PATH使用的是相对路径,相对路径的寻址基准是你执行代码时的当前工作目录,而非代码文件存放的目录,这是最常见的报错原因。优先改成绝对路径即可,示例如下:
# 假设你的workspace目录在系统根目录下,路径开头加斜杠即可 BERT_PATH = "/workspace/data/jigsaw-multilingual/input/bert-base-multilingual-uncased"
- 验证路径有效性:在代码运行的环境终端中执行以下命令,确认路径下确实存在目标文件:
ls /workspace/data/jigsaw-multilingual/input/bert-base-multilingual-uncased # 正常输出应该包含 config.json、pytorch_model.bin、vocab.txt三个文件
- 排查文件权限问题:如果路径正确但仍加载失败,检查config.json的读权限,给文件加读权限即可:
chmod +r /workspace/data/jigsaw-multilingual/input/bert-base-multilingual-uncased/config.json
- 手动指定config加载:如果上述步骤都无效,可以手动加载配置文件传入模型加载接口,避免自动寻址失败:
# 模型类修改示例 class BERTBaseUncased(nn.Module): def __init__(self): super(BERTBaseUncased, self).__init__() # 手动加载本地config文件 bert_config = transformers.BertConfig.from_json_file(f"{config.BERT_PATH}/config.json") self.bert = transformers.BertModel.from_pretrained(config.BERT_PATH, config=bert_config) self.bert_drop = nn.Dropout(0.3) self.out = nn.Linear(768 * 2, 1) # 余下forward逻辑保持不变即可
额外优化提示:你当前的分词器是默认从远端拉取的,如果是离线运行环境,也可以把分词器的加载源改成本地BERT路径:TOKENIZER = BertTokenizer.from_pretrained(config.BERT_PATH, do_lower_case=True)
内容的提问来源于stack exchange,提问作者Ishan Dutta
相关产品推荐
相关产品推荐

