本地加载bert-base-cased时BertTokenizer报OSError但BertModel正常
问题根因
你遇到的报错本质是本地模型文件夹缺少BertTokenizer必需的配套文件,和路径拼写错误没有关系。
BertModel的加载校验逻辑只要求目录下存在config.json和pytorch_model.bin两个文件,所以能正常跑通;但BertTokenizer的加载逻辑是完全独立的,它根本不读取模型权重文件,只校验自身专属的词表、分词配置文件,你当前目录里没有这类文件,自然会触发找不到可加载内容的OSError。
解决操作步骤
- 首先明确bert-base-cased对应的分词器必备文件:核心必需文件是和当前模型版本完全匹配的
vocab.txt(没有这个文件就根本无法初始化BertTokenizer),新版本transformers还会要求配套存在tokenizer_config.json。注意绝对不能混用其他BERT变体的词表,比如把bert-base-uncased的vocab.txt放到bert-base-cased的模型目录里,会导致分词结果和模型预训练的输入分布不匹配,后续推理精度会严重下降。 - 补全文件的两种实现方式:
- 快速补全法:保持网络连通的情况下,直接执行
BertTokenizer.from_pretrained('bert-base-cased'),transformers会自动下载分词器需要的全部文件到本地默认缓存目录,等加载成功后,把缓存里对应路径下的vocab.txt、tokenizer_config.json两个文件,复制到你本地的C:\Downloads\bert-pretrained-model文件夹根目录,和已有的config.json、pytorch_model.bin放在同一层级即可。 - 纯离线补全法:找到和你手里
pytorch_model.bin版本完全一致的分词器资源,手动把上述两个必备文件放到目标文件夹即可,全程不需要改动已有的模型权重和配置文件。
- 快速补全法:保持网络连通的情况下,直接执行
- 核对代码里的加载路径:你提供的报错栈里,实际运行的代码路径写的是
r'\Downloads\bert-pretrained-model',和你一开始提到的C:\Downloads\bert-pretrained-model路径不一致,要确保代码里写的路径,和你实际存放模型、分词文件的文件夹路径完全匹配,避免因为路径指向错误再次触发同类报错。
内容的提问来源于stack exchange,提问作者Nithin Reddy
相关产品推荐
相关产品推荐

