离线环境下transformers库加载本地BERT模型的相关问题咨询
离线使用BERT-base-uncased模型操作指南
1. 下载文件及存放要求
- 不需要下载对应模型仓库内的全部文件,只需要下载PyTorch版本运行必需的核心文件即可:词汇表文件
vocab.txt、分词器配置tokenizer_config.json、模型配置config.json、PyTorch格式的权重文件(如果是分片存储的权重,需要下载所有分片bin文件和对应的权重索引json文件) - 下载的所有文件统一存到同一个本地文件夹即可,文件夹名称可以自定义,只要后续代码中引用的路径和实际存放路径一致即可。
2. 分词器代码修改
将原代码中from_pretrained方法的入参从模型名称替换为你本地存放模型文件的文件夹路径即可,修改后示例:
# 加载预训练模型分词器(词表) # 引号内替换为你本地的文件夹实际路径,支持绝对路径或相对路径 tokenizer = BertTokenizer.from_pretrained('./bert-base-uncased-local') # 用BERT分词器对输入句子做分词 tokenized_text = tokenizer.tokenize(marked_text)
其余逻辑无需调整,路径配置正确即可正常加载分词器。
3. 模型加载代码修改
和分词器修改逻辑一致,将from_pretrained方法的入参替换为本地文件夹路径即可,修改后示例:
# 加载预训练模型(权重) model = BertModel.from_pretrained('./bert-base-uncased-local', output_hidden_states = True, # 配置模型是否返回所有隐层状态 )
权重加载错误解决方法
OSError: unable to load weights from pytorch checkpoint file for bert-base-uncased2/ at bert-base-uncased/pytorch_model.bin If you tried to load a pytroch model from a TF 2 checkpoint, please set from_tf=True
这个报错是下载的权重文件名和transformers库预期的标准名称不匹配导致的,按以下步骤处理即可:
- 首先将你下载的4个大体积权重文件重命名为模型仓库页面显示的标准名称:如果是PyTorch分片权重,需对应命名为
pytorch_model-00001-of-00004.bin、pytorch_model-00002-of-00004.bin这类格式,同时要确保对应的pytorch_model.bin.index.json索引文件也存放在同一个文件夹内 - 不需要额外下载其他文件,只要保证同个文件夹下包含
vocab.txt、tokenizer_config.json、config.json、所有分片权重bin文件、权重索引json文件这几类核心文件即可正常加载。
内容的提问来源于stack exchange,提问作者user2543622
相关产品推荐
相关产品推荐

