当前位置:   article > 正文

Bug小能手系列(python)_7: BertTokenizer报错 Connection reset by peer_can't load tokenizer for 'bert-base-uncased'. if y

can't load tokenizer for 'bert-base-uncased'. if you were trying to load it

0. 错误介绍

当使用transformers库的BertTokenizerBertModelfrom_pretrained()函数时出错。(注:linux跟window均可能存在该问题)
代码如下:

from transformers import BertModel, BertTokenizer
model = BertModel.from_pretrained('bert-base-uncased')
  • 1
  • 2

报错:
在这里插入图片描述

1. 解决思路

对于该问题网上有很多中解释,接下来分别进行实验看是否有效。
注意:当前所用 transformers==4.15.0

1.1 添加代码 force_download=True

from_pretrained()函数中添加force_download=True,从而可以下载内容。

from transformers import BertModel, BertTokenizer
model = BertModel.from_pretrained('bert-base-uncased',force_download=True)
  • 1
  • 2

结果:依旧报错

1.2 删除缓存

删除缓存即删除cookie,对于电脑不是很熟悉的可能不知道如何操作,即操作起来较为麻烦。大家可自行搜索。
其中,对于windows电脑来说,只要重启就行。

结果:windows下成功可以下载模型,但是linux下不起作用(可能跟我删除缓存的方式不对有关)。

1.3 科学上网

有的文章中说是网络问题导致,需要科学上网,有的说不能科学上网。这是一个矛盾!!

结果:科学上网并不能解决问题。

1.4 offline下载

通过offline下载的方式,然后模型无需另外下载。

结果:成功下载,加载模型。

2. 解决方法

上述列举了一系列网上提到的解决方法,这里根据自己的亲身经验给大家进行总结。其中,主要解决方法分为清除缓存线下下载两种。(注意:下载的时候不要科学上网

2.1 清除缓存

一般来说,对于这种预加载模型都是可以直接下载的。如果多次尝试下载不行,可能存在缓存过多的情况。此时,建议清除缓存再尝试
对于Windows来说,就是直接重启就行。(当然,有更好的方法也可以留言告知,后续会加入到文章中!!!)
对于Linux来说,我这边测试了删除缓存,但是仍然没有成功。(由于作者知识有限,因此仅猜测这里指的不是浏览器缓存cookie,而是指代码运行缓存cache。因为没有浏览器也可以运行该代码,产生缓存文件。)
所以不建议使用这种方法。

2.2 offline下载模型(强烈建议)

注意:这里说的offline下载模型是相对于代码直接运行的online方式,通过离线的防线先将模型下载下来,适用于所有情况,因此推荐!!!

具体思路为:通过直接下载模型,然后加载模型时加载本地文件夹内容即可。(直接下载包括:linuxgit clone命令下载以及window浏览器点击下载的方式,当然windows下如有git命令也可通过git clone下载。)
具体操作步骤如下:

  1. 登录 huggingface官网
    网址如下:https://huggingface.co/,可以看到如下界面。
    在这里插入图片描述

  2. 搜索需要下载的模型
    这里需要下载的模型为:bert-base-uncased,得到搜索结果如下
    在这里插入图片描述

  3. 下载文件
    可以直接下载文件,也可以通过git的方法下载。(linux 一般均使用 git clone下载)
    直接下载文件需要点击 Files and versions 按钮,然后下载文件即可。
    在这里插入图片描述
    git方式下载需要点击Train 左边的三个小点,然后选择Clone repository,最后使用git命令,别的两个命令不用管。界面如下:
    在这里插入图片描述
    调用的git命令如下:

git clone https://huggingface.co/bert-base-uncased
  • 1
  1. 最后,调用本地目录的命令
    调用本地目录的代码如下,其中bert-base-uncased为下载下来的模型存放目录:
tokenizer = BertTokenizer.from_pretrained('/bert-base-uncased')
  • 1

3. 总结

总的而言,预训练模型下载下来还是简单的。但是网上的相关教程不是很清晰,所以根据自己的经验来总结这篇文章,希望大家会喜欢。如果有什么疑问欢迎在评论区提出,对于共性问题可能会后续添加到文章介绍中。

如果觉得这篇文章对你有用,记得点赞、收藏并分享给你的小伙伴们哦

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/347536
推荐阅读
相关标签