Bug小能手系列(python)_7: BertTokenizer报错 Connection reset by peer

ConnectionResetError: [Errno 104] Connection reset by peer

  • 0. 错误介绍
  • 1. 解决思路
    • 1.1 添加代码 force_download=True
    • 1.2 删除缓存
    • 1.3 科学上网
    • 1.4 offline下载
  • 2. 解决方法
    • 2.1 清除缓存
    • 2.2 offline下载模型(强烈建议)
  • 3. 总结

0. 错误介绍

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

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

报错:
Bug小能手系列(python)_7: BertTokenizer报错 Connection reset by peer_第1张图片

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 删除缓存

删除缓存即删除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/,可以看到如下界面。
    Bug小能手系列(python)_7: BertTokenizer报错 Connection reset by peer_第2张图片

  2. 搜索需要下载的模型
    这里需要下载的模型为:bert-base-uncased,得到搜索结果如下
    Bug小能手系列(python)_7: BertTokenizer报错 Connection reset by peer_第3张图片

  3. 下载文件
    可以直接下载文件,也可以通过git的方法下载。(linux 一般均使用 git clone下载)
    直接下载文件需要点击 Files and versions 按钮,然后下载文件即可。
    Bug小能手系列(python)_7: BertTokenizer报错 Connection reset by peer_第4张图片
    git方式下载需要点击Train 左边的三个小点,然后选择Clone repository,最后使用git命令,别的两个命令不用管。界面如下:
    Bug小能手系列(python)_7: BertTokenizer报错 Connection reset by peer_第5张图片
    调用的git命令如下:

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

3. 总结

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

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

你可能感兴趣的:(Bug小能手,bug,python,开发语言)