最近训练多模态模型时需要用到BERT作为文本端的Encoder,按照huggingface官网说明,之前代码如下:

BERT_TYPE = 'emilyalsentzer/Bio_ClinicalBERT'
model = AutoModel.from_pretrained(BERT_TYPE, output_hidden_states=True)
tokenizer = AutoTokenizer.from_pretrained(BERT_TYPE,return_tensors="pt")

然后会自动联网下载需要的文件,昨天再用确报错:

ValueError: Connection error, and we cannot find the requested files in the cached path. Please try again or make sure your Internet connection is on.

确认了不是网络的问题,之前用过该模型,本地缓存应该有模型和配置文件,在~/.cache/huggingface/transformers下。但就是不行。参考了stackoverflow和github上的解决方法:

1.增加local_only参数(没用)

BERT_TYPE = 'emilyalsentzer/Bio_ClinicalBERT'
tokenizer = AutoTokenizer.from_pretrained(BERT_TYPE,return_tensors="pt",local_only=True))

2.强制下载,增加force_download=True(没用)

BERT_TYPE = 'emilyalsentzer/Bio_ClinicalBERT'
tokenizer = AutoTokenizer.from_pretrained(BERT_TYPE,return_tensors="pt",force_download=True)

3.于是自行尝试去官网下载模型和配置文件

emilyalsentzer/Bio_ClinicalBERT at main

 下载下来后,本地导入,问题依旧:

model = AutoModel.from_pretrained("I:/Bio_ClinicalBERT/", output_hidden_states=True)
tokenizer = AutoTokenizer.from_pretrained("I:/Bio_ClinicalBERT/vocab.txt",return_tensors="pt",local_only=True)

后来把下载的三个文件放在项目本地路径下面再去尝试,任然报同样的错误,后来无意中发现:

假设上面下载的三个文件放在项目目录的Bio_ClinicalBERT目录下:

坑是:加载模型那里不要"./",而加载词表那里要有"./"。

model = AutoModel.from_pretrained("Bio_ClinicalBERT", output_hidden_states=True)
tokenizer = AutoTokenizer.from_pretrained("./Bio_ClinicalBERT",return_tensors="pt")

具体我现在还没有细细去想,按理不应该,至少问题解决了,能顺利完成编码输出,原因以后再细看。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐