[实验日志·已解决] 如何下载 + 加载本地的BERT预训练模型 (OSError: Can‘t load tokenizer for ‘bert-base-uncased‘.)

主要参考文章:如何加载本地下载下来的BERT模型,pytorch踩坑!! - ZhangHT97 - 博客园 (cnblogs.com)

报错分析:

执行

# 载入词表
tokenizer = BertTokenizer.from_pretrained("bert-base-uncased")
# 载入模型,一般还没到这一步,在上一步载入词表的时候就会报错
bert = BertModel.from_pretrained("bert-base-uncased")

一般遇到加载HuggingFace的bert预训练模型报错长这样,说明访问不了外网,服务器也不太方便启用代理VPN,咱可以使用下载到本地的bert模型

OSError: Can't load tokenizer for 'bert-base-uncased'. If you were trying to load it from 'https://huggingface.co/models', make sure you don't have a local directory with the same name. Otherwise, make sure 'bert-base-uncased' is the correct path to a directory containing all relevant files for a CLIPTokenizer tokenizer.

近期做实验频繁用到BERT,本地开VPN可以解决,但是远程服务器不方便开VPN,所以想着下载下来使用,结果各种问题,网上一搜也是简单一句:xxx.from_pretrained("改为自己的路径")
这是大坑!!!
废话不多说:

1.下载模型文件:

不管咱是从hugging-face还是哪里下载来的模型(pytorch版)文件夹,应该包含以下三个文件,比如本人亲测好用的魔塔社区bert模型库,就下这三个

  • config.json
  • vocab.txt
  • pytorch_model.bin

这些文件在深度学习、自然语言处理NLP等项目中特别常见:

  1. config.json: 用于存储模型或项目的配置信息,一般是JSON格式,内容包括模型架构、训练设置、数据处理参数等相关选项。
  2. vocab.txt: 主要在自然语言处理项目中存储词汇表信息,每行一个词汇,为模型处理文本时提供依据。
  3. pytorch_model.bin: 是PyTorch框架训练后得到的模型权重文件,以二进制格式保存。

2.更改文件名!!(坑点1)

很多下载的模型文件夹里面上述三个文件名字可能会有不同,一定要注意!以清华OpenCLaP上下载下来的民事BERT为例,其中包含了三个文件对应的名字为:

  • bert_config.json 看到没有!!这个前面多了个bert_,一定要改掉!bert_config.json
  • vocab.txt
  • pytorch_model.bin

三个文件一定要与第一步中的结构一样,名字也必须一样

3.将文件放入自己的文件夹

这里咱在自己的工程目录里新建一个文件夹:bert_localpath,将三个文件放入其中,最终结构如下:

bert_localpath

config.json
vocab.txt
pytorch_model.bin

4.加载(坑点2)

使用 .from_pretrained("xxxxx")方法加载,本地加载bert需要修改两个地方,一是tokenizer部分,二是model部分:
step1、导包: from transformers import BertModel,BertTokenizer
step2、载入词表: tokenizer = BertTokenizer.from_pretrained("./bert_localpath/") 这里要注意!!除了你自己建的文件夹名外,后面一定要加个/,才能保证该方法找到咱的vocab.txt
step3、载入模型: bert = BertModel.from_pretrained("./bert_localpath") 然后,这个地方又不需要加上/

5.使用

至此,咱就能够使用自己的本地bert了!!例如~outputs = bert(input_ids, token_type_ids, attention_mask)来获得token的编码输出output

over,网上很多教程对小白很不友好,转载记录一下本人按照网上帖子的成功实践的经验,希望能帮到你

这个错误提示通常出现在使用Hugging Face的Transformers库加载预训练模型时。具体来说,`OSError: can't load tokenizer for 'google/flan-t5-xxl'` 意味着程序无法加载名为 `google/flan-t5-xxl` 的模型tokenizer。以下是一些可能的原因和解决方法: 1. **模型下载**: 确保你已经下载了 `google/flan-t5-xxl` 模型tokenizer。你可以使用以下命令来下载: ```python from transformers import AutoTokenizer, AutoModelForSeq2SeqLM tokenizer = AutoTokenizer.from_pretrained("google/flan-t5-xxl") model = AutoModelForSeq2SeqLM.from_pretrained("google/flan-t5-xxl") ``` 2. **网络问题**: 如果你是在线下载模型,确保你的网络连接正常。如果网络不稳定,可以尝试使用代理或者在下载前手动下载模型。 3. **路径错误**: 如果你已经手动下载模型,确保在 `from_pretrained` 方法中指定了正确的路径。例如: ```python tokenizer = AutoTokenizer.from_pretrained("/path/to/tokenizer") model = AutoModelForSeq2SeqLM.from_pretrained("/path/to/model") ``` 4. **版本不兼容**: 确保你的Transformers库和其他依赖库是最新版本。你可以使用以下命令来更新: ```bash pip install --upgrade transformers ``` 5. **权限问题**: 确保你有权限读取模型tokenizer的目录。你可以尝试以管理员权限运行你的脚本,或者更改文件权限。 如果以上方法都无法解决问题,建议你查看完整的错误日志,或者在Hugging Face的GitHub仓库中提交issue,寻求社区的帮助。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值