主要参考文章:如何加载本地下载下来的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等项目中特别常见:
- config.json: 用于存储模型或项目的配置信息,一般是JSON格式,内容包括模型架构、训练设置、数据处理参数等相关选项。
- vocab.txt: 主要在自然语言处理项目中存储词汇表信息,每行一个词汇,为模型处理文本时提供依据。
- 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,网上很多教程对小白很不友好,转载记录一下本人按照网上帖子的成功实践的经验,希望能帮到你