近期做實驗頻繁用到BERT,所以想着下載下來使用,結果各種問題,網上一搜也是簡單一句:xxx.from_pretrained("改為自己的路徑")
我只想說,大坑!!!
廢話不多說:
1.下載模型文件:
不管你是從hugging-face還是哪里下載來的模型(pytorch版)文件夾,應該包含以下三個文件:
- config.json
- vocab.txt
- pytorch_model.bin
具體都是什么內容,不做介紹,你也不需要知道
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,網上很多教程對小白很不友好,記錄一下自己的踩坑,希望能幫到你,如果覺得我寫的有問題的或者太簡單的,可以去看看其他人的